c - 使用 dtrace 计算随时间变化的平均和最大磁盘读/写队列的示例

标签 c macos dtrace

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

最佳答案

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

您可以在这些平台之一上查看 dtrace 命令的源代码,或者您可以查看库的某些包装器的源代码,例如 node-libdtrace .我推荐后者,因为它只是一个提供重要高级操作的包装器,这应该可以更轻松地确定哪些代码执行哪些操作。

关于c - 使用 dtrace 计算随时间变化的平均和最大磁盘读/写队列的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13222305/

相关文章:

c - 包含内部指针的 union 的内存分配如何

c - C 编程中覆盖寄存器 int 失败

windows - 是否可以从 Windows 以低色深连接到 Mac OS X 10.5 Leopard 的内置 vnc 服务器?

macos - 您能否在 DTrace 中以多 CPU 安全的方式比较探针之间的值?

dtrace - opensnoop 具有跟随子模式

dtrace - 除了使用 walltimestamp 变量之外,还有其他更好的方法来显示挂钟时间吗?

C 程序在从 Flask 服务器获得响应时挂起

c++ - 如何从 s64 值中删除前 3 个字节和最后一个字节?

java - 如何在 Mac OS X 中使用带有 Java 的 Windows DLL?

objective-c - NSMenuItem、自定义 View 和 mouseUp 的奇怪问题 :