在Linux服务器运维中,实时监控CPU使用情况是保障系统稳定运行的关键,通过命令行工具可以高效获取CPU的实时负载、核心利用率、进程分布等详细信息,以下是常用查询方法及具体操作解析。
top命令:实时监控CPU与进程状态
top
是最常用的动态监控工具,默认每3秒刷新一次数据,可直观查看CPU整体及各核心使用率、进程资源占用情况。
基本用法:
top
关键输出字段解析(以CPU使用率为例):
| 字段 | 含义 | 说明 |
|——|————————–|———————————————————————-|
| %us | 用户空间CPU占用率 | 进程在用户态执行代码的时间占比 |
| %sy | 内核空间CPU占用率 | 进程在内核态(如系统调用)执行代码的时间占比 |
| %ni | 优先级进程CPU占用率 | 通过nice
命令调整优先级的进程占用率 |
| %id | 空闲CPU占比 | CPU空闲时间占比,越高表示系统负载越低 |
| %wa | 等待I/O的CPU占比 | CPU等待磁盘/网络I/O完成的时间占比,过高可能意味着存储性能瓶颈 |
| %hi | 硬中断CPU占比 | 处理硬件中断的时间占比(如网卡、磁盘中断) |
交互操作技巧:
- 按
1
切换显示各CPU核心使用率(适用于多核CPU); - 按
P
按CPU使用率降序排序,M
按内存使用率排序; - 按
d
修改刷新间隔(如输入5表示每5秒刷新一次)。
uptime命令:查看系统负载平均值
uptime
以简洁形式展示系统最近1分钟、5分钟、15分钟的CPU负载平均值,适用于快速判断系统整体负载情况。
基本用法:
uptime
输出示例:14:30:25 up 10 days, 3:15, 2 users, load average: 0.45, 0.32, 0.28
load average
后三个数值分别代表1分钟、5分钟、15分钟内的平均负载,数值越接近CPU核心数表示负载越高(如4核CPU负载达4时表示CPU已满载)。
vmstat命令:统计CPU与系统资源使用
vmstat
提供进程、内存、I/O、CPU等统计信息,适合分析CPU空闲、等待、系统调用等细分指标。
基本用法:
vmstat 1 5 # 每1秒刷新一次,共输出5次
CPU相关字段解析:
| 字段 | 含义 | 正常范围 |
|——|————————–|——————————|
| r | 就绪进程数 | 单核CPU建议不超过3,多核按核心数比例调整 |
| b | 等待I/O的进程数 | 长期大于1需检查磁盘性能 |
| us | 用户态CPU占用率 | 同top的%us |
| sy | 内核态CPU占用率 | 同top的%sy |
| id | 空闲CPU占比 | 同top的%id |
| wa | 等待I/O的CPU占比 | 同top的%wa |
mpstat命令:按CPU核心分析使用率
mpstat
是sysstat
工具包的一部分,需安装sysstat
(yum install sysstat
或apt install sysstat
),可单独查看每个CPU核心的使用情况。
基本用法:
mpstat -P ALL 1 3 # 每1秒刷新,查看所有核心,共3次
输出示例:CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
CPU
列中all
表示所有核心平均,0
、1
等表示具体核心编号,通过对比可定位是否存在单个核心过载(如某些进程绑定核心导致不均衡)。
/proc/cpuinfo:查看CPU硬件信息
若需了解CPU物理规格(如型号、核心数、频率),可查看/proc/cpuinfo
文件:
cat /proc/cpuinfo | grep "model name|processor|cpu cores"
processor
数量为逻辑核心数(含超线程),cpu cores
为物理核心数。
htop命令:增强版进程监控(可选)
htop
比top
更直观,支持颜色区分、鼠标操作、进程树显示等,需安装(yum install htop
或apt install htop
):
htop
可通过快捷键F2
配置显示列,F5
查看进程树,t
查看线程实时状态。
相关问答FAQs
Q1:为什么top命令显示的CPU使用率总和超过100%?
A:当服务器启用超线程(Hyper-Threading)技术时,逻辑核心数是物理核心数的2倍,此时CPU使用率按逻辑核心计算,4核8逻辑的服务器,单核心满载时总使用率可达100%,8核心均满载时总使用率才为800%,若%us
、%sy
、%ni
等指标相加超过100%,可能是统计周期内CPU存在并行任务处理(多线程同时占用不同核心)。
Q2:如何查看CPU的历史使用率数据?
A:需安装sysstat
工具包,使用sar
命令查询历史记录,默认sysstat
会保留每日数据(通常在/var/log/sysstat/目录下,如sa25),查看昨日CPU使用率:
sar -u -f /var/log/sysstat/sa25
查看实时CPU使用率并记录到文件:
sar -u 1 10 > cpu_usage.log # 每1秒记录一次,共10次,保存至cpu_usage.log
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22352.html