CPU I/O待機は50%前後で安定していますが、iostat 1
を実行すると、ディスクアクティビティがほとんどまたはまったく表示されません。
IOPSなしで待機する原因は何ですか?
注:ここにはNFSまたはFuseファイルシステムはありませんが、Xen仮想化を使用しています。
NFSはこれを行うことができ、他のネットワークファイルシステム(さらにはFuseベースのデバイス)が同様の影響を与えたとしても、私は驚かないでしょう。
サーバー上の他のVMがディスクをスラッシュしている可能性はありますか?
ホストノードが過負荷になると、奇妙な結果が得られることが仮想化でわかっています。
これがインスタンスベースのストレージを使用するAmazon EC2 Xen環境である場合は、このイメージを含むホストの状態を確認するようAmazonに依頼してください。
これがハイパーバイザーにアクセスできるXen環境である場合、xvdaおよびxvdbデバイスに使用されているディスクイメージ(ファイル、ネットワーク、LVMスライスなど)がないかどうかからIOwaitを確認します。また、他のディスクデバイスがシステムのリソースを独占している可能性があるため、一般的にはハイパーバイザーについてI/Oシステムを確認する必要があります。
iostat -txk 5
通常、開始診断ツールとして適しています。使用可能なすべてのデバイスのI/Oの5秒の要約が必要であるため、VMイメージを使用した場合と使用しない場合の両方で役立ちます。
利用可能なファイル記述子/ inodeを確認してください。限界に達すると、スワップしてiowaitを模倣します
編集する
Xenを使用していて、現在の割り込みを確認しました。blkifが通常よりも高い場合があります。
少し遅れましたが、muninをインストールすれば、将来のデバッグに役立ちます。
Sudo sysctl vm.block_dump=1
次に、dmesgをチェックして、ブロックの読み取り/書き込みを実行しているもの、またはiノードをダーティにしているものを確認します。
また、limits.confのnofile制限を確認してください。プロセスが、開くことが許可されているよりも多くのファイルを要求している可能性があります。
他のvirtualマシンがハードディスクに負荷をかけていない場合は、
hdparm -f
基礎となる物理ディスク上。ディスクキャッシュが正確に機能しない可能性があります。これにより、キャッシュに格納されているデータがフラッシュされ、フラッシュ後に再び上昇するかどうかをI/Oを常に監視できます。はいの場合は、キャッシュの問題です。
負荷平均によって、ブロックされたネットワーク操作(つまり、外部DBサーバーへの長い呼び出し)が増加するのを目にしました。確かではありませんが、ネットワークを推測しますIOは、CPUの待機を引き起こす可能性がありますか?誰でも確認できますか?
ループバックデバイスである可能性があり、ネットワーク自体にマウントされます。
私のマシンでは、NFSが最大のIO-WAIT「プロデューサー」です。私はラップトップにSSDを搭載していますが、これは非常に高速なので、「実際のIO」は問題ではありません。それにもかかわらず、マウントされたnfs共有のために、IO待機することが時々あります。
SCPは時々IO待つことにもつながりますが、はるかに少ない範囲につながるようです。
RAIDのディスクに障害が発生したおよびいくつかの曲がりのあるSATAケーブルが失敗し始める直前にも、同様の問題が発生しました。
CPU使用率はほぼ0%でしたが、4コアシステムの1つ以上のCPUが、IOwaitで100%の時間を長時間(top
マルチラインCPUディスプレイを介して)費やして、低いIOpsと帯域幅(iostat
で見つかります)が、バースト性の高い割り込みアクティビティ。対話型のコマンドラインの使用は、ディスクアクセス中(つまり、誰かのemacs
セッションからの自動保存)に苦痛でしたが、IOwaitの期間が経過すると(そして、多くの再試行後に操作が成功したと考えられる場合)、それ以外の点では許容できました。
これは何でもかまいません。これは、I/O操作の終了を待っている何かがあることを意味します。 psを介してそれがどのプロセスであるかを理解し、それにgdbをアタッチし、バックトレースをチェックして、ハングしている呼び出しを特定できます(通常、これはネットワーク関連の問題または突然切断されたディスクです)。 fd情報については、/ procを確認してください。