我想找出哪些数据库/进程正在使用哪个磁盘组。 我被告知我们的磁盘I / O开始变得相当高。 我在运行Solaris 10的Solaris机器上(Sun-Fire 15000)。
幸运的是,您正在使用Solaris,因此您可以使用dtrace 。 一两个衬里会给你一些很好的数据,可能会让你接近你想要的。 你也希望使用ZFS(如果没有,为什么不呢?)。
显示进程读取的字节数:
dtrace -n 'sysinfo:::readch { @bytes[execname] = sum(arg0); }'
显示进程写入的字节:
dtrace -n 'sysinfo:::writech { @bytes[execname] = sum(arg0); }'
显示进程打开的文件:
dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'
find哪些磁盘忙碌:
zpool iostat -v 2
你必须自己解释这些数据,但是使用前两个命令可以看到哪些进程正在使用大量的I / O。 使用第三个查看哪些文件经常打开,从而查看包含它们的zpool。 将其与zpool iostat相关联,以查看它们在哪个vdevs上。
通过一些技巧和练习,你可以创build一个dtrace脚本,一次完成。