活动监视器不支持实时追踪底层系统原语,仅提供进程级资源统计;需用dtrace、fs_usage或Instruments等内核事件级工具进行系统调用级观测。活动监视器本身**不提供对底层系统原语(如系统调用、内核函数、mach trap、BSD syscall 等)的实时追踪能力**。它面向的是进程级资源视图——CPU 时间、内存占用、能耗、磁盘读写量、网络连接数等,所有数据均来自内核导出的统计摘要,而非逐条捕获原始系统调用。 如果你的目标是“实时追踪各类底层系统原语调用”,你需要的是**内核事件级观测工具**,而非活动监视器。以下是更匹配的方案:
用 dtrace 或 instruments 追踪系统调用
macos 原生支持 dtrace(需启用开发者模式),可精确捕获 syscall 进入/退出、文件操作、网络收发等原语:
- 查看所有进程的 open/read/write 调用:
sudo dtrace -n 'syscall::open*:entry { printf("%s %s", execname, copyinstr(arg0)); }' - 追踪特定进程(如 Safari)的全部系统调用:
sudo dtrace -p $(pgrep Safari) -n 'syscall:::entry { @calls[probefunc] = count(); }'
用 fs_usage 监控文件系统原语
fs_usage 是 macOS 自带命令行工具,专用于实时捕获文件 I/O 相关系统行为(本质是 vnode 层和 VFS 层原语):
- 显示所有进程的文件操作(需 root):
sudo fs_usage - 聚焦某个 App 的磁盘行为:
sudo fs_usage TextEdit - 启用宽屏+时间戳,便于分析延迟:
sudo fs_usage -w -t
用 instruments 中的 System Trace 模板
在 Xcode → Developer Tools → Instruments 中选择 System Trace,可图形化捕获:
- 每个线程的系统调用栈(含 mach_msg、semaphore_wait、pthread_mutex_lock 等)
- 内核态与用户态切换点、锁竞争、I/O 等待时长
- 支持按进程、线程、符号名过滤,支持录制后深度回溯
活动监视器能做什么(作为补充)
它适合快速定位“谁在消耗资源”,为深入追踪提供线索:
- 在“CPU”标签页按 % CPU 排序,找到高负载进程,再用
fs_usage或instruments定向分析 - 在“能量”标签页查看“唤醒频率”“平均能耗”,识别异常后台唤醒源(可能由定时器或 I/O 触发)
- 在“磁盘”标签页观察“读取/写入(字节)”,判断是否真有密集文件操作,再决定是否启用
fs_usage











