linux cpu占用异常排查有五种方法:一、用top实时排序定位高耗进程;二、用ps快照筛选前n高cpu进程;三、用pidstat定时采样识别波动异常;四、用perf追踪函数级热点;五、用/proc/interrupts和sar检查中断分布。

如果您发现 Linux 系统响应迟缓、服务超时或进程运行异常,则可能是由于 CPU 占用率持续过高所致。以下是排查 CPU 占用异常的多种方法:
一、使用 top 命令实时查看进程级 CPU 使用情况
top 是一个动态实时显示系统资源占用的终端工具,可按 CPU 使用率排序列出所有活跃进程,便于快速定位高消耗进程。
1、在终端中输入 top 并回车,进入交互界面。
2、按下 P(大写)按键,按 CPU 使用率从高到低排序。
3、观察顶部显示的 %CPU 总体负载及各进程的 %CPU 列数值,重点关注持续高于 80% 的进程 PID。
4、记下可疑进程的 PID,按 q 退出 top。
二、使用 ps 命令快照式筛选高 CPU 进程
ps 提供一次性快照,配合排序与过滤可精准提取当前 CPU 占用最高的前 N 个进程,适合脚本化或批量分析场景。
1、执行命令:ps -eo pid,ppid,%cpu,%mem,cmd –sort=-%cpu | head -n 11。
2、该命令输出包含表头共 11 行,其中第 2 行起为 CPU 占用率由高到低排列的进程信息。
3、检查输出中 %cpu 列值显著高于其他进程的条目,确认其 cmd 列对应的实际程序路径与参数。
三、使用 pidstat 定期采样并识别波动型 CPU 异常
pidstat 可按指定时间间隔持续采集每个进程的 CPU 使用率,有助于发现间歇性爆发或周期性飙升的异常行为。
1、安装 sysstat 包(如未安装):sudo apt install sysstat(debian/ubuntu)或 sudo yum install sysstat(RHEL/centos)。
2、运行采样命令:pidstat -u 2 5,表示每 2 秒采集一次,共采集 5 次。
3、观察输出中 %usr(用户态)与 %system(内核态)列,若某 PID 在多次采样中均显著偏高,即为潜在问题源。
四、使用 perf 工具追踪 CPU 时间消耗热点
perf 是 Linux 内核提供的性能分析工具,可深入函数级别定位 CPU 时间实际花费位置,适用于已知进程但无法判断具体代码路径的场景。
1、确保已安装 perf:sudo apt install linux-tools-common linux-tools-$(uname -r)(Ubuntu)或 sudo yum install perf(RHEL/CentOS)。
2、对目标进程采集 10 秒调用栈:sudo perf record -g -p PID — sleep 10,其中 PID 替换为实际进程号。
3、生成火焰图式报告:sudo perf report -g –no-children,按方向键浏览各函数的 CPU 时间占比。
五、检查内核软中断与硬中断分布
当 CPU 时间大量消耗在 system(%sy)而非 user(%us)时,需排查是否由频繁中断(如网卡、磁盘、定时器)引发,尤其常见于高吞吐网络服务环境。
1、运行命令查看各 CPU 上中断统计:cat /proc/interrupts。
2、关注 IPI、NET_RX、TIMER、eth0-TxRx 等字段数值是否远高于其他行,单列数值持续增长表明对应设备或子系统触发频繁。
3、结合 sar -I ALL 1 3 输出,确认每秒中断总数(INTR)及各中断类型占比变化趋势。