ウェブサイト検索

「Stress-ng」ツールを使用して Linux に高 CPU 負荷とストレス テストを課す方法


システム管理者は、Linux システムに高負荷がかかっているときに、その状態を調べて監視する必要があるかもしれません。これは、システム管理者やプログラマーにとって次のことを行うための良い方法となります。

  1. システム上のアクティビティを微調整します。
  2. オペレーティング システムのカーネル インターフェイスを監視します。
  3. CPU、メモリ、ディスク デバイス、その他多くの Linux ハードウェア コンポーネントをテストして、ストレス下でのパフォーマンスを観察します。
  4. システム上のさまざまな電力消費負荷を測定します。

このガイドでは、Linux システムでのストレス テストのための 2 つの重要なツールであるstressstress-ng について説明します。

1. ストレス – システムを CPU、メモリ、I/O、ディスク ストレスの構成可能な測定値にさらすように設計されたワークロード生成ツールです。

2. stress-ng – システムの次の機能をテストするストレス ワークロード生成ツールの更新バージョンです。

  1. CPU コンピューティング
  2. ドライブストレス
  3. I/O同期
  4. パイプI/O
  5. キャッシュのスラッシング
  6. VMストレス
  7. ソケットのストレス
  8. プロセスの作成と終了
  9. コンテキスト切り替えプロパティ

これらのツールはシステムを調べるのに適していますが、システム ユーザーだけが使用すべきではありません。

重要: これらのツールを root ユーザー権限で使用することを強くお勧めします。これらのツールを使用すると、Linux マシンに急速に負荷がかかる可能性があり、設計が不十分なハードウェアでの特定のシステム エラーを回避することができるからです。 。

Linux に「stress」ツールをインストールする方法

Debian とその派生製品 (UbuntuMint など) にストレス ツールをインストールするには、次のコマンドを実行します。

sudo apt-get install stress

RHEL/CentOS および Fedora Linux にストレスをインストールするには、EPEL リポジトリをオンにして、次の yum コマンドを入力して、同じ:

yum install stress

ストレスを使用するための一般的な構文は次のとおりです。

sudo stress option argument

いくつかのオプションはストレスで使用できます。

  1. sqrt() 関数で回転する N 個のワーカーを生成するには、次のように –cpu N オプションを使用します。
  2. sync() 関数で回転する N 個のワーカーを生成するには、次のように –io N オプションを使用します。
  3. malloc()/free() 関数で回転する N 個のワーカーを生成するには、–vm N オプションを使用します。
  4. VM ワーカーごとにメモリを割り当てるには、–vm-bytes N オプションを使用します。
  5. メモリ リソースを解放して再割り当てする代わりに、–vm-keep オプションを使用してメモリをリダーティにすることができます。
  6. –vm-hang N オプションを使用してメモリを解放する前に、スリープを N 秒に設定します。
  7. write()/unlink() 関数で回転する N 個のワーカーを生成するには、–hdd N オプションを使用します。
  8. –timeout N オプションを使用すると、N 秒後のタイムアウトを設定できます。
  9. 次のように –backoff N オプションを使用して、作業が開始される前に待機係数を N マイクロ秒に設定します。
  10. ストレスの実行時にさらに詳細な情報を表示するには、-v オプションを使用します。
  11. –help を使用して、ストレスの使用に関するヘルプを表示するか、マンページを表示します。

Linux システムでストレスを使用するにはどうすればよいですか?

1. コマンドを実行するたびにその効果を調べるには、まず uptime コマンドを実行し、負荷平均を書き留めます。

次に、stress コマンドを実行して、20 秒のタイムアウトで sqrt() 上で回転する 8 つのワーカーを生成します。ストレスを実行した後、 再度 uptime コマンドを実行し、負荷平均を比較します。


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
サンプル出力
tecmint@tecmint ~ $ uptime    
 17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 --timeout 20
stress: info: [17246] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: info: [17246] successful run completed in 21s
tecmint@tecmint ~ $ uptime
 17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

2. タイムアウトを 30 秒にして sqrt() で回転する 8 つのワーカーを生成し、操作に関する詳細情報を表示するには、次のコマンドを実行します。

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
tecmint@tecmint ~ $ uptime
サンプル出力
tecmint@tecmint ~ $ uptime
 17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
stress: info: [17353] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [17353] using backoff sleep of 24000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 8 [17354] forked
stress: dbug: [17353] using backoff sleep of 21000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 7 [17355] forked
stress: dbug: [17353] using backoff sleep of 18000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 6 [17356] forked
stress: dbug: [17353] using backoff sleep of 15000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 5 [17357] forked
stress: dbug: [17353] using backoff sleep of 12000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 4 [17358] forked
stress: dbug: [17353] using backoff sleep of 9000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 3 [17359] forked
stress: dbug: [17353] using backoff sleep of 6000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 2 [17360] forked
stress: dbug: [17353] using backoff sleep of 3000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 1 [17361] forked
stress: dbug: [17353] tecmint@tecmint ~ $ uptime
 17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

3. malloc() 関数と free() 関数の 1 つのワーカーを 60 秒のタイムアウトでスワンするには、次のコマンドを実行します。

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
tecmint@tecmint ~ $ uptime
サンプル出力
tecmint@tecmint ~ $ uptime
 17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
stress: info: [17420] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: info: [17420] successful run completed in 60s
tecmint@tecmint ~ $ uptime
 17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

4. sqrt() で回転する 4 つのワーカー、sync() で回転する 2 つのワーカー、malloc()/free() で回転する 2 つのワーカーを 20 秒の時間でスワンし、メモリを割り当てるにはVM ワーカーあたり 256MB、以下のコマンドを実行します。

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
tecmint@tecmint ~ $ uptime
サンプル出力
tecmint@tecmint ~ $ uptime
 17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s
stress: info: [17501] dispatching hogs: 4 cpu, 3 io, 2 vm, 0 hdd
stress: info: [17501] successful run completed in 20s
tecmint@tecmint ~ $ uptime
 17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]