1

我需要获取 Sun Solaris 10 和 11 上磁盘/驱动器的 I/O 速率。

有一个命令行工具“iostat”可以准确地返回我需要的东西。但是这个输出是格式化的,而不是以一种干净的机器可读的方式。
除此之外,我不想在需要此信息的 java 程序中执行二进制文件。

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

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

谢谢你的帮助!

4

1 回答 1

3

Solaris 不/proc用于统计。Solaris 统计信息由内核统计工具通过ioctl()调用 on 提供/dev/kstat。您可以使用kstat命令查看它们,并且可以运行kstat -l以列出可用的统计信息。

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

JKstat

JKstat 为 Java 应用程序提供了一个 jni 接口来访问 Solaris kstats。

如果您想了解诸如 Solaris 工具之类的工作原理,您可以浏览Illumos.orgiostat上的(现在是旧的)OpenSolaris 存储库,或者您可以运行下面的命令来查看它进行了哪些系统调用。truss

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

于 2016-02-05T12:16:28.107 回答