2016-02-05 105 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 –