現象:IO パフォーマンスの低下に関する調査

CQ のパフォーマンスを調査する方法の 1 つは、request.log を確認することです。ほとんどのリクエストに長時間を要している場合、何が原因でしょうか。

考えられる原因の 1 つに、一般的なアプリケーションだけでなくディスクパフォーマンスもあります。

一部の要因により、システムが未解決のディスク I/O リクエストを持っているため、CPU がディスクシステムを待機している時間の割合である「io-wait」を含むディスクパフォーマンスがブロックされます。sysstat ログからの io-wait 情報は、誤解につながる傾向があります。ただし、注意さえ払えば、サーバーのパフォーマンスを把握することは難しくありません。

Linux では、mpstat および iostat を使用して io-wait を取得できます(この情報は Windows でも取得できますが、情報収集のための設定は簡単ではありません)。io-wait は、期間中のストレージデバイスの待機時間のみで計算されます。io-wait の値を確認する際に、mpstat の「all」の値は見ないでください。これは平均値です。すべての CPU の io-wait 値を合計する必要があります。

例えば、1 つのディスクシステムのみが CQ のためにアクセスしている計測期間 1.0 秒の間に、CPU0 が io-wait を 0.1 秒待機し、CPU1 が 0.2 秒、CPU2 が 0.3 秒、CPU3 が 0.4 秒それぞれ待機した場合、4 つすべての CPU を持つシステムは io-wait を 1.0 秒、合計で 100% 待機することになります。つまり、システムがストレージとの間で読み取りと書き込みを行うプロセスの実行が、io-wait によってブロックされるということです。一方で、平均値は 25%と表示され、十分なリソースがあるように見えます。この値は使用しないでください。システム全体の io-wait の待機時間が 0.25 秒というわけではないからです。ディスクのパフォーマンスが低いことによって CQ/AEM のプロセスがブロックされる場合、最大の平均値(mpstat の CPU「all」の「%iowait」列に表示される値)は、1 つの CPU でおよそ 100%、2 つの CPU で 50%、4 つの CPU で 25%、8 つの CPU で 12.5%です。システムに搭載されている CPU の数が多いほど、値は小さく見えます。ただし実際は、どんなに多くの CPU がシステムに搭載されていても、io-wait の合計は 100%です。

---------------
# mpstat -P ALL 5
...
08:50:50   CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
08:50:55   all   3.26 0.00  4.86  24.04   0.98   3.05   0.00   63.81   2219.00
08:50:55   0   0.84  0.00  1.88   14.41   0.00   0.00   0.00   82.88  1011.27
08:50:55   1   0.21  0.00  1.45   17.63   3.53   0.00   0.00   77.18   759.08
08:50:55   2   9.55  0.00  14.84  56.91  0.41   11.99 0.00    6.30    445.93
08:50:55   3   2.08  0.00  1.04     6.25   0.00   0.00   0.00   90.62   2.71

...
CPU の「すべて」の行で列「%iowait」の「24.04」を信頼しないでください。各 CPU の %iowait 値をすべて合計し、14.41 + 17.63 + 56.91 + 6.25 とします
(「24.04」を使用する場合は、24.04 に 4 を掛けます)。
---------------

他のアプリケーション用に複数のストレージデバイスを使用しているシステムでは、io-wait の合計値が 100%を超えます。そのときは、iostat を確認して、スライスやストレージごとにどの程度の負荷がかかっているかを調べます。

考慮すべき点

一般的に、10%を超えた場合は、I/O プロセスの不足によって応答が遅くなると考えてください。io-wait の値が小さいほど、パフォーマンスは向上します。特定のプロセスが多くの io-wait の原因となっている場合以外に io-wait を低減するには、既存のディスクストレージの設定を確認し、高性能の RAID 設定や SSD などのディスクに交換することを検討します。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー