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

时间:2016-02-05 10:39:42

标签: monitoring solaris query-performance procfs iostat

我需要在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))

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

Solaris不会将/proc用于统计信息。 ioctl()通过/dev/kstat kstat -l来调用Solaris统计信息。您可以使用kernel statistic facility查看这些内容,然后运行iostat列出可用的统计信息。

要了解如何直接从Java访问kstats,请参阅:kstat command

  

<强> JKstat

     

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

如果您想知道诸如dtrace之类的Solaris工具如何工作,您可以在http://www.petertribble.co.uk/Solaris/jkstat.html浏览(现在旧的)OpenSolaris存储库,或者您可以在Illumos.org下运行命令看看它调用了什么系统。

如果您真的想深入观察正在发生的一切以及它在Solaris上的情况,请查看dtrace。使用SELECT MAX(col) FROM table WHERE col < (SELECT MAX(col) FROM table) ,您不仅可以知道每个磁盘上执行了多少IO操作,还可以从每个磁盘中获取详细信息,例如字节数以及磁盘写入/读取的位置。 / p>