【RHEL】stress-ngコマンドでCPU負荷やメモリ負荷テストを行う方法

RHEL

今回は、Red Hat Enterprise Linux (RHEL)でのストレステスト、特にCPU負荷とメモリ使用率のテストに焦点を当てて、stress-ngツールの基本的な使い方とシナリオテストについてご紹介します。

stress-ngとは?

stress-ngは、システムに様々な負荷をかけることができる強力なストレステストツールです。CPUやメモリ、ディスクI/O、ネットワークなど、システムのさまざまな側面にストレスをかけることができます。今回は、CPUとメモリに焦点を当てて、その使い方を説明していきます。

stress-ngのインストール

まず、stress-ngをインストールしましょう。RHELでは、以下のコマンドでインストールできます:

sudo yum install stress-ng

インストールが完了したら、バージョンを確認してみましょう:

stress-ng --version

基本的なコマンドの使い方

stress-ngの基本的な構文は以下の通りです:

stress-ng [オプション] [負荷タイプ] [負荷量]

例えば、CPUに負荷をかける最も基本的なコマンドは次のようになります:

stress-ng --cpu 1 --timeout 60s

このコマンドは1つのCPUコアに60秒間負荷をかけます。

メモリに負荷をかける基本的なコマンドは以下の通りです:

stress-ng --vm 1 --vm-bytes 1G --timeout 60s

このコマンドは1つのワーカーを使って1GBのメモリに60秒間負荷をかけます。

CPUストレステストのシナリオ

実際の運用環境に近いCPUストレステストを行うには、以下のようなシナリオが考えられます:

1. 全CPUコアに負荷をかける:

stress-ng --cpu 0 --timeout 5m

このコマンドは、利用可能なすべてのCPUコアに5分間負荷をかけます。`–cpu 0`は「利用可能なすべてのCPUコア」を意味します。

2. CPU使用率を50%に制限する:

stress-ng --cpu 0 --cpu-load 50 --timeout 5m

このコマンドは、CPU使用率を約50%に保ちながら5分間負荷をかけ続けます。

3. 特定のCPU演算に負荷をかける:

stress-ng --cpu 4 --cpu-method fft --timeout 5m

このコマンドは、4つのCPUコアに対して高速フーリエ変換(FFT)の計算を5分間行います。

メモリストレステストのシナリオ

メモリのストレステストには、以下のようなシナリオが考えられます:

1. 利用可能なメモリの80%を使用する:

stress-ng --vm 4 --vm-bytes 80% --timeout 5m

このコマンドは、4つのワーカーを使って利用可能なメモリの80%を5分間占有します。

2. メモリの割り当てと解放を繰り返す:

stress-ng --vm 2 --vm-bytes 1G --vm-keep --timeout 5m

このコマンドは、2つのワーカーが1GBのメモリを割り当てて解放する操作を5分間繰り返します。

3. メモリリークをシミュレートする:

stress-ng --vm 1 --vm-bytes 256M --vm-hang 0 --timeout 5m

このコマンドは、1つのワーカーが256MBのメモリを割り当てたままにし、メモリリークをシミュレートします。

結果の解釈と注意点

stress-ngを実行すると、テスト終了時に詳細な統計情報が表示されます。これには、実行時間、ボゴオペレーション(stress-ngの負荷単位)などが含まれます。

また、stress-ng実行中は、`top`や`htop`コマンドを使用してシステムの状態をモニタリングすることをおすすめします。これにより、CPU使用率やメモリ消費量のリアルタイムの変化を観察できます。

注意点として、過度なストレステストはシステムに悪影響を与える可能性があります。特に本番環境でテストを行う場合は、段階的に負荷を上げていき、システムの反応を慎重に観察することが重要です。

まとめ

stress-ngは非常に強力で柔軟性の高いストレステストツールです。今回紹介した基本的な使い方とシナリオをベースに、自身のシステムに適したテストケースを作成してみてください。定期的なストレステストの実施は、システムの安定性と性能を維持する上で非常に重要です。

非機能テストは、システムの信頼性と性能を確保するために欠かせない作業です。stress-ngの使い方に慣れてきたら、より複雑なシナリオや、CPUとメモリ以外のリソース(ディスクI/Oやネットワークなど)のテストにも挑戦してみてください。

【注意】

このブログは技術に関する知識や経験を共有することを目的としており、情報の正確性に努めていますが、その内容の正確性や完全性を保証するものではありません。ブログの情報を利用する場合は、自己の責任において行動してください。ブログの内容に基づいて行った行動や決定によって生じた損害や被害について、筆者は一切の責任を負いません。

 

記事の内容の一部は、生成AIで作成しています。

RHEL
この記事の作者
StarTeller

30歳で異業種からITエンジニアへ転身し、10年以上にわたりインフラエンジニアとして様々な現場でシステム構築・運用に携わってきました。

得意分野はLinux/Windowsのサーバー構築・運用で、ネットワークやAWSなども実務で活用しています。

このブログでは、これまでの業務で培った経験を基に、日々の業務で遭遇した問題の解決方法や、システム構築の具体的な手順を解説。現場のエンジニアが実際に「困ったとき」に参照できる情報を意識して投稿していこうと思っています。

StarTellerをフォローする
StarTellerをフォローする

コメント

タイトルとURLをコピーしました