CPU使用率を上げるための負荷ツール
Linuxで故意にCPU使用率をあげて、あるプログラムが起動するかどうかを見たい。
ぶっちゃけ SNMP trap が確実に出るかどうかを見たいんだけど、Linux 上でCPU使用率を上げるツールって見当たらない。
windows なら、ベンチマークソフトとか円周率計算ソフトとか、いろいろ考えられるんだけどね。
ん〜、ちゃちゃっと作る?
テストでコマンド実施。
圧縮というのは割とCPUリソースを食う。
ということで適当に巨大なデータを作って圧縮する。
ls -lR / > /tmp/work.txt
tar cvfz /tmp/work.tar.gz /tmp/work.txt
VMWare 上では、これで問題なく(?)CPU使用率が20%近く上昇。
実際にサーバで実行してみた。
サーバの性能が良すぎて、サクっと終わってしまった…orz
じゃぁ、手軽にもっと巨大なファイルを作る方法は?
先人の知恵とは凄いもので dd コマンドがあった。
dd if=/dev/zero of=/tmp/work.txt count=1000000
ちょっと時間はかかったけど、これで無駄に 512MB のファイルを作れた。
圧縮コマンドを実行すると、CPU使用率は高すぎず、低すぎず、いい感じ♪
一応、ファイルは削除しておく。
そのままテキストファイルに記述して、シバン(#!/bin/sh のこと)を記述して、実行権限を与えれば、簡単なツールが完成。
#!/bin/sh tmpf=/tmp/work.txt dd if=/dev/zero of=${tmpf} count=1000000 tar cvfz /tmp/work.tar.gz ${tmpf} rm -f ${tmpf}
凝りたい人は、これをベースに機能を付け加えれば OK かな。
引数でファイルサイズを指定するとか、dd コマンドのオプションを加えるとか。
このサイズでもサクッと終わるような性能なら、count のサイズを増やしてみるのもいい。
ん〜、途中でこんなのも考えたけど、やっぱり禁じ手だよなぁ…
#!/bin/sh while true; do true; done
…いわゆる無限ループ。
VMWare上だけながら、CPU使用率があっという間に100%…(^_^;
まあ、単発なら Ctrl + C で止められるから、そう気にしなくてもいいんだけど。