web-dev-qa-db-ja.com

iostatが100%ビジー待機を示しているが、CPUが完全にアイドル状態であるとはどういう意味ですか?

Iostatが100%ビジー待機を示しているが、CPUが完全にアイドル状態であるとはどういう意味ですか?私のアプリケーションはしばらく実行された後、約10〜20秒間定期的にこの状態になります。

これは、Solaris10でのトランザクション処理C++アプリです。

IO stat output:
                  extended device statistics                       cpu
device      r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b  us sy wt id
c0          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0   0  0  0 100
sd1         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd2         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd3         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd4         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
c1          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd0         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
c6          0.0    0.0    0.0    0.0  0.0  1.0    0.0   0 100 
sd19        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd19.fp2    0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd19.fp4    0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd20        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd21        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd22        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd23        0.0    0.0    0.0    0.0  0.0  1.0    0.0   0 100 
sd24        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd25        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd26        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd27        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
nfs1        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 

vmstat出力:

kthr      memory            page            disk          faults      cpu 
r b w   swap  free  re  mf pi po fr de sr s0 s1 s2 s3   in   sy   cs us sy id 
0 0 0 10842364 33093436 30 188 0 0 0 0 65 -0  2  3 -0 1327  843  709  0  1 99 
0 0 0 3406728 28181464 71 3601 0 0 0 0  0  0  0  0  0 1372 23009 1584 4  0 96 
0 0 0 2702996 28030080 0 740 0 0  0  0  0  0  0  0  0 1414 15002 2065 6  0 93 
0 0 0 2699448 28016628 0 3  0  0  0  0  0  0  0  0  0 1747 3012 2193  9  1 90 
0 0 0 2691728 28009844 0 1  0  0  0  0  0  0 10 10  0 2315 1300 2877  2  0 97 
0 1 0 2679788 27957836 0 5033 0 0 0  0  0  0  1  1  0 1895 1945 2658 10  0 90 
0 2 0 2654188 27907196 0 0  0  0  0  0  0  0  1  1  0 3566 3788 5495  2  0 98 
5
sean riley

これは、負荷の原因がIO待機であり、CPUの競合ではないことを意味します。したがって、ハードドライブへのアクセス、NFS共有へのアクセス、スワップスペース(したがって(通常は)ローカルハードドライブ)へのアクセスです。 ..純粋なネットワークアクセスがこれに寄与するかどうかはわかりませんが、私の腸はノーと言います。NFSはFSレイヤーを使用するため、追加するだけです。「top」には通常「待機」があります。通常これを示す「または「iowait」パーセンテージ。

9
jj33

IO統計は100%であってはなりません。ディスクIOが大量にある場合は、50%を超える高さになる可能性がありますが、正確に100%は通常、IOサブシステムに問題があることを意味します。これは、私が行ったときに発生しました。障害の初期段階でハードドライブがあり、ディスクが要求に応答するのに時間がかかるが、それでも応答する。

または、それは単に非常にひどく書かれたアプリケーションである可能性があります。単純なDTraceスクリプトで、それがどれであるかがわかります。

1
Craig Lewis

IO負荷が非常に高くなる可能性があるのは、ページングです。アプリケーションがすべての物理メモリを消費し、マシンのページングをハードにしていますか?

vmstat 5

si列とso列に0以外のものが表示されている場合は、マシンがページングしている(おそらく大量に)。

0
Dave Cheney