dtrace 编辑
dtrace
is a powerful Mac OS X kernel instrumentation system that can be used to profile wakeups. This article provides a light introduction to it.
Note: The power profiling overview is worth reading at this point if you haven't already. It may make parts of this document easier to understand.
Invocation
dtrace
must be invoked as the super-user. A good starting command for profiling wakeups is the following.
sudo dtrace -n 'mach_kernel::wakeup { @[ustack()] = count(); }' -p $FIREFOX_PID > $OUTPUT_FILE
Let's break that down further.
- The
-n
option combined with themach_kernel::wakeup
selects a probe point.mach_kernel
is the module name andwakeup
is the probe name. You can see a complete list of probes by runningsudo dtrace -l
. - The code between the braces is run when the probe point is hit. The above code counts unique stack traces when wakeups occur;
ustack
is short for "user stack", i.e. the stack of the userspace program executing.
Run that command for a few seconds and then hit Ctrl + C to interrupt it. dtrace
will then print to the output file a number of stack traces, along with a wakeup count for each one. The ordering of the stack traces can be non-obvious, so look at them carefully.
Sometimes the stack trace has less information than one would like. It's unclear how to improve upon this.
See also
dtrace is very powerful, and you can learn more about it by consulting the following resources:
- The DTrace one-liner tutorial from FreeBSD.
- DTrace tools, by Brendan Gregg.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论