stressコマンド
LinuxサーバでCPUやメモリ等の負荷掛けを実施したい際にコマンドを発行するだけで、特定のワークロードをかけることができるツール。
性能検証等で重宝しそう。yumでrpmとしてインストールしてもよいが、バイナリとして下記からダウンロードしたtarballをサーバに持ってきてコンパイルするという手もあり。
- ダウンロード先:https://src.fedoraproject.org/repo/pkgs/stress/stress-1.0.4.tar.gz/a607afa695a511765b40993a64c6e2f4/
下記を見るだけで大体何ができるのかはイメージが付きそう。
HELP
# stress
`stress' imposes certain types of compute stress on your system
Usage: stress [OPTION [ARG]] ...
-?, --help show this help statement
--version show version statement
-v, --verbose be verbose
-q, --quiet be quiet
-n, --dry-run show what would have been done
-t, --timeout N timeout after N seconds
--backoff N wait factor of N microseconds before work starts
-c, --cpu N spawn N workers spinning on sqrt()
-i, --io N spawn N workers spinning on sync()
-m, --vm N spawn N workers spinning on malloc()/free()
--vm-bytes B malloc B bytes per vm worker (default is 256MB)
--vm-stride B touch a byte every B bytes (default is 4096)
--vm-hang N sleep N secs before free (default none, 0 is inf)
--vm-keep redirty memory instead of freeing and reallocating
-d, --hdd N spawn N workers spinning on write()/unlink()
--hdd-bytes B write B bytes per hdd worker (default is 1GB)
Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).
CPUに負荷をかけたい場合は下記のように実行する。ワーカープロセスの数=負荷をかけるコア数を指定すること。
CPU
# 3コアフルに負荷をかけるコマンド
stress --cpu 3
メモリに負荷をかけたい場合は下記のように実行する。
ワーカープロセスの数あたり、どれだけメモリを占有(malloc)するかを基本的には指定する。
デフォルトだとメモリ獲得&解放を繰り返すので、獲得した状態を暫く保ちたい場合は--vm-hangで秒数を指定する、または--vm-keepを指定。
メモリ
# 1ワーカープロセスがメモリ2Gの獲得/解放を繰り返す。
stress --vm 1 --vm-bytes 2G
# 1ワーカープロセスがメモリ2Gの獲得して300秒待機、その後メモリを解放する。この動きを繰り返す。
stress --vm 1 --vm-bytes 2G --vm-hang 300
# 1ワーカープロセスがメモリ2Gの獲得して、その後ずっと待機する。
stress --vm 1 --vm-bytes 2G --vm-keep
各オプションは組合せで利用することも可能。またタイムアウトを指定したい場合は--timeoutオプションで負荷掛けの秒数を指定するとOK。