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 で止められるから、そう気にしなくてもいいんだけど。