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

Ven*_*eki 4 solaris

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

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

2627 user   cpu
62008 system cpu
285180 idle   cpu
**0 wait   cpu**
Run Code Online (Sandbox Code Playgroud)

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

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

jll*_*gre 8

不,最后一行不报告 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 相同。