前回の記事では、アプリケーションの稼働に必要な IO 操作の測定方法について触れました。本記事では、システムのパフォーマンス低下がディスクによって引き起こされているのかどうかを判断するための指標について説明します。

目次

  1. Premium SSD を使ってみよう ~性能と注意点をチェック~
  2. Premium SSD を使ってみよう ~IOPS とスループットの関係~
  3. Premium SSD を使ってみよう ~システムが生成する IOPS の計測方法~
  4. Premium SSD を使ってみよう ~ボトルネックの原因がディスクなのかどうかを特定する~(本記事)

ディスクの応答時間がパフォーマンスの判断指標となる

システムのパフォーマンスが低下している原因がディスクの場合、ディスクの応答時間が長くなります。

前回の記事では、パフォーマンス モニターを使ってアプリケーションの稼働に必要な IO 操作の数を測定する方法を紹介しましたが、パフォーマンス モニターでディスクの応答時間も確認することができます。応答時間を確認するためには以下のカウンターを使います。

  • LogicalDisk\Avg. Disk sec/Read
  • LogicalDisk\Avg. Disk sec/Write

もしくは

  • PhysicalDisk\Avg. Disk sec/Read
  • PhysicalDisk\Avg. Disk sec/Write

似たようなカウンターが論理ディスク(LogicalDisk)と物理ディスク(PhysicalDisk)のそれぞれに対して用意されており、「Avg. Disk sec/Read」はディスクの平均読み取り時間、「Avg. Disk sec/Write」はディスクの平均書き込み時間を示します。本記事では LogicalDisk を使ってディスクの応答時間を測定します。

例えば、1 本の論理ディスクが 16 本の物理ディスクで構成されている場合、LogicalDisk のカウンターから得られるデータと PhysicalDisk のカウンターから得られるデータは異なるので注意してください。LogicalDisk のデータを参照した際には、16 本の物理ディスクを 1 つの論理ディスクとして束ねた結果のパフォーマンス データが得られます。PhysicalDisk を参照した際には、個別の物理ディスクのパフォーマンス データが得られます。

アプリケーションからは論理ディスクの単位でディスクを参照しますので、ディスクのボトルネックを調査する時には最初に LogicalDisk で論理ディスクの応答時間を測定し、その後に PhysicalDisk で物理ディスクを個別に調査するケースが一般的だと思います。

Iometer で負荷をかけた際のディスクの応答時間を測定

Iometer を使って、4 KB 100% Read / 0% Random の負荷をサイズ 1TB の Premium SSD のディスクにかけながら、LogicalDisk\Avg. Disk sec/Read の測定をします。この時、Iometer からは 5,000 IOPS の負荷がディスクに対して発生しています。

パフォーマンス モニターで計測したディスクの平均読み取り時間として、約 3.5 ミリ秒付近でグラフが一定化していることが分かります。

PerfLatency

また、Iometer の画面からは、応答時間を数字で確認することが可能です。パフォーマンス モニターで計測できた数値と同じ数値が Iometer からも確認できます。

IoLatency

許容できるディスクの応答時間はどの程度か?

Premium SSD の場合、IO 操作の応答時間が 10 ミリ秒未満となるように設計されています。そのため、Premium SSD を使っているにもかかわらず、ディスクの応答時間が常に数十ミリ秒を超えるようなシステムの場合、ディスクが原因でパフォーマンス遅延が発生しているということが言えます。

また、OS やミドルウェアの観点からディスクの応答時間に関するガイドラインが提供されています。以下のページをご参照ください。

サーバーのパフォーマンスを測定する
https://docs.microsoft.com/ja-jp/previous-versions/technet-magazine/cc718984(v=msdn.10)

Windows 環境の場合、応答時間が 25 ミリ秒以内におさまる設計を推奨しています。ですが、 25 ミリ秒という数値は一般的な目安です。例えば、SQL Server に超高速なレスポンスを求めるという要件があるような場合には、10 ミリ秒以下の応答時間を目標にディスクのチューニングを行うケースもあります。

また、日中の業務時間中は 25 ミリ秒以内で処理を実行することができる環境で、夜間のバックアップ処理の実行中に一時的に応答時間が 100 ミリ秒を超える、というようなケースはよくあります。応答時間が 100 ミリ秒を超えることでバックアップ処理が業務の開始時間前までに終了しないというようなケースではディスクのパフォーマンスの見直しが必要になりますが、夜間のバックアップの負荷が日中の業務に影響を与えないレベルであれば、バックアップ処理実行時の 100 ミリ秒という応答時間は許容する、というケースも多くあります。

システム要件に応じて、ディスクの応答時間の期待値を調整していただくことをお勧めします。

Standard SSD/Standard HDD の比較

Premium SSD を使ってみよう ~性能と注意点をチェック~で説明した通り、Azure VM で使用できるディスクには以下の三種類のディスクがあり、それぞれの性能は以下の通りです。

ディスクの種類 1TB あたりの IOPS 1TB あたりのスループット 東日本リージョンでの月額
Premium SSD 5,000 200 MB/秒 ¥17,409.28
Standard SSD 500 60 MB/秒 ¥8,601.60
Standard HDD 500 60 MB/秒 ¥4,587.52

今まで Premium SSD に着目して説明してきましたが、他の二種類のディスク、Standard SSD と Standard HDD の応答時間について説明します。この二種類のディスクは、サイズ 1TB あたりの IOPS およびスループットの期待値はそれぞれ 5,000 IOPS、60 MB/秒となり、同じ性能値を示しています。両者の違いは、ディスクの応答時間にあります。

Iometer を使って、サイズ 1TB の Standard SSD および Standard HDD に対して 4 KB 100% Read / 0% Random の負荷をかけます。この時、500 IOPS の負荷がディスクにかかるように Iometer を実行します。

ディスクの平均読み取り時間は、両者とも約 3~4 ミリ秒になります。大きく異なるのは、読み取り時間のピーク値になります。通常より高い負荷がかけられた状況では、IO の応答時間は平均の読み取り時間内におさまらず、やや高めの応答時間を記録します。IO を処理するため、一時的に応答時間がピークに達した時の値の履歴をトレースし、Standard SSD と Standard HDD とで比較します。

以下は Standard SSD にディスク性能以上の過負荷をかけた場合の、ディスクの読み取り時間のピーク値の履歴をトレースしたものです。メーターの中に青い線がありますが、この青い線がピーク値の履歴を表します。今回の計測では、最大で 25 ミリ秒以内にピーク値がおさまっていることが分かります。

StandardSSD

一方で、以下は Standard HDD にディスク性能以上の過負荷をかけた場合の、ディスクの読み取り時間のピーク値の履歴をトレースしたものです。メーターの中の青い線に着目すると、ピーク値は最大で 50 ミリ秒ほどに達していることが分かります。

StandardHDD

つまり、Standard SSD の方が応答時間が短く、パフォーマンスも安定していると言うことができます。Standard HDD はパフォーマンスにばらつきが見られますが、Azure Storage の製品チームからのアナウンスとして、各ストレージの比較について説明された記事が公開されています。詳細は以下をご参照ください。

Azure 仮想マシンのワークロードを対象とする Standard SSD ディスクの一般提供のお知らせ https://azure.microsoft.com/ja-jp/blog/announcing-general-availability-of-standard-ssd-disks-for-azure-virtual-machine-workloads/

同じ IOPS/スループット性能を提供するディスクでも、ディスクの種類によって応答時間が異なるため、システム全体のパフォーマンスに影響します。システム要件とコストのバランスを見ながら、最適なディスクを選択していただくことをお勧めします。

まとめ

  • ディスクがシステムのパフォーマンス低下の原因かどうかを判断するためには、ディスクの応答時間を確認します
  • Windows 環境の場合、ディスクの応答時間は OS に標準で付属されているパフォーマンス モニターで測定が可能です
  • 一般的な Windows 環境では、応答時間は 25 ミリ秒以内におさまっているのが望ましい状態です
  • Standard SSD と Standard HDD を比較した場合、IOPS/スループット性能の数値が同じ場合でも、ディスクの応答時間が異なります

関連記事

  1. Premium SSD を使ってみよう ~性能と注意点をチェック~
  2. Premium SSD を使ってみよう ~IOPS とスループットの関係~
  3. Premium SSD を使ってみよう ~システムが生成する IOPS の計測方法~
  4. Premium SSD を使ってみよう ~ボトルネックの原因がディスクなのかどうかを特定する~(本記事)