WindowsやLinuxで負荷テストを実施する際、ツールを使う情報をよく見かけますが、お客様の環境で負荷テストを行いたい場合、ツールをインストールできない場面がよくあります。
しかし、ツールがなくてもコマンドを使って負荷テストを行うことは可能です。
そこで今回は、負荷テスト用のツールを追加せず、LinuxやWindowsのコマンドだけを使って、CPUやメモリ等のリソースに負荷をかける方法をご紹介します。
負荷テストの必要性と目的
負荷テストとは、プログラムやアプリケーションをさまざまな条件や作業負荷にさらし、その反応を調べることです。
負荷テストは、アプリケーションの能力を評価するのに役立つので、ソフトウェアテストの不可欠な要素です。
通常負荷とピーク負荷の下でのアプリケーションのパフォーマンスと信頼性を検証するのに役立ちます。
負荷テストにコマンドを使用することは、システムの全体的なパフォーマンスを確認する効果的な方法です。
直接的で正確な出力解析やレポートなど、多くの利点があります。
さらに、コマンドはプログラミングの知識を必要としません。
また、適切な指標と設定を定義するのはユーザー次第です。
著者の場合は、Zabbixでトリガーの動作確認をするために負荷テストを行うことが多いです。
コマンドを使用した負荷テストのメリット
コマンドを使用して負荷テストを実行すると、多くの利点があります。
それは、テストプロセスの効率を高めることです。
コマンドを使用することで、テストのためのワークロードと条件、および信頼性の高い出力を生成するために必要なリソースを迅速かつ正確に定義することができます。
また、テスト環境を完全に制御することも可能です。
メトリクスと設定を定義することで、システムのパフォーマンスをより適切に評価し、改善の可能性を特定することができます。
さらに、最小限の労力で何度でも再実行できるため、正確で一貫性のあるアウトプットを実現します。
さらに、テストの総合的な結果にアクセスする機能を持つことで、システム全体のパフォーマンスをさらに向上させるために使用できるさまざまな情報を提供します。
最後に、コマンドの使用は、特別なツールやソフトウェアを必要としないため、費用対効果に優れています。
WindowsとLinuxで使用できるコマンドの違い
負荷テストの精度を高めるためには、WindowsとLinuxで使用できるコマンドの違いを知っておくことが重要です。
例えば、Windowsシステムにはnetstat
、tasklist
、perfmon
などのコマンドがありますが、Linuxシステムにはwget
、nmcli
、nmon
などのコマンドがあります。
コマンドを使った負荷テスト
コマンドを使用して負荷テストをする場合、使用するシステムで利用可能なコマンドに精通していることが重要である。
netstat
はネットワーク接続や統計情報を表示し、tasklist
はアクティブなタスクのリストを表示する。
一方、Perfmon
は、システムのパフォーマンスを監視するために使用できる内蔵の監視ツールです。
wget
はネットワーク上でファイルをダウンロードすることができ、nmcli
はネットワークインターフェイスの設定と制御を提供し、nmon
はリソースをリアルタイムで監視するために使用されます。
適切なコマンドを特定したら、負荷テストを実行するためにそれらを実行する必要があります。
各負荷テストは、正確さと信頼性を確保するために数回繰り返す必要があります。
WindowsでCPUに負荷をかける方法
WindowsのコマンドプロンプトやPowerShellを使って、CPUに負荷をかけることができるコマンドとしては、以下のようなものがあります。
wmicコマンドで負荷状況を確認する
まずは、負荷をかける前のCPUの状態を確認します。
コマンドプロンプトを開き、以下のコマンドを入力してください。
1 2 3 |
> wmic cpu get loadpercentage loadpercentage 5 |
このコマンドは、現在のCPUの負荷状況をパーセントで表示します。
特にコマンドを使わなくても、Windowsにはタスクマネージャーがありますので、そちらを確認しながら負荷をかけつつ、何かあればすぐにプロセスを終了できるようにしておきましょう。
PowerShellを使用する
今ではコマンドプロンプトに代わってPowerShellが主流になってきたので、PowerShellを使ってCPUに負荷をかけたいと思います。
実際、PowerShellの方が簡単かつ高機能で便利です。
1 |
> while (1) { } |
このコマンドは、無限ループを実行し、CPUに負荷をかけ続けます。
Ctrl + Cで終了します。
Windowsでメモリに負荷をかける方法
WindowsのVBS(Visual Basic Script)を使用して、Windowsでメモリに負荷をかける方法を以下に示します。
VBSを使用する
VBSファイルを作成します。
任意のテキストエディタを使用して、次のコードを含むVBSファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Option Explicit 'メモリを消費する量を設定(MB) Dim intMemEat intMemEat = 100 Dim intLoopCnt For intLoopCnt = 1 To (intMemEat * 100) Call subMain() Next MsgBox "メモリに約" & intMemEat & "MBの負荷をかけました。" & vbCrlf & "このメッセージボックスを閉じるとメモリは開放されます。", vbInformation, "メモリ負荷ツール" Sub subMain() Dim x Dim y Set x = CreateObject("Scripting.Dictionary") Set y = CreateObject("Scripting.Dictionary") Call x.Add("a", y) Call y.Add("b", x) End Sub |
作成したVBSファイルを実行すると、メモリに負荷がかかります。
VBSファイルを実行してメモリを確保すると、コードの中に書いたメッセージボックスが表示されます。
「OK」ボタンを押すことで、メモリを開放することができます。
.NET Frameworkをインストールしていれば、もっと短いコードでもできるかもです。
LinuxでCPUに負荷をかける方法
Linuxでツールを使わずにCPUに負荷をかける方法として、以下の2つの方法があります。
「yes」コマンドを使用する
yes
コマンドは、負荷テストでは最も有名なコマンドではないでしょうか。yes
というテキストを標準出力に繰り返し出力するため、CPUを100%使用して負荷をかけます。
1 |
# yes > /dev/null |
後ろの> /dev/null
は、出力を/dev/null
にリダイレクトして、表示されないようにします。
Ctrl + Cで終了します。
シェルスクリプトを使用する
また、以下のようなシェルスクリプトを書くことでCPUに負荷をかけることができます。
1 |
# while true; do :; done |
このスクリプトは、無限ループを実行するため、CPUに負荷をかけます。
これを実行すると、プロンプトが表示されなくなるため、別のターミナルウィンドウを使用する必要があります。
Ctrl + Cで終了します。
【おまけ】stressツールを使用する
負荷テストのためにツールを入れたくないとは言うものの、やはりツールは便利なものです。
中でも「stress」は負荷テストではもう定番のツールですね。
「stress」は、CPUやメモリ、I/Oデバイスに負荷をかけるためのツールです。
以下のコマンドでインストールできます。
1 2 |
# apt update # apt install stress |
「stress」ツールを使用してCPUに負荷をかけるには、以下のコマンドを実行します。
1 |
# stress --cpu 1 |
このコマンドは、1つのCPUスレッドを100%使用して負荷をかけます。
CPUコア数を指定する場合は、「–cpu」フラグの後にコア数を指定します。
Ctrl + Cで終了します。
Linuxでメモリに負荷をかける方法
Linuxでツールを使わずにメモリに負荷をかける方法として、以下のようなコマンドを書くことができます。
1 |
# /dev/null < $(yes) |
こちらのコマンドはメモリに負荷をかけますが、同時にCPUにも負荷がかかります。
これを実行すると、プロンプトが表示されなくなるため、別のターミナルウィンドウを使用する必要があります。
Ctrl + Cで終了します。
もっとメモリに負荷をかける
上記のコマンドをバックグラウンドで複数実行して、たくさん負荷をかける方法です。
末尾に&
記号を付けて複数実行します。
1 2 3 4 5 6 |
# /dev/null < $(yes) & [1] 2680 # /dev/null < $(yes) & [2] 2682 # /dev/null < $(yes) & [3] 2684 |
実行中のプロセスを確認するにはjobs
コマンドを使用します。
1 2 3 4 |
# jobs [1] 実行中 /dev/null < $(yes) & [2]- 実行中 /dev/null < $(yes) & [3]+ 実行中 /dev/null < $(yes) & |
プロセスをkill
するには、%
と上記のジョブIDを使用します。
また、複数のプロセスを同時にkill
するには、半角スペースで繋げて入力します。
1 |
# kill %1 %2 %3 |
負荷テストを適切に処理するためのヒント
負荷テストを適切に処理するためには、テストの種類を理解することが重要です。
負荷テストには、大きく分けて静的負荷テストと動的負荷テストの2種類があります。
静的負荷テストは、安定したワークロードの下でプログラムやアプリケーションのパフォーマンスをテストするために使用され、動的負荷テストは、変動する負荷の下でパフォーマンスを測定するために使用されます。
また、テストを実行する前に、測定基準と設定を定義することも重要です。
これにより、必要なすべての詳細を適切に監視することができます。
最後に、すべてのテストを数回繰り返すことで、システムの性能をより正確に評価することができます。
まとめ
この記事を読むことで、コマンドを使用して負荷テストを実行できるようになったはずです。
コマンドを使った負荷テストは、システムの性能を確認し、改善の可能性を見出すのに効果的な方法です。
負荷テストの設定と実行は簡単なプロセス、最小限の労力で実行することができます。
さらに、さまざまな種類のテストに慣れ、設定と測定基準を適切に定義することは、正確な結果を得るために不可欠です。
コメント