dtrace¶
dtrace
是一个功能强大的 Mac OS X 内核检测系统,可用于分析唤醒事件。本文对其进行了简单的介绍。
::: 注意:如果您还没有阅读功耗分析概述,建议您先阅读。它可能会使本文档的某些部分更容易理解。::
调用¶
dtrace
必须以超级用户身份调用。用于分析唤醒事件的良好起始命令如下所示。
sudo dtrace -n 'mach_kernel::wakeup { @[ustack()] = count(); }' -p $FIREFOX_PID > $OUTPUT_FILE
让我们进一步分解它。
-n
选项与mach_kernel::wakeup
结合使用,选择了一个探测点。mach_kernel
是模块名称,wakeup
是探测名称。您可以通过运行sudo dtrace -l
查看探测点的完整列表。花括号之间的代码在探测点命中时运行。以上代码在唤醒发生时计算唯一堆栈跟踪;
ustack
是“用户堆栈”的缩写,即正在执行的用户空间程序的堆栈。
运行该命令几秒钟,然后按 [Ctrl]{.kbd} + [C]{.kbd} 中断它。dtrace
然后会将多个堆栈跟踪打印到输出文件,以及每个堆栈跟踪的唤醒次数。堆栈跟踪的顺序可能不明显,因此请仔细查看它们。
有时堆栈跟踪的信息比预期少。目前尚不清楚如何改进这一点。
另请参阅¶
dtrace
非常强大,您可以通过查阅以下资源了解更多信息。