MacOS下与Linux的perf stat等效的性能分析工具是什么?
macOS(M1)下替代Linux perf stat的命令行性能分析工具
如果你需要在M1 MacBook上用原生命令行工具替代perf stat,统计缓存命中率、页错误这类指标,以下几个系统自带工具可以满足需求:
1. taskinfo
这是最接近perf stat使用体验的工具,直接针对单个进程输出性能统计,包括页错误、L1/L2缓存命中/未命中数据。
- 实时监控已有进程:
sudo taskinfo -p <进程PID> - 启动程序并统计:
sudo taskinfo -c "./你的程序"
输出里会明确列出Page Faults(页错误)、L1 Data Cache Misses、L2 Cache Misses等关键指标,你可以直接计算缓存命中率。
2. dtrace
macOS原生的动态追踪工具,灵活性极强,能自定义脚本捕获几乎所有硬件和软件事件,包括缓存操作、页错误。
比如统计目标程序的页错误次数,可以用这个脚本(保存为page_fault.d):
#!/usr/sbin/dtrace -s proc:::exec-success /execname == "你的程序名"/ { self->trace = 1; } proc:::exit /self->trace/ { self->trace = 0; } vm:::fault /self->trace/ { @page_faults[execname] = count(); }
运行方式:sudo dtrace -s page_fault.d -c "./你的程序"
针对M1的缓存事件,你可以用dtrace -l | grep cache查看可用的缓存相关探针,或者直接访问CPU性能计数器(需root权限)来统计命中/未命中次数。
3. sysctl
适合查看系统级的全局缓存和页错误统计,不是针对单个进程,但能帮你了解整体系统状态:
- 查看系统累计页错误:
sysctl vm.page_faults - 查看缓存硬件信息:
sysctl hw.cache(M1下会输出L1/L2缓存的大小、关联度等参数)
这些工具都是macOS自带的,不需要额外安装。如果追求易用性优先选taskinfo,需要自定义统计逻辑就用dtrace。
内容的提问来源于stack exchange,提问作者Marcus Müller




