Mac OS X:什么让我的系统现在变慢?

时间:2014-06-05 15:40:23

标签: macos performance debugging dtrace energy

问题:是否有一个实用程序(命令行或GUI)将回答"是什么让我的Mac现在变得缓慢?"

我可以看到CPU百分比和RPRVTtopActivityMonitor.appActivity Monitor会向我显示汇总 i / o信息 - 但它不会向我显示每个进程的i / o或i / o延迟。有一些dtrace脚本,例如iotopiosnoopdtruss,它们会向我显示i / o信息。当然,还有fs_usage。并stackshot。等等,等等。

注意:我在StackOverflow上发布此问题 - 而不是AskDifferent或SuperUser - 因为我认为这是一个编程问题,而不仅仅是user / sysadmin问题。额外的点:命令行,开源,hackable和/或dtrace脚本。

总结一下,评论中的讨论:

我想要一个监视器 最近&某种方式瞬时 CPU I / O 加载(数量延迟)这两者都是:

统一(即两者都在同一个显示屏中)和

可操作(告诉我哪些流程会产生上述负载)。

2 个答案:

答案 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脚本扩展它。