性能·CPU / 命令文档

Linux CPU使用率

$ cpu 7 个章节 Linux 命令详解

概述

掌握系统性能监控的核心技能,成为Linux运维专家

概念解析 监控工具 性能分析 优化策略 运维实践 故障排查

什么是CPU使用率

CPU使用率是衡量系统处理器在特定时间段内执行任务忙碌程度的关键指标。它反映了CPU资源的利用情况,通常以百分比形式表示。理解CPU使用率对于系统性能优化、容量规划和故障诊断至关重要。

User%

用户态CPU使用

System%

系统态CPU使用

Idle%

CPU空闲时间

IOWait%

等待I/O完成

CPU状态详细解析

User Time (us/usr)

用户态

CPU执行用户态程序的时间,包括应用程序、用户进程等

Nice Time (ni)

低优先级

执行低优先级(nice值>0)用户态程序的时间

System Time (sy/sys)

内核态

CPU执行内核态程序的时间,包括系统调用、内核函数等

Idle Time (id)

空闲

CPU完全空闲的时间,没有任何进程在运行

IOWait (wa)

I/O等待

CPU等待I/O操作(如磁盘读写)完成的时间

Hardware IRQ (hi)

硬中断

处理硬件中断的时间

Software IRQ (si)

软中断

处理软件中断的时间

Steal Time (st)

被占用

虚拟化环境中被其他虚拟机占用的时间

应用场景与核心价值

性能监控

实时监控系统负载状况,及时发现性能问题

容量规划

预测资源需求,制定合理的扩容和升级计划

故障诊断

快速定位性能瓶颈,分析系统异常原因

资源优化

指导系统调优和配置优化,提升整体性能

成本控制

优化资源配置,降低硬件投资和运营成本

SLA保障

确保服务质量,维护业务连续性

基础监控命令

1. top命令 - 实时进程监控之王

top -d 1

top - 19:05:45 up 7 days, 20:03,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  96 total,   1 running,  90 sleeping,   5 stopped,   0 zombie
%Cpu(s):  1.0 us,  0.0 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2046500 total,   190576 free,   491484 used,  1364440 buff/cache
KiB Swap:  2097148 total,  2096628 free,      520 used.  1363824 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2515 root      20   0  185948  10740   2340 S   1.0  0.5  10:26.07 barad_agent
 2516 root      20   0  821564  17864   3360 S   1.0  0.9  92:16.41 barad_agent
    1 root      20   0   43560   3944   2600 S   0.0  0.2   0:38.25 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.10 kthreadd
    4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    6 root      20   0       0      0      0 S   0.0  0.0   0:03.41 ksoftirqd/0
    7 root      rt   0       0      0      0 S   0.0  0.0   0:02.63 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S   0.0  0.0   1:18.67 rcu_sched

• -d 1: 每秒刷新一次 • -p PID: 监控特定进程 • -u username: 监控特定用户的进程

2. htop命令 - 可视化增强版

htop
# 提供彩色界面、更直观的CPU使用率显示
# 支持鼠标操作,可以直接点击进程进行操作
# F1=Help F2=Setup F3=Search F4=Filter F5=Tree F6=SortBy

3. vmstat命令 - 虚拟内存统计

vmstat 1 10

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0    520 189756 189224 1175072    0    0     1    32   12   11  1  1 99  0  0
 0  0    520 189688 189224 1175072    0    0     0     0  712 1327  1  0 100  0  0
 0  0    520 189688 189224 1175072    0    0     0     0  697 1310  0  0 100  0  0
 0  0    520 189796 189224 1175072    0    0     0     0  780 1436  1  1 99  0  0
 0  0    520 189532 189224 1175076    0    0     0     0  961 1879  1  1 99  0  0
 0  0    520 189548 189224 1175076    0    0     0     0  899 1647  1  1 99  0  0
 0  0    520 189548 189224 1175076    0    0     0    48  810 1469  1  0 99  0  0
 0  0    520 189548 189224 1175084    0    0     0   408  952 1718  1  1 98  1  0
 0  0    520 189784 189224 1175088    0    0     0     0  998 1852  1  1 99  0  0
 0  0    520 189660 189224 1175092    0    0     0     0  917 1675  1  1 99  0  0

• us: 用户态CPU使用率 • sy: 系统态CPU使用率 • id: 空闲CPU使用率 • wa: I/O等待时间

4. sar命令 - 系统活动报告器

sar -u 1 5

Linux 3.10.0-1160.119.1.el7.x86_64 (VM-20-9-centos) 	2025年08月18日 	_x86_64_	(2 CPU)
19时00分52秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
19时00分53秒     all      0.00      0.00      0.50      0.00      0.00     99.50
19时00分54秒     all      0.50      0.00      0.50      0.00      0.00     99.00
19时00分55秒     all      0.50      0.00      0.50      0.00      0.00     98.99
19时00分56秒     all      0.50      0.00      0.50      0.00      0.00     98.99
19时00分57秒     all      0.50      0.00      0.50      0.00      0.00     98.99
平均时间:     all      0.40      0.00      0.50      0.00      0.00     99.10

• -u: 显示CPU使用率 • -f: 从文件读取历史数据 • -o filename: 输出到文件

5. iostat命令 - I/O和CPU统计

iostat -c 1

 
Linux 3.10.0-1160.119.1.el7.x86_64 (VM-20-9-centos) 	2025年08月18日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.72    0.00    0.51    0.15    0.00   98.62

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.50    0.00    0.50    1.01    0.00   97.99

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.50    0.00    0.50    0.00    0.00   99.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.50    0.00    0.50    0.00    0.00   98.99

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.50    0.00    0.50    0.00    0.00   99.00

高级监控工具

nmon - 性能监控利器

nmon

交互式系统性能监控,按'c'查看CPU,按'h'获取帮助

pidstat - 进程级监控

pidstat -u -p ALL 1 5

监控所有进程的CPU使用情况,每秒输出一次

dstat - 多功能统计工具

dstat -c --top-cpu 1

显示CPU使用率和占用CPU最多的进程

atop - 高级监控工具

atop -a 1

全面的系统和进程活动监控,包含历史数据

glances - 跨平台监控

glances -t 1

基于Python的跨平台监控工具,支持Web界面

perf - 性能分析工具

perf top
Samples: 28K of event 'cpu-clock', 4000 Hz, Event count (approx.): 470061734 los
Overhead  Shared Object              Symbol
  17.44%  [kernel]                   [k] __do_softirq
   8.28%  [kernel]                   [k] _raw_spin_unlock_irqrestore
   4.10%  [kernel]                   [k] run_timer_softirq
   3.81%  [kernel]                   [k] finish_task_switch

第一行包含三个数据,分别是采样数(Samples)、事件类型(event)和事件总数量(Event count)。 第一列 Overhead ,是该符号的性能事件在所有采样中的比例,用百分比来表示。 第二列 Shared ,是该函数或指令所在的动态共享对象(Dynamic Shared Object),如内核、进程名、动态链接库名、内核模块名等。 第三列 Object ,是动态共享对象的类型。比如 [.] 表示用户空间的可执行程序、或者动态链接库,而 [k] 则表示内核空间。 最后一列 Symbol 是符号名,也就是函数名。当函数名未知时,用十六进制的地址来表示。

一键监控脚本

#!/bin/bash
# CPU监控一键脚本
echo "=== CPU使用率监控脚本 ==="
echo "当前时间: $(date)"
echo ""

echo "1. 系统负载:"
uptime

echo ""
echo "2. CPU使用率概览:"
sar -u 1 1 | tail -1

echo ""
echo "3. 占用CPU最多的10个进程:"
ps aux --sort=-%cpu | head -11

echo ""
echo "4. CPU核心数和架构信息:"
echo "CPU核心数: $(nproc)"
echo "CPU架构: $(uname -m)"
lscpu | grep -E "Model name|CPU\(s\):"
专业建议:在生产环境中,建议同时使用多个监控工具进行交叉验证,这样可以获得更准确和全面的性能数据。每个工具都有其特定的优势和适用场景。

同分类 · 其他命令文档