2012-11-04 49 views
2

我需要在Mac OSX上讀取磁盤隊列長度(分別用於讀寫操作)。我已經得出結論,這可能只能通過dtrace完成(我很高興在這裏出錯,但是我沒有找到任何其他方式做這件事)。提供這些信息的唯一方法是iopending dtrace腳本。我需要能夠在C程序中訪問它提供的信息(或者說能夠實現其邏輯)。作爲整體dtrace業務,libdtrace的使用非常神祕(考慮私有API)。有沒有任何例子(除了一些我找到了哪些不回答我的問題 - libdtrace buffered outputhttp://www.osdevcon.org/2008/files/osdevcon2008-petr.pdf)哪些可以幫助我?使用dtrace計算平均和最大磁盤讀寫隊列的示例

+0

DTrace和libdtrace都是獨立的東西。你在說哪一個? – askmish

+0

不要忘記接受它是否有助於回答您的問題,如果您需要更多信息,請不要害怕發表評論。謝謝! – Dan

回答

0

直接使用libdtrace可能有點多毛,因爲它在技術上是一個私有API,但您可以在其他DTrace使用者中找到示例。在支持它的所有平臺(Mac OS,Solaris,FreeBSD)上,libdtrace基本相同,因此API非常穩定。不過,Solaris可以獲得更多更新,而IIRC Mac OS不支持其他平臺上提供的所有功能。但是,這給你更多的例子。

您可以在其中一個平臺上查看dtrace命令的源代碼,也可以查看庫的某些包裝的源代碼,如node-libdtrace。我推薦後者,因爲它只是一個提供重要高級操作的包裝器,它應該能夠更簡單地找出哪些代碼做了什麼。