平均负载是指单位时间内系统可运行或者不可中断状态的平均进程数,平均活跃进程数。和CPU使用率没有直接关系。
可运行状态是指正在使用CPU或者正在等待CPU的进程,用ps命令看到的处于R状态的进程。
不可中断状态是指正处于内核态关键流程中的进程,并且是不可打断的,最常见的是等待IO响应,ps状态下的D (Disk sleep)状态。
磁盘读写时,保证数据一致性。
不可中断状态其实是系统对硬件和进程的保护机制。
平均负载最理想是等于CPU核数。
平均负载高不一定是cpu使用率高。
cpu密集型:负载高,cpu使用高,io不高。
io密集型:负载高,cpu使用不高,io高。
工具:
stress linux压力测试工具
sysstat包中 包含常用linux性能分析工具mpstat,pidstat.
mpstat是多核cpu性能分析工具,查看每个cpu性能指标,以及cpu所有平均指标
pidstat进程性能分析工具,查看进程指标
# -P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
$ mpstat -P ALL 5
Linux 4.15.0 (ubuntu) 09/22/18 _x86_64_ (2 CPU)
13:30:06 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
13:30:11 all 50.05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 49.95
13:30:11 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
13:30:11 1 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
# 间隔 5 秒后输出一组数据,-u 表示 CPU 指标
$ pidstat -u 5 1
Linux 4.15.0 (ubuntu) 09/22/18 _x86_64_ (2 CPU)
13:42:08 UID PID %usr %system %guest %wait %CPU CPU Command
13:42:13 0 104 0.00 3.39 0.00 0.00 3.39 1 kworker/1:1H
13:42:13 0 109 0.00 0.40 0.00 0.00 0.40 0 kworker/0:1H
13:42:13 0 2997 2.00 35.53 0.00 3.99 37.52 1 stress
13:42:13 0 3057 0.00 0.40 0.00 0.00 0.40 0 pidstat
总结
1.top 或者update 了解系统的负载情况,因为平均负载是整个系统的一个整体情况,cpu,内存,磁盘性能的一个综合
若负载大于核数,机器资源紧张。
2.如果负载很高,top看看cpu的使用占比,如果占比过高,那瓶颈应该是cpu,接下来看看是哪个具体进程导致。
3.cpu如果没问题,free看看内存情况,不是直接看剩余多少,而是要结合看看cache和buffer,再看具体进程占用了过高内存,top可以排序
4.内存如果没问题,就iostat看看磁盘问题
5.其他iftop看流量情况,看看流量是否超过给定的带宽。
6.涉及具体应用查看下具体设定值,比如连接数...
7.考虑外部系统