如果 iostat 显示 100% 忙等待但 CPU 完全空闲,这意味着什么?

sea*_*ley 5 solaris central-processing-unit iostat

如果 iostat 显示 100% 忙等待但 CPU 完全空闲,这意味着什么?我的应用程序运行了一段时间,然后定期进入此状态大约 10-20 秒。

它是 solaris 10 上的事务处理 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 
Run Code Online (Sandbox Code Playgroud)

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 
Run Code Online (Sandbox Code Playgroud)

jj3*_*j33 9

这意味着负载是由于 IO 等待,而不是 CPU 争用。因此,访问硬盘驱动器、访问 NFS 共享、访问交换空间(因此(通常)是本地硬盘驱动器......我不确定纯网络访问是否对此有所贡献,但我的直觉说没有。NFS 只是添加因为它使用 FS 层。“top”通常有一个“wait”或“iowait”百分比,通常会显示这一点。