性能·CPU / 命令文档

Linux系统性能分析

$ load 13 个章节 Linux 命令详解

概述

平均负载、运行状态进程数与用户CPU的关联关系

核心概念解析

平均负载 (Load Average)

定义:系统在特定时间段内的平均活跃进程数

时间窗口:1分钟、5分钟、15分钟

包含状态:运行中 + 等待I/O + 不可中断睡眠

运行状态进程数

定义:当前正在CPU上执行或等待CPU调度的进程数量

状态标识:R (Running/Runnable)

获取方式:ps aux | grep " R " 或 /proc/stat

用户CPU使用率

定义:CPU时间片用于执行用户空间程序的百分比

对比:vs 系统CPU(内核空间)、等待I/O时间

工具:top, htop, sar, iostat

三者关联关系模型

运行状态进程数

CPU调度压力

用户CPU使用率上升

平均负载增加

关键洞察
                正相关关系:运行状态进程数增加 → 用户CPU使用率提升 → 平均负载上升
                但要注意:平均负载还包含I/O等待,因此并非完全线性关系

1. 平均负载计算原理

Load Average = (运行进程数 + I/O等待进程数 + 不可中断睡眠进程数) / 时间窗口

2. CPU使用率与进程关系

用户CPU% = (用户态CPU时间 / 总CPU时间) × 100%

3. 理想负载基准

理想负载 ≤ CPU核心数 × 0.7 (70%阈值)

查看平均负载

# 查看系统负载
$ uptime
 14:23:01 up 10 days,  3:45,  2 users,  load average: 0.45, 0.52, 0.48

# 持续监控负载
$ watch -n 1 'uptime'

# 详细负载信息
$ cat /proc/loadavg
0.45 0.52 0.48 2/156 12345

查看运行状态进程

# 查看运行中的进程数量
$ ps aux | awk '$8=="R" {count++} END {print "Running processes:", count+0}'

# 实时查看进程状态
$ ps aux | grep " R "

# 从/proc/stat获取运行进程数
$ grep "procs_running" /proc/stat
procs_running 3

监控CPU使用率

# 实时CPU使用率
$ top -n 1 | grep "Cpu(s)"
%Cpu(s):  8.2 us,  2.1 sy,  0.0 ni, 89.4 id,  0.2 wa,  0.0 hi,  0.1 si

# 详细CPU统计
$ sar -u 1 5
Linux 5.4.0    14:25:01    CPU     %user     %nice   %system   %iowait    %steal     %idle
14:25:02        all      8.25      0.00      2.13      0.25      0.00     89.37

# 每个CPU核心的使用情况
$ mpstat -P ALL 1

典型场景分析

场景1:CPU密集型负载

现象:运行进程数 = 4, 用户CPU = 95%, 平均负载 = 3.8

分析:大量计算任务导致CPU满负荷运行,负载接近CPU核心数

关系:运行进程数直接驱动用户CPU使用率和平均负载上升

场景2:I/O密集型负载

现象:运行进程数 = 2, 用户CPU = 15%, 平均负载 = 5.2

分析:大量进程等待磁盘I/O,负载高但CPU使用率低

关系:平均负载主要由I/O等待进程贡献,与用户CPU使用率不成正比

场景3:均衡型负载

现象:运行进程数 = 3, 用户CPU = 60%, 平均负载 = 2.8

分析:CPU计算和I/O操作相对均衡的健康状态

关系:三个指标呈现协调的正相关关系

监控指标对照表

平均负载范围运行进程数(4核系统)用户CPU使用率系统状态建议动作
0.0 - 2.81-3个0-70%正常继续监控
2.8 - 4.03-5个70-90%注意检查资源使用
4.0+5+个90%+告警立即优化或扩容

当运行进程数过多时:

使用 nice/renice 调整进程优先级

分析 top 输出找出CPU消耗大的进程

考虑进程池或线程池限制并发数

使用 taskset 绑定CPU亲和性

当用户CPU使用率持续高于80%时:

使用 perf 工具分析热点函数

检查代码中的循环和算法复杂度

考虑水平扩展或垂直扩展

启用CPU频率调节器优化

最佳实践
                建立基于三个指标的综合监控体系,设置合理阈值,实现自动化告警和处理机制。记住:单一指标无法反映全貌,需要结合分析才能准确判断系统健康状态。

同分类 · 其他命令文档