サイトアイコン IT NEWS

WindowsやLinuxの標準機能を使った負荷テストの実施

WindowsLinux負荷テストを実施する際、ツールを使う情報をよく見かけますが、お客様の環境で負荷テストを行いたい場合、ツールをインストールできない場面がよくあります。
しかし、ツールがなくてもコマンドを使って負荷テストを行うことは可能です。
そこで今回は、負荷テスト用のツールを追加せず、LinuxWindowsコマンドだけを使って、CPUやメモリ等のリソースに負荷をかける方法をご紹介します。

負荷テストの必要性と目的

負荷テストとは、プログラムやアプリケーションをさまざまな条件や作業負荷にさらし、その反応を調べることです。
負荷テストは、アプリケーションの能力を評価するのに役立つので、ソフトウェアテストの不可欠な要素です。
通常負荷とピーク負荷の下でのアプリケーションのパフォーマンスと信頼性を検証するのに役立ちます。

負荷テストコマンドを使用することは、システムの全体的なパフォーマンスを確認する効果的な方法です。
直接的で正確な出力解析やレポートなど、多くの利点があります。
さらに、コマンドはプログラミングの知識を必要としません。
また、適切な指標と設定を定義するのはユーザー次第です。

著者の場合は、Zabbixでトリガーの動作確認をするために負荷テストを行うことが多いです。

コマンドを使用した負荷テストのメリット

コマンドを使用して負荷テストを実行すると、多くの利点があります。
それは、テストプロセスの効率を高めることです。
コマンドを使用することで、テストのためのワークロードと条件、および信頼性の高い出力を生成するために必要なリソースを迅速かつ正確に定義することができます。

また、テスト環境を完全に制御することも可能です。
メトリクスと設定を定義することで、システムのパフォーマンスをより適切に評価し、改善の可能性を特定することができます。
さらに、最小限の労力で何度でも再実行できるため、正確で一貫性のあるアウトプットを実現します。

さらに、テストの総合的な結果にアクセスする機能を持つことで、システム全体のパフォーマンスをさらに向上させるために使用できるさまざまな情報を提供します。
最後に、コマンドの使用は、特別なツールやソフトウェアを必要としないため、費用対効果に優れています。

WindowsとLinuxで使用できるコマンドの違い

負荷テストの精度を高めるためには、WindowsとLinuxで使用できるコマンドの違いを知っておくことが重要です。
例えば、Windowsシステムにはnetstattasklistperfmonなどのコマンドがありますが、Linuxシステムにはwgetnmclinmonなどのコマンドがあります。

コマンドを使った負荷テスト

コマンドを使用して負荷テストをする場合、使用するシステムで利用可能なコマンドに精通していることが重要である。

netstatはネットワーク接続や統計情報を表示し、tasklistはアクティブなタスクのリストを表示する。
一方、Perfmonは、システムのパフォーマンスを監視するために使用できる内蔵の監視ツールです。

wgetはネットワーク上でファイルをダウンロードすることができ、nmcliはネットワークインターフェイスの設定と制御を提供し、nmonはリソースをリアルタイムで監視するために使用されます。

適切なコマンドを特定したら、負荷テストを実行するためにそれらを実行する必要があります。
負荷テストは、正確さと信頼性を確保するために数回繰り返す必要があります。

WindowsでCPUに負荷をかける方法

WindowsでCPUに負荷をかける方法

WindowsコマンドプロンプトPowerShellを使って、CPUに負荷をかけることができるコマンドとしては、以下のようなものがあります。

wmicコマンドで負荷状況を確認する

まずは、負荷をかける前のCPUの状態を確認します。
コマンドプロンプトを開き、以下のコマンドを入力してください。

> wmic cpu get loadpercentage
loadpercentage
5

このコマンドは、現在のCPUの負荷状況をパーセントで表示します。
特にコマンドを使わなくても、Windowsにはタスクマネージャーがありますので、そちらを確認しながら負荷をかけつつ、何かあればすぐにプロセスを終了できるようにしておきましょう。

PowerShellを使用する

今ではコマンドプロンプトに代わってPowerShellが主流になってきたので、PowerShellを使ってCPUに負荷をかけたいと思います。
実際、PowerShellの方が簡単かつ高機能で便利です。

> while (1) { }

このコマンドは、無限ループを実行し、CPUに負荷をかけ続けます。
Ctrl + Cで終了します。

CPUに負荷をかけると、システムパフォーマンスが低下する場合があります。
特に、長時間にわたってCPUに負荷をかけると、システムが応答しなくなる可能性があるため、注意が必要です。

Windowsでメモリに負荷をかける方法

WindowsVBSVisual Basic Script)を使用して、Windowsメモリに負荷をかける方法を以下に示します。

VBSを使用する

VBSファイルを作成します。
任意のテキストエディタを使用して、次のコードを含むVBSファイルを作成します。

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をインストールしていれば、もっと短いコードでもできるかもです。

メモリに負荷をかけることは、システムの安定性に影響を与える可能性があります。
システムが応答しなくなる可能性があるため、注意が必要です。
また、VBSはWindowsの標準的なスクリプト言語の1つであり、セキュリティ上の理由から、信頼できるソースからのみ実行することが推奨されます。

LinuxでCPUに負荷をかける方法

LinuxでCPUに負荷をかける方法

Linuxでツールを使わずにCPUに負荷をかける方法として、以下の2つの方法があります。

「yes」コマンドを使用する

yesコマンドは、負荷テストでは最も有名なコマンドではないでしょうか。
yesというテキストを標準出力に繰り返し出力するため、CPUを100%使用して負荷をかけます。

# yes > /dev/null

後ろの> /dev/nullは、出力を/dev/nullにリダイレクトして、表示されないようにします。
Ctrl + Cで終了します。

シェルスクリプトを使用する

また、以下のようなシェルスクリプトを書くことでCPUに負荷をかけることができます。

# while true; do :; done

このスクリプトは、無限ループを実行するため、CPUに負荷をかけます。
これを実行すると、プロンプトが表示されなくなるため、別のターミナルウィンドウを使用する必要があります。
Ctrl + Cで終了します。

【おまけ】stressツールを使用する

負荷テストのためにツールを入れたくないとは言うものの、やはりツールは便利なものです。
中でも「stress」は負荷テストではもう定番のツールですね。

stress」は、CPUやメモリ、I/Oデバイスに負荷をかけるためのツールです。
以下のコマンドでインストールできます。

# apt update
# apt install stress

stressツールを使用してCPUに負荷をかけるには、以下のコマンドを実行します。

# stress --cpu 1

このコマンドは、1つのCPUスレッドを100%使用して負荷をかけます。
CPUコア数を指定する場合は、「–cpu」フラグの後にコア数を指定します。
Ctrl + Cで終了します。

CPUに負荷をかけることは、システムの安定性に影響を与える可能性があります。
システムが応答しなくなる可能性があるため、注意が必要です。
また、上記の方法で負荷をかける場合、適切なシステムリソース管理が行われているかどうかを確認することが重要です。

Linuxでメモリに負荷をかける方法

Linuxツールを使わずにメモリに負荷をかける方法として、以下のようなコマンドを書くことができます。

# /dev/null < $(yes)

こちらのコマンドメモリに負荷をかけますが、同時にCPUにも負荷がかかります。
これを実行すると、プロンプトが表示されなくなるため、別のターミナルウィンドウを使用する必要があります。
Ctrl + Cで終了します。

もっとメモリに負荷をかける

上記のコマンドバックグラウンドで複数実行して、たくさん負荷をかける方法です。
末尾に&記号を付けて複数実行します。

# /dev/null < $(yes) &
[1] 2680
# /dev/null < $(yes) &
[2] 2682
# /dev/null < $(yes) &
[3] 2684

実行中のプロセスを確認するにはjobsコマンドを使用します。

# jobs
[1]  実行中 /dev/null < $(yes) &
[2]- 実行中 /dev/null < $(yes) &
[3]+ 実行中 /dev/null < $(yes) &

プロセスkillするには、%と上記のジョブIDを使用します。
また、複数のプロセスを同時にkillするには、半角スペースで繋げて入力します。

# kill %1 %2 %3

メモリに負荷をかけることは、システムの安定性に影響を与える可能性があります。
システムが応答しなくなる可能性があるため、注意が必要です。
また、適切なシステムリソース管理が行われているかどうかを確認することが重要です。

負荷テストを適切に処理するためのヒント

負荷テストを適切に処理するためには、テストの種類を理解することが重要です。
負荷テストには、大きく分けて静的負荷テストと動的負荷テストの2種類があります。
静的負荷テストは、安定したワークロードの下でプログラムやアプリケーションのパフォーマンスをテストするために使用され、動的負荷テストは、変動する負荷の下でパフォーマンスを測定するために使用されます。

また、テストを実行する前に、測定基準と設定を定義することも重要です。
これにより、必要なすべての詳細を適切に監視することができます。
最後に、すべてのテストを数回繰り返すことで、システムの性能をより正確に評価することができます。

まとめ

この記事を読むことで、コマンドを使用して負荷テストを実行できるようになったはずです。
コマンドを使った負荷テストは、システムの性能を確認し、改善の可能性を見出すのに効果的な方法です。

負荷テストの設定と実行は簡単なプロセス、最小限の労力で実行することができます。
さらに、さまざまな種類のテストに慣れ、設定と測定基準を適切に定義することは、正確な結果を得るために不可欠です。

モバイルバージョンを終了