製品コラム

セイテクエンジニアのブログ  製品コラム  ディスクとネットワークのパフォーマンス監視がしたい-BOM for Windows活用例

 

 

ディスクとネットワークのパフォーマンス監視がしたい-BOM for Windows活用例

2026年02月18日配信
執筆者:セイ・テクノロジーズ エバンジェリスト

 「BOM for Windows Ver.8.0」(以下、BOM)の「パフォーマンスカウンター監視」を使用すると、特定のパフォーマンスカウンターを簡単にしきい値監視できます。カウンター値に何かしらの計算加工を行って監視することもできます。それには「カスタム監視」を利用できます。

 以下のコラムでは、Windows Serverのプロセッサとメモリ監視について取り上げました。そして、メモリリークやハンドルリークの疑いを監視するために、PowerShellスクリプトを使用してカウンター値の前回からの増分を計算し、BOMの「カスタム監視」でしきい値監視する方法を紹介しました。今回は、ディスクとネットワークのパフォーマンスを対象に、計算に基づいた「カスタム監視」に利用できるPowerShellスクリプトとしきい値の目安(参考値)を紹介します(画面1)。

メモリ/ハンドルリークを監視したい-BOM for Windows活用例

画面1 PowerShellスクリプトを使用して計算加工したパフォーマンスデータを取得し、しきい値監視する例
画面1 PowerShellスクリプトを使用してパフォーマンスデータを取得して計算し、その結果をしきい値監視する例

 

ディスクのパフォーマンス監視

 

レイテンシ(ディスク転送時間)

 

パフォーマンスカウンター:

LogicalDisk(_Total)\Avg. Disk sec/Transfer

PowerShellスクリプトのコード:
$ret = ((Get-Counter "\LogicalDisk(_Total)\Avg. Disk sec/Transfer").CounterSamples).CookedValue
[Math]::Round( $ret * 1000 ) #millisecond
しきい値の目安:
20ms以上: 注意
30ms以上: 危険

 

 ディスクのレイテンシ(Latency)は、I/O要求を出してからI/Oが完了するまでの待ち時間を示し、ms(ミリ秒)の単位が用いられます。レイテンシは小さいほどディスク性能が良く、ディスクのI/O負荷が高まるとレイテンシは増加します。

 

※ディスクのパフォーマンスのためには、パフォーマンスカウンター「LogicalDisk(_Total)\Current Disk Queue Length」がディスクのスピンドル数×2以下であると良いとされています。しかしその考えは、物理サーバーのディスクがすべてハードディスクドライブ(HDD)であることを前提としたものです。RAID構成やSAN記憶域、SSD、NVMe、仮想環境(Hyper-V VMやAzure VM)には適用できないことに注意してください。SSD、NVMeでは並列処理が可能なのでCurrent Disk Queue Lengthが大きくてもパフォーマンスに影響しない場合がほとんどです。また、仮想環境では多層ストレージ上に配置されているうえ、ホスト側の影響(別のVM、別のテナント)も含むため単純に比較できません。代わりに、上記のレイテンシを監視するべきです。

 

スループット(ディスクの読み取り/書き込み速度)

 

パフォーマンスカウンター:

LogicalDisk(_Total)\Disk Read Bytes/sec
LogicalDisk(_Total)\Disk Write Bytes/sec

PowerShellスクリプトのコード:
$ret = (Get-Counter "\LogicalDisk(_Total)\Disk Read Bytes/sec").CounterSamples.CookedValue + (Get-Counter "\LogicalDisk(_Total)\Disk Write Bytes/sec").CounterSamples.CookedValue
#[Math]::Round( $ret * 8 / 1024 /1024 ) # Mbits per second
[Math]::Round( $ret / 1024 /1024 ) # Mbytes per second
しきい値の目安:
仕様上限の80%以上: 注意
仕様上限の90%以上: 注意

 

 ディスクのスループットとは、単位時間あたりに転送できるデータ量を示し、MB/s(メガバイト/秒)、Mbps(メガビット/秒)、Gbps(ギガビット/秒)などの単位が使用されます。値が大きいほど大量のデータ転送に強いと言えますが、AzureやAWSなどクラウド上のVMの場合、ディスクの種類やサイズ、VMのサイズによってスループットの上限(100MB/sなど)が設けられています。オンプレミスの環境の場合は、ディスクの負荷テストを実施して、最大のスループットを計測を計測し、しきい値を導き出すとよいでしょう。

 

IOPS

 

パフォーマンスカウンター:

LogicalDisk(_Total)\Disk Reads/sec
LogicalDisk(_Total)\Disk Writes/sec

PowerShellスクリプトのコード:
$ret= (Get-Counter "\LogicalDisk(_Total)\Disk Reads/sec").CounterSamples.CookedValue + (Get-Counter "\LogicalDisk(_Total)\Disk Writes/sec").CounterSamples.CookedValue
[Math]::Round( $ret )
しきい値の目安:
仕様上限の80%以上: 注意
仕様上限の90%以上: 危険

 

 IOPS(Input/Output Operations Per Second)は、1秒間に処理できるI/O回数を表し、IOPS(回/秒)の単位が用いられます。主に小さなランダムアクセス性能を示す指標であり、小さいブロックサイズほどIOPSが重要になります。AzureやAWSなどクラウド上のVMの場合、ディスクの種類やサイズ、VMのサイズによってスループットの上限(500《ブースト600》など)が設けられています。オンプレミスの環境の場合は、ディスクの負荷テストを実施して、最大のIOPSを計測し、しきい値を導き出すとよいでしょう。

 

ネットワークのパフォーマンス監視

 

スループット(帯域幅)

 

パフォーマンスカウンター:

Network Interface(*)\Bytes Total/sec

PowerShellスクリプトのコード:
$ret = ((Get-Counter "\Network Interface(*)\Bytes Total/sec").CounterSamples | Measure-Object -Property CookedValue -Sum).Sum
[Math]::Round( $ret * 8 / 1024 /1024 ) # Mbits per second
#[Math]::Round( $ret * 8 / 1024 /1024 ) # Kbits per second
#[Math]::Round( $ret / 1024 /1024 ) # Mbytes per second
しきい値の目安:
仕様上限の80%以上: 注意
仕様上限の90%以上: 危険

 

 ネットワークのスループット、使用帯域とは、単位時間あたりに送受信されたデータ量を示し、Mbps、Gbpsなどの単位が用いられます。物理サーバーの場合、ディスクとは異なり上限が明確です。Gbps、10Gbps(10GbE)など、ネットワークインターフェイスカードの最大速度が上限になります。AzureやAWSのVMの場合、VMに認識されたNICデバイスの仕様が上限ではないことに注意してください。VMのサイズによってNICの数やスループットの上限が設けられています。VMのサイズ次第では30Gbpsを超えることも可能です。

 上記のPowerShellスクリプトは、クラウド上のVMを念頭に、すべてのNICで送受信されたデータ量を対象にスループットを計測します。 NIC単位のスループットの監視については、BOMが標準で備える「ネットワークインターフェイス監視」を利用するのが簡単です(画面2)。

 

画面2 NICごとのネットワークスループットの監視には、BOM標準の「ネットワークインターフェイス監視」が便利
画面2 NICごとのネットワークスループットの監視には、BOM標準の「ネットワークインターフェイス監視」が便利

 

ディスク性能を実測してしきい値を決める

 

 前述したように、AzureやAWSなどクラウド上のVMは、ディスクのスループットやIOPSに仕様上の上限が設けられているため、その仕様に基づいてしきい値を設定できます。一方、オンプレミスの物理サーバーやVMの場合は仕様上の上限がありません。そのため、ディスクに高いI/O負荷を与えて性能を実測し、システムの上限を把握することが重要です。

 それには、MicrosoftのWindows、Windows Server、およびクラウドサーバーインフラストラクチャエンジニアリングチームが開発、提供するストレージ性能測定ツール「DiskSpd」が便利です。

microsoft/diskspd|GitHub

 次のコマンドラインを実行すると、カレントディレクトリのあるディスクに対して30秒間高い負荷テストを実施することができます(画面3)。

diskspd -c5G -d30 -r -w100 -t4 -o32 testfile.dat

 

画面3 上はオンプレミスのHyper-V VMの結果、下はAzureVM(最大600IOPS、100MB/sが上限)の結果。オンプレミスは実測値、クラウドは上限値に基づいてしきい値を設定すればよい
画面3 上はオンプレミスのHyper-V VMの結果、下はAzureVM(最大600IOPS、100MB/sが上限)の結果。この結果から、クラウドは上限値に基づいてしきい値を設定すればよいことがわかる

参考情報:
'D' ファミリ汎用 VM サイズ シリーズ|Azure(Microsoft Learn)

blog_column_subscribe

blog_column_comment

最新記事