![如何在 Mac 上跟踪和记录 CPU 和内存使用情况?](https://linux22.com/image/1359228/%E5%A6%82%E4%BD%95%E5%9C%A8%20Mac%20%E4%B8%8A%E8%B7%9F%E8%B8%AA%E5%92%8C%E8%AE%B0%E5%BD%95%20CPU%20%E5%92%8C%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5%EF%BC%9F.png)
我知道我可以使用活动监视器(以及大量第三方应用程序)来监视 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='.*'