问题:是否有一个实用程序(命令行或GUI)将回答"是什么让我的Mac现在变得缓慢?"
我可以看到CPU
百分比和RPRVT
与top
或ActivityMonitor.app
。 Activity Monitor
会向我显示汇总 i / o信息 - 但它不会向我显示每个进程的i / o或i / o延迟。有一些dtrace脚本,例如iotop
,iosnoop
和dtruss
,它们会向我显示i / o信息。当然,还有fs_usage
。并stackshot
。等等,等等。
注意:我在StackOverflow上发布此问题 - 而不是AskDifferent或SuperUser - 因为我认为这是一个编程问题,而不仅仅是user / sysadmin问题。额外的点:命令行,开源,hackable和/或dtrace脚本。
总结一下,评论中的讨论:
我想要一个监视器 最近&某种方式瞬时 CPU 和 I / O 加载(数量,延迟)这两者都是:
统一(即两者都在同一个显示屏中)和
可操作(告诉我哪些流程会产生上述负载)。
答案 0 :(得分:2)
看一下Brendan Gregg的幻灯片,了解一些策略:http://www.slideshare.net/brendangregg/analyzing-os-x-systems-performance-with-the-use-method
虽然我相信你已回答了自己的问题。 dtrace正是您正在寻找的工具。
dtrace允许您观察系统中发生的所有。
它的运行原理是在运行的软件中动态插入探针,可以报告有关发生的各种数据。
您提到的脚本只是一个小而有用的起点。 我不认为有一个dtrace脚本已经完全符合你的要求,但编写一个并不是非常困难。您需要做的是学习如何编写D脚本,并了解您想要使用哪些探针来获取您所寻求的信息。您可以编写聚合数据的探针,并且可以编写提供实时信息的探针。它取决于你,天空真的是极限。
我首先来看一下这里的一些工具:http://www.brendangregg.com/dtracetoolkit.html 并了解他们的工作以及他们的工作方式,您应该能够自己构建自己需要的工具。
D语言本身有点像C语言,如果您熟悉任何基于C的语言,那么相当容易理解。但即使你不是用D写作,也有一些非常有用的一个衬里可以进入你的系统,并为你提供你所寻求的信息。
学习如何使用dtrace和D的另一个好处是,有很多很多应用程序层的探测器,比如mysql,php,javascript,ruby,perl,java等等。它就像一个表演分析工具可以真正深入。例如:这个简单的oneliner向我展示了我的服务器运行的所有mysql查询:
sudo dtrace -n 'mysql*:::query-start { trace(copyinstr(arg0)) }'
TL; DR dtrace可以告诉您在OSX系统上发生的任何。你只需要学习如何问它。
答案 1 :(得分:1)
查看与Developer Tools for mac(即Xcode)捆绑在一起的Instruments.app
。特别是Activity Monitor。
此外,我建议您浏览这个应用程序,因为它有很多有用的模板,您甚至可以使用自己的dtrace脚本扩展它。