RHEL上で簡単に負荷テストをしたい場合にstressコマンドが有効な方法です。
システムリソースに意図的に高負荷を与えることで、ハードウェアとソフトウェアの耐久性をテストします。
今回は、stressコマンド利用手順と注意事項を解説します。
■書式
stress [オプション]
stressコマンドの主要なオプションは以下の通りです:
- CPU負荷
-c, --cpu:指定された数のプロセスを使ってCPUに負荷をかけ、計算能力の限界をテストします。 - メモリ負荷
-m, --vm:指定された数のプロセスで大量のメモリを確保し、メモリ使用量の増加がシステムに与える影響を評価します。
--vm-bytes:--vm
オプションと一緒に使用し、各仮想メモリプロセスが消費するメモリの量を指定します。
--vm-hang:「0」だとメモリ解放を行いません。「0」以外は数値の秒数ごにメモリを解放してまたメモリの獲得を行います。メモリが確保された後にどれだけの時間システムがその状態を維持できるかメモリ管理能力をテストします。 - I/O負荷
-d, --hdd:実際にディスクへの書き込みを繰り返し行い、ディスクI/O性能をストレステストします。
-i, --io:I/O待機プロセスを生成し、システムが多くの待機プロセスをどのように扱うかをテストします。 - 実行前確認
-n, --dry-run:実際に負荷をかけることなく、コマンドがどのように実行されるかをシミュレーションします。設定やパラメーターに誤りがないかを確認する際に便利です。 - オプション
--timeout:ストレステストの実行時間を設定し、指定時間が経過すると自動的にテストを終了します。
-v, --verbose:テストの進行状況や詳細情報を出力し、より詳細な監視や分析が可能になります。
パッケージインストール方法
stressコマンドのパッケージインストールにおける他の稼働サービスへの影響はありません。
stressコマンドが利用できなった場合は、安心してパッケージをインストールしてください。
■RHELでのインストール方法
dnf install stress
stressコマンド実行から終了までの4ステップと注意事項
本番稼働しているサーバ上でstressコマンドを実行し負荷をかけるとサーバ上で稼働しているサービスに影響を与える場合があります。
安全にstressコマンドを実行したい場合、以下の4ステップを踏むことで利用できます。
- --dry-runオプションによる実行前テストの実施
リソースの負荷をかけずに終了します。誤ったオプション指定、負荷をかけるリソースの確認を事前に行い、安全にコマンドを実行するために使用します。
例
# stress --cpu 4 --dry-run - --timeoutオプションによるstressコマンド自動終了の実施
リソースの負荷をかけます。負荷をかける為、暴走する場合があるので負荷テスト期間を指定し自動で終了できるようにします。
※リソースの負荷をかける期間を決めて実行する為にも利用できます。
例
# stress --cpu 4 --timeout 10
※10秒後コマンド実行終了 - 負荷テストしたいリソースへのstressコマンドの正式実行
本番実行です。1.2.のステップを踏んでから負荷テストを実行することで安全に負荷テストを実行できます。
例
<標準実行の場合>
# stress --cpu 4
<バックグランドの場合>
# stress --cpu 4 &
※「&」をつけるとバックグランドで実行します。 - stressコマンド終了(標準実行とバックグラウンド実行の違い)
<標準実行の場合>
コマンドを実行するとプロンプトが返ってこないので、「Ctrl+C」で終了します。
<バックグランドの場合>
# kill [stressコマンドのプロセスID]
バックグランド実行はプロンプトが返ってきて他の操作ができるようになります。
実行時に表示されたプロセスIDだけをkillしてもstressコマンドは完全に終了しません。
「ps -ef |grep stress」コマンドを実行して稼働しているもう一つのstressコマンドのプロセスを終了してください。
主要5つのサンプルコマンド
1.4つのCPUプロセスを生成してCPU負荷をかける
stress --cpu 2
■実行結果
3つあるCPUのうち2つのCPUに負荷をかけています。
2.メモリ負荷テストを行う(各プロセスが1024MBのメモリを使用)
stress --vm 2 --vm-bytes 1024M
■実行結果
約1024Mのメモリを消費させています。
3.I/O負荷テストを行う(4つのI/Oプロセス)
stress --io 4
■実行結果
I/O待機プロセスを4つ生成しCPUのシステムモードへの負荷とシステム全体への割り込み負荷をかけています。
4.ディスク書き込み負荷をかける(3つのプロセス)
stress --hdd 3
■実行結果
3つのプロセスを稼働させて書込み処理(I/O)を実行し負荷をかけています。
5.複数の負荷を同時にかける(CPU、メモリ、I/O)
stress --cpu 2 --hdd 3 --vm 2 --vm-bytes 1024M
■実行結果
CPU負荷、メモリ消費、書込み処理(I/O)を同時に行って、それぞれのリソースに負荷をかけています。
コメント