2

问题:是否有一个实用程序(命令行或 GUI)可以回答“是什么让我的 Mac 现在变慢了?”

我可以看到CPU百分比和RPRVTwith topor ActivityMonitor.app。并且Activity Monitor会显示聚合i/o 信息——但不会显示每个进程的 i/o 或 i/o 延迟。有 dtrace 脚本,例如iotop, iosnoopdtruss它们会显示 i/o 信息。当然,还有fs_usage. 和stackshot。等等等等等等!!!

注意:我在 StackOverflow 上发布了这个问题——而不是说 AskDifferent 或 SuperUser——因为我认为这是一个编程问题,而不仅仅是一个用户/系统管理员问题。加分项:命令行、开源、可破解和/或 dtrace 脚本。

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

我想要一个实用程序来监视 最近瞬时的 CPUI/O负载(数量延迟),其方式是:

统一(即,两者都在同一个显示器中),以及

可操作的(通过告诉我哪些进程会产生上述负载)。

4

2 回答 2

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 系统上发生的任何事情。你只需要学习如何问它。

于 2014-06-11T01:36:20.033 回答
1

看看Instruments.app与 Mac 的开发者工具(即 Xcode)捆绑在一起的那个。特别是活动监视器

此外,我建议您探索这个应用程序,因为它有很多有用的模板,您甚至可以使用自己的 dtrace 脚本对其进行扩展。

于 2014-06-11T19:19:07.387 回答