使用dtrace计算一段时间内平均和最大磁盘读/写队列的示例

时间:2012-11-04 19:58:43

标签: c macos dtrace

我需要在Mac OSX上读取磁盘队列长度(分别用于读取和写入操作)。我已经得出结论,这可能只能通过dtrace完成(我很高兴在这里做错了,但我没有找到任何方式这样做不同)。提供此信息的唯一方法是iopending dtrace脚本。我需要能够在我的C程序中访问它提供的信息(或者更确切地说能够实现其逻辑)。 libdtrace的使用非常神秘(考虑私有API),作为整体dtrace业务。有没有任何例子(除了一些我发现哪些不回答我的问题 - libdtrace buffered outputhttp://www.osdevcon.org/2008/files/osdevcon2008-petr.pdf)哪些可以帮助我?

1 个答案:

答案 0 :(得分:0)

直接使用libdtrace可能有点毛茸茸,因为它在技术上是一个私有API,但您可以在其他DTrace使用者中找到示例。 libdtrace在支持它的所有平台(Mac OS,Solaris,FreeBSD)上基本相同,因此API非常稳定。但是,Solaris会获得更多更新,而且IIRC Mac OS不支持其他平台上提供的所有功能。但是,这会为您提供更多示例。

您可以在其中一个平台上查看dtrace命令的源代码,也可以查看某些库的包装器的源代码,例如node-libdtrace。我推荐后者,因为它只是一个提供重要高级操作的包装器,这样可以更容易找出哪些代码可以做什么。