2016-02-05 104 views
1

我需要获取Sun Solaris 10和11上的磁盘/驱动器的I/O速率。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))

感谢您的任何帮助!

回答

3

Solaris不使用/proc进行统计。 Solaris统计信息由kernel statistic facility通过ioctl()调用/dev/kstat提供。您可以使用kstat command来查看它们,并且您可以运行kstat -l以列出可用的统计信息。

要了解如何直接从Java访问的kstats,看到这一点:http://www.petertribble.co.uk/Solaris/jkstat.html

JKstat

JKstat为Java应用程序来访问 的Solaris kstat的JNI接口。

如果你想知道如何,Solaris工具如iostat工作,你可以在Illumos.org浏览(现在老了)的OpenSolaris存储库,也可以truss下运行该命令,看看有什么系统调用它使。

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

+0

Brendan Gregg的DTrace Toolkit在展示如何提取这些信息时非常有用。 http://www.brendangregg.com/dtracetoolkit.html –