Sun Solaris 10/11:以机器可读的方式获取磁盘 i/o 速率

Sun Solaris 10/11: get disk i/o rates in machine readable way

我需要获取 Sun Solaris 10 和 11 上 disks/drives 的 I/O 速率。

命令行工具 "iostat" 正是我所需要的 returns。但是这个输出是格式化的,而不是以一种干净的机器可读的方式。
除此之外,我不想从需要此信息的 java 程序中执行二进制文件。

在 Linux 中有 /proc/diskstats 做得很好。但是在Solaris上似乎不支持这种机制。

我实际上对 Solaris 总体上没有太多了解。通过互联网搜索并没有给我一些关于如何获取磁盘的提示 i/o(除了 iostat、sar 等命令行工具,...(例如 https://docs.oracle.com/cd/E23824_01/html/821-1451/spmonitor-4.html))

感谢您的帮助!

Solaris 不使用 /proc 进行统计。 Solaris 统计信息由 kernel statistic facility via ioctl() calls on /dev/kstat. You can use the kstat command 提供以查看它们,您可以 运行 kstat -l 列出可用的统计信息。

要了解如何直接从 Java 访问 kstats,请参阅:http://www.petertribble.co.uk/Solaris/jkstat.html:

JKstat

JKstat provides a jni interface for Java applications to access Solaris kstats.

如果您想了解 iostat 等 Solaris 工具的工作原理,您可以浏览位于 Illumos.org, or you can run the command under truss 的(现在很旧的)OpenSolaris 存储库,查看它进行了哪些系统调用。

如果您真的想深入观察 Solaris 上正在发生的一切以及它是如何发生的,请查看 dtrace。使用 dtrace 你不仅可以知道每个磁盘上完成了多少 IO 操作,你还可以从每个操作中获取详细信息,例如字节数和它在磁盘上的写入位置 to/read .