iostat花费很多时间返回

我有一个带有大量SAN磁盘的solaris 10服务器(在所有path中接近1000)。 iostat -En需要接近5分钟才能返回。 有没有办法找出是什么造成延误? 桁架没有太大的帮助。

dtrace绝对是你正在寻找的工具。 你可以使用一个相对简单的脚本来找出哪个系统调用是最耗时的。

像这样的东西:

 #!/usr/sbin/dtrace -s syscall:::entry /execname == "iostat"/ { self->ts = vtimestamp; } syscall:::return /self->ts/ { @[probefunc] = sum(vtimestamp - self->ts); @["- all syscalls -"] = sum(vtimestamp - self->ts); self->ts = 0; } profile:::tick-1sec /i++ >= 59/ { exit(0); } 

此外,您可以使用DTrace工具包 ,可能会发现一些准备使用和更合适的地方。

一旦你确定了系统调用,你将能够做更多的调查。