使用 ZFS 的 Solaris 上的 iostat - 为什么 wait 和 %w 始终为零?

使用 ZFS 的 Solaris 上的 iostat - 为什么 wait 和 %w 始终为零?

我们的服务器很忙,IO 负载很高,至少我的感觉是这样的。输出iostat -xz如下:

             extended device statistics                 
device    r/s    w/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 驱动器 SATA 阵列而言,25ms 的服务时间是不可接受的,而 100% 的繁忙也意味着我们的磁盘 IO 被堵塞了。

但是 - 为什么总是wait0.0为什么%w也是 0?%w有时会变为1,然后很快返回0。这是否意味着没有进程在等待 IO?

RAID 控制器是否会以某种方式导致此结果/掩盖等待时间?

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

答案1

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

操作系统的“底层” - 磁盘子系统 - 操作系统的“底层”

“100% 繁忙意味着磁盘 IO 拥堵”这一说法并不完全正确。这意味着磁盘 100% 的时间都在忙于做某事,并不一定意味着它不能做更多的事情,也不一定意味着它不能及时处理请求(这是一个微妙的区别)。

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

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

答案2

是的,我认为你说的没错,RAID 控制器弄乱了数字。如果它在收到请求后立即告诉驱动程序操作已开始,则驱动程序将不知道它仍在等待 RAID 控制器内的磁盘硬件。你能直接从 RAID 控制器中提取统计数据吗?

相关内容