linux如何查cpu-Linux 查 CPU 方法
3人看过
Linux 如何高效排查 CPU 问题:从系统监控到深度诊断指南

在服务器运维、嵌入式开发或高性能计算场景中,CPU 资源的合理分配与瓶颈排查是保障系统稳定运行。当系统产生卡顿、响应缓慢或异常时,定位 CPU 瓶颈是最耗时的一步。系统级别监控、常用命令解析、进阶分析工具到图形化可视化工具,全方位解析 Linux 中排查 CPU 问题的全流程。
基础监控:获取 CPU 使用率概览
最常用的命令是 `top`,它提供了一个动态的 CPU 使用率视图,能够实时显示各进程、用户和系统的 CPU 占用情况。
使用 `top` 命令
```bash top ``` 输出分析:- CPU 使用率:顶部行显示 CPU 利用率(%)。
- 进程排名:按 CPU 使用率从高到低排序。
- 系统信息:包含加载的线程数、空闲时间等。
- 命令执行耗时:每一行末尾会显示 `COMMAND` 和 `CPUTIME`,后者精确到秒,可看出是哪个命令占用了大量资源。
| 指标 | 含义 | 正常范围 | 异常提示 |
|---|---|---|---|
| 用户 CPU (%) | 应用程序占用的 CPU | < 40% | 接近 100% 说明程序死锁或卡死 |
| 系统 CPU (%) | 内核和调度器占用的 CPU | 10%-30% | 超过 40% 涉及内存竞争或死锁 |
| 总 CPU (%) | 用户 + 系统总和 | 0%-100% | 若总和 > 100% 说明硬件或内核 Bug |
深入分析:定位具体进程与时间线
在 `top` 中,若某进程占用 CPU 过高,可通过 `ps` 命令查看详细信息,并进一步分析其执行时间线。
查看进程详情
```bash ps -eo comm,pcpu,etime -A --sort=-etime | head -20 ``` 输出解释:- `comm`: 进程名称。
- `pcpu`: 进程 CPU 使用率。
- `etime`: 进程在 `top` 命令中显示的总 CPU 时间(秒)。
- `--sort=-etime`: 按 `etime` 降序排列,快速找出最耗 CPU 的进程。
分析执行时间线 (cgroup 机制)
为了更精细地看到 CPU 时间是如何分配的,能够使用 `top` 的 `-i` 参数(Requires kernel 4.15+ or specific kernel version),它会将时间线以表格形式展示,显示哪个进程在哪些时刻占用了 CPU。 ```bash top -i ``` 数据说明表格:| 时间周期 | 进程 | CPU 使用率 | 说明 |
|---|---|---|---|
| 10:30:45 | grep | 15% | 数据库查询 |
| 10:30:46 | python | 45% | 数据处理密集计算 |
| 10:30:47 | nginx | 5% | 空闲等待 |
注意:在较老的 Linux 版本中,`top -i` 不可用,此时可结合 `pidstat` 查看进程级别的 CPU 时间分布。
进阶工具: profiling 与性能剖析

对于需要深入剖析代码性能或系统性问题的场景,`perf` 工具是业界标准的分析利器。
使用 `perf` 查找热点 CPU 模式
```bash记录当前系统状态
perf record -g ./your_app # 或指定进程 perf script > perf.out分析结果
perf report ``` perf 的作用:- Profile:记录 CPU 工作模式。
- Report:生成报告,指出哪些 CPU 模式占用了过多时间。
- Analyze:根据报告生成优化建议(如减少对象数量、优化锁竞争等)。
采用 `pidstat` 查看进程 CPU 时间线
```bash pidstat -u| 列名 | 含义 | 解读 |
|---|---|---|
| user | 用户模式时间 | 应用程序实际执行时间 |
| system | 内核模式时间 | 调度器、线程切换开销 |
| idle | 空闲时间 | CPU 无负载等待 |
| iowait | 磁盘 IO 等待 | I/O 密集型任务占用的时间 |
图形化可视化工具
对于复杂的拓扑结构和跨进程的资源争夺,图形化工具能提供直观洞察。
| 工具名称 | 特点 | 适用场景 |
|---|---|---|
| htop | 基于 `top` 改进,界面友好,支持树状图查看进程依赖关系 | 日常运维、快速排查 |
| nvis | 基于 `htop`,自带线程视图,支持 C++ 动态分析 | 高性能计算、多线程系统 |
| Node.js | Web 端可视化工具,适合前端开发者查看实时资源 | 前端开发、Web 服务监控 |
| Grafana | 基于 Prometheus,可自定义图表库 | 生产环境长期监控、告警联动 |
常见问题排查速查
- 内存不足 (OOM Killer):
- 死锁 (Deadlock):
- 虚拟内存不足 (Swap):
排查 Linux 系统中的 CPU 问题,从基础的 `top` 和 `ps` 开始,逐步深入到 `perf` 和 `pidstat` 的深度剖析,并结合图形化工具实施可视化理解,是解决性能问题的有效路径。
最佳实践建议:
1. 建立监控习惯:生产环境应持续监控 CPU 利用率(`uptime` 或 `vmstat`)。
2. 优先优化热点进程:利用 `perf` 和 `top -i` 锁定瓶颈进程。
3. 关注模式而非总量:区分 User、System、Idle 和时间线,避免盲目压缩全部 CPU 采用率(如减少对象数量),而应针对性优化。
4. 定期审查:即使是低负载系统,也应定期运行 `perf record` 检查代码逻辑。
掌握这些工具与技巧,将使您成为 Linux 系统运维中的“CPU 侦探”,从容应对各类性能挑战。
23 人看过



