使用ZFS在Solaris上运行iostat – 为什么wait和%w总是为零?

我们有一个繁忙的服务器,至less在高IO负载下,这是我的感觉。 iostat -xz输出如下所示:

  extended device statistics device r/sw/s kr/s kw/s wait actv svc_t %w %b sd5 224.8 157.8 10701.8 6114.7 0.0 9.5 24.7 0 100 sd5 243.2 110.4 11565.3 4065.0 0.0 9.7 27.5 0 100 

很显然,磁盘子系统过载,因为一个6驱动器的SATAarrays25毫秒的服务时间是不可接受的,100%的忙也意味着我们在磁盘IO上堵塞。

但是 – 为什么总是wait 0.0 ? 为什么%w也是0? %w有时会变为1 ,并很快返回到0 。 这是不是意味着没有进程正在等待IO?

RAID控制器不知何故导致这个结果/掩盖了等待时间?

有人可以解释这种行为吗?

svc_t时间以毫秒为单位衡量“往返”:

操作系统的“底部” – 磁盘子部分 – 操作系统的“底部”

“100%繁忙意味着我们在磁盘IO上堵塞”并不完全正确。 这意味着磁盘在100%的时间内忙于做某事,不一定不能超过这个时间,也不能及时提供请求(这是一个微妙的差别)。

通常超载磁盘的症状是%w列和actc(稳定超过200)的高值。

这可能是延迟问题吗? 系统是否请求大量随机操作,以便控制器花时间查找第6个数据块?

是的,我认为你在RAID控制器中弄错了数字是正确的。 如果它告诉驱动程序一旦请求就开始操作,驱动程序将不知道它仍在等待RAID控制器内的磁盘硬件。 你能直接从RAID控制器上取得统计数据吗?