-
uptime
10:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.88
10:34:03 // 当前时间
up 2 days, 20:14 // 系统运行时间
1 user // 正在登录用户数
0.63, 0.83, 0.88
1min、5min、15min 的平均负载
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。
- 可运行状态:R 状态(Running 或 Runnable)的进程
- 不可中断状态:D 状态(Uninterruptible Sleep,也称为Disk Sleep)的进程
理想状态:每个cpu上都有一个活跃进程,即平均负载数等于cpu数
当平均负载高于 CPU 数量 70% 的时候,可能存在问题!!
一、平均负载与CPU使用率
既然平均负载代表的是活跃进程数,那平均负载高了,就意味着CPU使用率高么???
回到平均负载的含义上来:平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。所以,它不仅包括了正在使用CPU的进程,还包括等待CPU和等待I/O的进程。
CPU使用率:是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。
比如:
·CPU密集型进程,使用大量CPU会导致平均负载升高,此时这两者是一致的;
·I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定很高;
·大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高。
二、相关命令
cpu核数: lscpu 、 grep 'model name' /proc/cpuinfo | wc -l
显示平均负载:uptime、top,显示的顺序是最近1分钟、5分钟、15分钟,从此可以看出平均负载的趋势
watch -d uptime: -d会高亮显示变化的区域
strees: 压测命令
--cpu cpu压测选项
-i io压测选项
-c 进程数压测选项
--timeout 执行时间
sysstat 包含了常用的 Linux 性能工具(mpstat、pidstat),用来监控和分析系统性能
mpstat是一个常用的多核CPU性能分析工具,用来实时查看每个CPU的性能指标,以及所
有CPU的平均指标,-P ALL监视所有cpu。
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的CPU、内存、I/O以及上下文切换等性能指标,-u 显示cpu利用率。
三、平均负载过高时,如何调优
load average案例分析
工具:stress、sysstat,yum & apt即可安装
1. CPU密集型进程case:
模拟环境:
- stress --cpu 1 --timeout 600
- mpstat -P ALL 5
#-P ALL表示监控所有CPU,5表示每5秒刷新一次数据,观察是否有某个cpu的%usr会很高,但iowait应很低
watch -d uptime # 高亮变化区域
pidstat -u 5 1:每5秒输出一组数据,观察哪个进程%cpu很高,但是%wait很低,极有可能就是这个进程导致cpu飚高
2. IO密集型进程case:
- stress -i 1 --timeout 600
mpstat -P ALL 5 1: 观察是否有某个cpu的%iowait很高,同时%usr也较高
pidstat -u 5 1:观察哪个进程%wait较高,同时%CPU也较高
3. 大量进程case:
- stress -c 8 --timeout 600
pidstat -u 5 1:观察那些%wait较高的进程是否有很多