如何在 Mac 上跟踪和记录 CPU 和内存使用情况?

如何在 Mac 上跟踪和记录 CPU 和内存使用情况?

我知道我可以使用活动监视器(以及大量第三方应用程序)来监视 Mac 上的 RAM 和 CPU 使用情况。但是,我想捕获一段时间内的日志,以便可以比较进程之间的使用情况,而无需截屏等。类似控制台的东西,如下所示:

Process A (5:22 - 5:32)

5:22:01: 2.2% CPU, 5 Threads, 111.1MB Real Mem  
5:22:03: 2.1% CPU, 4 Threads, 90.4MB Real Mem  
...

我怎样才能做到这一点?

答案1

这可能不会相当击中目标,但尝试这样做:

sar -o ~/output.sar 10 10 

这样会以 10 秒为间隔收集 10 组指标。然后您可以从输出文件中提取有用的信息(即使它仍在运行),例如,这将为您提供采样间隔内的磁盘活动:

sar -d -f ~/output.sar

做一个man sar来找出还有哪些其他选择。

编辑:

sar不执行内存,因此这将以十秒的间隔获取系统上的可用内存:

vm_stat 10 | awk 'NR>2 {gsub("K","000");print ($1+$4)/256000}'

您可以将其重定向至文件。

如果您需要更多信息,请询问。

答案2

你可以使用 Python 程序记录进程的 CPU 和内存使用情况,但不能记录线程数糖浆状

Syrupy 是一个 Python 脚本,它定期对一个或多个正在运行的进程的内存和 CPU 负载进行快照,以便动态地建立它们对系统资源使用情况的配置文件。

Syrupy 有两种工作模式。第一种(默认)模式中,它监控执行用户指定命令(可以是任何可从 shell 终端调用的程序和参数的任意复杂组合)导致的进程的资源使用情况。第二种模式中,Syrupy 监控满足用户指定条件的外部运行进程的资源使用情况:PID(进程标识符)编号或与正则表达式模式匹配的命令字符串。

无论哪种情况,对系统资源使用情况的监控都是基于对系统命令的重复调用ps

对于您的用例,记录每个正在运行的进程,我认为这个命令会起作用:

syrupy.py --poll-command='.*'

答案3

您可以使用top和传输数据到awkgrep读取您需要的特定信息。

在这里查看;http://ss64.com/mac/top.html

top实际上是活动监视器所建立的底层工具。

相关内容