计算 Solaris 上的 CPU I/O 等待时间

计算 Solaris 上的 CPU I/O 等待时间

我正在寻找从 Solaris VM 获取 CPU I/O 等待时间指标的命令。

我发现vmstat -s给出了以下输出。

2627 user   cpu
62008 system cpu
285180 idle   cpu
**0 wait   cpu**

我查看了 的手册页vmstat,但我看不到任何有关等待时间的文字。

我可以将上面输出中的最后一行假设为 I/O 等待时间吗?

答案1

不,最后一行不报告 I/O 等待时间,而是硬编码为在 Solaris 上显示零,无论实际负载如何。

随着多核和多线程CPU的普及,I/O wait时间不再具有真正的意义,甚至有可能产生误导。 I/O 通常不绑定到单个 CPU 单元,因此当其中一个或多个待处理时,没有特定的 CPU 等待 I/O。在任何情况下,只有进程在等待 I/O 完成,这种等待不使用任何 CPU 周期,因此从技术上讲,CPU 在此期间处于空闲状态并可用于其他任务。从 Solaris 10 开始,与空闲时间不可区分的 I/O 被报告为零,然后以前的值I/O wait现在包含在 CPU 空闲时间中,事实确实如此。

如果您担心 I/O,请查看磁盘统计信息iostat(例如iostat -xntc 5,查看服务时间svc_t、等待队列中的 I/O 数量wait以及队列不为空的时间百分比%w),而不是报告的 CPU 统计信息通过vmstatsartopiostat等。

本文还可能对调查 I/O 性能问题感兴趣:http://dtrace.org/blogs/brendan/2011/05/11/file-system-latency-part-1/

这个正在解释这个问题与 Linux 相同。

答案2

vmstat 更可能用于测量虚拟内存使用情况,因此更好的建议是使用iostatsar

iostat:

iostat 1 3
   tty        sd2          ssd35         ssd38         ssd39           cpu
 tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy wt id
   0    0   0   0    0  162   7   18  1513  24    6    0   0    0   41 27  0 32
   0  236   0   0    0    0   0    0    0   0    0    0   0    0   51 27  0 21

您应该注意 cpu 字段:us - 有多少应用程序正在使用,sy - 操作系统,wt - 等待时间,id - CPU 的中间时间

萨尔:

sar -u 1 2

SunOS frctfscc16p 5.10 Generic_150400-35 sun4u    08/17/2016

09:29:02    %usr    %sys    %wio   %idle
09:29:03      39      22       0      39
09:29:04      32      21       0      47

Average       36      21       0      43

在这种情况下,您可以看到与 iostat 基本相同,由您选择,还有其他工具,但我更喜欢 sar,因为它可以及时为您提供良好的指标。

相关内容