最常用且可靠的方式是用 mpstat -P ALL 查看各核软中断占比,%soft 列表示该核处理软中断时间占其运行时间的百分比,持续高于 5% 时应结合 /proc/softirqs 进一步分析具体类型。

直接用 mpstat -P ALL 查看每个核心的软中断(%soft)占比,这是最常用也最可靠的方式。
确认软中断字段位置
mpstat 默认输出中,%soft 列代表该 CPU 在采样周期内处理软件中断所占的时间百分比。它和 %usr、%sys、%iowait 等同属一行,数值是相对该核总运行时间(非空闲时间)的占比。
- 例如某行显示
CPU 2 5.20 0.00 2.10 0.30 0.00 <strong>1.80</strong> 0.00 0.00 0.00 90.60,其中 1.80 就是 CPU 2 的 %soft 值 - %soft 高通常意味着内核在频繁调度软中断(如网络收包、定时器、tasklet),不等于负载高,但可能影响实时响应
只监控特定核心(比如 CPU 3)
不用看全部核,可精准聚焦:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
-
mpstat -P 3 1:每秒刷新一次 CPU 3 的完整统计(含 %soft) -
mpstat -P 3 0.5 10:半秒采样一次,共 10 次,适合抓取突发软中断峰值 - 注意:-P 后必须跟数字或 ALL,不能写成 -p(小写)或漏掉 -P
结合时间戳与持续观察
加 -t 参数让每行带精确时间,便于关联其他日志:
-
mpstat -t -P ALL 2:每 2 秒输出所有核的 %soft,带时间前缀 - 若发现某核 %soft 持续 >5%,建议进一步用
cat /proc/softirqs查具体哪类软中断(NET_RX、TIMER、SCHED 等)在上涨
导出结构化数据供分析
新版 mpstat 支持 JSON 输出,方便脚本提取 %soft:
mpstat -P 0 -o JSON 1 1 | jq '.sysstat.reports[0].cpu-load[0]."soft"- 返回纯数字(如
0.42),可嵌入监控告警逻辑 - 旧版本不支持 JSON,可用 awk 提取:
mpstat -P 0 1 1 | awk '/^ *[0-9]+$/ {print $6}'

















