要查历史系统调用频率,需确认sysstat是否启用-c采集:检查sadc_options含-s call或all,再用sar -c -f读取对应sa文件;默认不记录,旧数据不可补录。

要查历史系统中系统调用的调用频率,关键不是“实时运行 sar -c”,而是读取 sysstat 服务已采集并归档的历史数据——前提是系统早已启用并持续记录了该指标。
确认系统是否保存过系统调用历史数据
系统调用统计(-c 选项)默认不开启日志轮转。即使 sysstat 服务在运行,默认配置通常只记录 CPU、内存、I/O 等基础项,不包含 -c 数据。
- 检查当前采集配置:cat /etc/sysconfig/sysstat | grep SADC_OPTIONS
- 若输出中不含
-S CALL或-S ALL,说明过去没存系统调用数据 - 查看已有归档是否含 -c 内容:sar -c -f /var/log/sa/sa$(date -d yesterday +%d) 2>/dev/null | head -5;若报错“Cannot find the selected record”或无输出,基本可判定该日期无 -c 数据
查已有历史系统调用数据的正确命令
假设你已确认某天(如7月28日)有记录,且文件存在(如 /var/log/sa/sa28),则:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 查当天每10分钟一次的系统调用总数(/秒):sar -c -f /var/log/sa/sa28
- 限定时间段(如上午9–11点):sar -c -f /var/log/sa/sa28 -s 09:00:00 -e 11:00:00
- 若日志被压缩(sa28.gz),先解压再读:zcat /var/log/sa/sa28.gz | sar -c -f -
字段含义与典型关注点
sar -c 输出含两列核心指标:
- proc/s:每秒创建的新进程数(反映 fork/exec 频率)
- %procs:进程创建占总系统调用的比例(仅当启用详细模式时出现)
- 注意:标准 sar -c 不直接显示“所有系统调用总数”,它只报告进程创建相关调用;如需更细粒度(如 read/write/open 等),需用其他工具(如 perf 或 bpftrace),sar 本身不支持
后续想长期监控系统调用,需手动配置
若当前无历史数据,但今后需要,必须修改采集行为:
- 编辑 /etc/sysconfig/sysstat,将 SADC_OPTIONS 改为:
SADC_OPTIONS="-S CALL"或-S ALL - 重启服务生效:sudo systemctl restart sysstat
- 之后新生成的 saXX 文件才会包含 -c 数据,旧日期无法补录










