Linux监控CPU使用

Linux监控CPU使用

内容

在 Linux 中查看 CPU 占用率的常用命令非常多,以下是一个分类整理的高效工具清单,涵盖实时监控、历史分析和高级统计场景:


一、实时 CPU 监控工具

1. top (基础版)

top
  • 功能:动态显示进程和 CPU 占用(用户态、内核态、空闲占比)
  • 操作
    • 1:展开每个 CPU 核心的详情
    • P:按 CPU 使用率排序

2. htop (增强版)

sudo apt install htop  # Debian/Ubuntu
htop
  • 优势:彩色界面、鼠标交互、树状视图
  • 操作
    • 鼠标点击列标题排序
    • F4 过滤进程名

3. glances (全资源监控)

sudo pip3 install glances
glances
  • 功能:同时显示 CPU、内存、磁盘、网络等指标
  • 输出示例
    CPU  [|||||||||||||||||||||||||||||||||||||||||||||||| 95.2%]  Load 3.2
    

二、多核 CPU 分析工具

1. mpstat (每核详细统计)

sudo apt install sysstat  # 安装
mpstat -P ALL 1          # 每秒刷新所有核心数据
  • 输出关键字段
    • %usr:用户态 CPU 时间
    • %sys:内核态 CPU 时间
    • %idle:空闲率

2. turbostat (Intel/AMD CPU 功耗监控)

sudo apt install linux-tools-common
turbostat --show Core,CPU,Avg_MHz,Busy%,PkgTmp
  • 用途:监控 CPU 频率、温度和功耗(需 root)

三、历史数据分析工具

1. sar (历史趋势)

sar -u 1 3       # 查看 CPU 历史数据(1秒间隔,采样3次)
sar -f /var/log/sa/saXX  # 查看某日存档(XX为日期)
  • 关键字段
    • %user:用户进程占用
    • %iowait:等待 I/O 的时间

2. atop (长期记录)

sudo apt install atop
atop -l        # 查看历史记录(按 `t` 切换时间点)

四、进程级 CPU 分析

1. pidstat (进程/线程级)

pidstat -u 1    # 每秒报告进程 CPU 使用率
pidstat -tu -p <PID> 1  # 监控指定进程的线程

2. ps (快照模式)

ps -eo pid,user,%cpu,cmd --sort=-%cpu | head -n 10
  • 作用:快速找出当前 CPU 占用最高的前 10 进程

五、轻量级工具

1. vmstat (快速概览)

vmstat 1        # 每秒输出(关注 `us`, `sy`, `id` 列)

2. dstat (多功能)

sudo apt install dstat
dstat -c        # 实时显示 CPU 使用率 + 中断上下文

六、可视化工具

1. nmon

sudo apt install nmon
nmon → 按 c     # 进入 CPU 监控模式
  • 输出:动态显示每个核心的使用率柱状图

2. netdata (Web 仪表盘)

bash <(curl -Ss https://my-netdata.io/kickstart.sh)
  • 访问http://localhost:19999

七、底层工具

1. /proc/stat

cat /proc/stat | grep '^cpu'
  • 手动计算公式
    total = user + nice + system + idle + iowait + irq + softirq
    used = total - idle - iowait
    usage = 100 * used / total
    

2. perf (高级性能分析)

sudo perf stat -a -- sleep 1  # 监控全局 CPU 周期

选型建议

场景 推荐工具
快速查看实时 CPU top/htop
多核详细统计 mpstat
历史数据分析 sar
进程级分析 pidstat
开发环境轻量监控 vmstat/dstat
生产环境长期监控 netdata/Prometheus

注意事项

  1. 部分工具需 root 权限(如 turbostat
  2. 历史数据工具(如 sar)依赖 sysstat 服务的后台运行
  3. 避免在容器环境中使用依赖 /proc 文件的工具(可能需要特权模式)
posted @ 2025-03-07 00:56  Gold_stein  阅读(270)  评论(0)    收藏  举报