この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
ども。あいしんくいっと(@ithinkitnet)です。
仕事柄、検証などでLinuxにCPU負荷をかけたいシチュエーションに遭遇することがあります。
そんな時はどうすれば良いのでしょうか?
今回は「Linuxで手軽にCPU負荷をかける方法」について調べてみたいと思います。
CPU負荷を手軽にかける方法
一般的に知られている「stress」といったツールを使って・・・、といった方法ではなく、Linux標準コマンドで出来る方法が良いんですよね。
本番環境とかだと気軽ツールとかインストール出来ないので。
なので、なるべく環境には手を加えない方法で調べてみました。
yesコマンドを使う
yesコマンドはOS標準で入っているビルトインコマンドです。
このyesコマンドを連打することによってCPU負荷をかける方法になります。
# yes > /dev/null
リダイレクトの向きに気を付けてください。
処理を停止させる場合は「Ctrl + C」になります。
1個だとたいした負荷はかからないので、ターミナルを複数立ち上げでyesコマンド連打もアリ。
# yes > /dev/null &
# yes > /dev/null &
# yes > /dev/null &
# yes > /dev/null &
# yes > /dev/null &
停止させる場合は「jobs」で確認し、
# jobs
[1] 実行中 yes > /dev/null &
[2]- 実行中 yes > /dev/null &
[3]+ 実行中 yes > /dev/null &
以下のような感じで停止させる
# kill %1 %2 %3
[root@cent6-non-lvm ~]# jobs
[1] 終了しました yes > /dev/null
[2]- 終了しました yes > /dev/null
[3]+ 終了しました yes > /dev/null
参考 【Linux】stressコマンドを使わずに手軽にCPU負荷をかける方法
opensslコマンドを使う
opensslコマンドでCPUのクロック数に合わせてCPU負荷をかけます。
# openssl speed -multi `grep processor /proc/cpuinfo|wc -l`
# openssl speed -multi `grep processor /proc/cpuinfo|wc -l`
Forked child 0
+DT:md2:3:16
+R:454138:md2:3.000000
+DT:md2:3:64
opensslコマンドでの処理を停止させる場合は「Ctrl + C」
無限にgzipさせる
gzipを使ってCPU負荷をかける方法です。
# gzip -9 < /dev/urandom > /dev/null
gzip処理1個だとたいした負荷はかからないので「yes」コマンドと同様に複数ターミナルで実行させるのもアリ。
# gzip -9 > /dev/urandom > /dev/null &
[1] 5075
# gzip -9 > /dev/urandom > /dev/null &
[2] 5076
# gzip -9 > /dev/urandom> /dev/null &
[3] 5077
停止させる場合は「yes」と同様。
# kill %1 %2 %3
[1] 終了しました gzip -9 > /dev/urandom > /dev/null
[2]- 終了しました gzip -9 > /dev/urandom > /dev/null
[3]+ 終了しました gzip -9 > /dev/urandom > /dev/null
上に挙げた以外にも、CPU負荷をかける方法はたくさんあると思いますが、ある程度考えてやらないと環境そのものを壊してしまう可能性も考えられるので、その点は注意してくださいねー。
ithinkit
以上、あいしんくいっとでした。
バックグラウンドジョブを全て kill するのは
$ kill $(jobs -p)
とするといいかも。
pitman さん
コメントありがとうございます。
確かに使えますね。情報ありがとうございます!
[root@dos-vps-srv ~]# jobs -p
19514
[root@dos-vps-srv ~]# kill $(jobs -p)
[root@dos-vps-srv ~]# jobs
[1]+ Terminated while true; do
ls --color=auto; sleep 15;
done
[root@dos-vps-srv ~]# jobs
[root@dos-vps-srv ~]#