忙しいサーバーがあり、高いIO負荷の下でチョッキングしています、少なくとも、それは私が持っている感覚です。iostat -xz
からの出力は次のようになります。
extended device statistics
device r/s w/s kr/s kw/s wait actv svc_t %w %b
sd5 224.8 157.8 10701.8 6114.7 0.0 9.5 24.7 0 100
sd5 243.2 110.4 11565.3 4065.0 0.0 9.7 27.5 0 100
6ドライブのSATAアレイでは25msのサービス時間が許容できないため、ディスクサブシステムが過負荷になっていることは明らかです。また、100%ビジーであるということは、ディスクIOが不足していることも意味します。
しかし、なぜwait
は常に0.0
なのですか?そして、なぜ%w
も0なのですか? %w
は時々1
に移動し、すぐに0
に戻ります。これは、IOを待機しているプロセスがないことを意味しませんか?
RAIDコントローラーはどういうわけかこの結果を引き起こします/待機時間をマスクしますか?
誰かがこの振る舞いを説明できますか?
Svc_t時間は、ミリ秒単位で「ラウンドトリップ」を測定します。
オペレーティングシステムの「下部」-ディスクサブシステム-オペレーティングシステムの「下部」
「100%ビジーとは、ディスクIOが不足していることを意味する」というのは完全には正しくありません。これは、ディスクが何かをしている時間の100%でビジーであったことを意味します。必ずしもこれ以上実行できないことや、時間内に要求を処理しないことを意味します(これは微妙な違いです)。
通常、過負荷のディスクの症状は、%w列とactcの値が高いことです(着実に200を超えています)。
レイテンシーの問題でしょうか?コントローラーが6番目のデータチャンクを探すのに時間を費やすように、システムは多くのランダムな操作を要求しますか?
はい、RAIDコントローラーが数字をめちゃくちゃにしているのは正しいと思います。要求されるとすぐに操作が開始されたことをドライバーに通知する場合、ドライバーは、RAIDコントローラー内のディスクハードウェアをまだ待機していることを認識しません。 RAIDコントローラーから統計を直接取得できますか?