怎样理解平均负载?

1、uptime的三个参数

[root@server2 ~]# uptime
 10:50:28 up 1 day, 12:41,  5 users,  load average: 0.00, 0.01, 0.05

分别是当前时间,系统运行时间,正在登录用户数
最后三个数字依次是过去1分钟、5分钟、15分钟的平均负载(load average)


2、平均负载的定义?
平均负载指的是单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。

可运行状态:ps  -aux 显示  进程状态 为R 的进程
(表示:running或者runable)

不可中断进程: 正处于内核态关键流程中的进程,并且这些进程是不可打断的,比如常见的(进程等待硬件设备I/O响应),也就是ps -aux中状态为D的进程(Disk sleep)

平均负载,可以理解为平均活跃进程数,最理想的情况就是,每个cpu上刚好有一个进程,这样每个进程都得到了充分的利用

比如在2个cpu的机器上,平均负载为2,那么cpu刚好完全被占用,在4个cpu的机器上意味着cpu有50%的空闲,在一个cpu的机器上,意味着有一半的进程竞争不到cpu。


3、如何获取一台机器的cpu数?

  • top 命令 然后按1


  • 查看/proc/cpuinfo
[root@server2 ~]# grep 'model name'  /proc/cpuinfo | wc -l
2

4、在实际的生产环境中,当平均负载高于cpu数量的70%的时候,就应该注意分析排查负载高的问题了。
但是这个数字不是绝对的,还是应该把平均负载监控起来,然后根据更多的历史数据,判断负载的变化趋势。


5、平均负载和cpu使用率

平均负载的含义是单位时间内,处于可运行状态和不可打断状态的进程数,所以,它不仅包括了正在使用CPU的进程,还包括等待CPU和等待I/O的进程

CPU使用率,是单位时间内CPU工作时间的统计。

三种案例:

  • cpu密集型进程, 使用大量CPU会导致平均负载升高,此时两者一致
  • I/O密集型进程,等待I/O导致平均负载升高,但是cpu使用率不一定升高
  • 大量等待cpu调度的进程也会导致平均负载升高,,此时,CPU使用率也会升高

6、使用性能分析工具,进行分析

环境:centos7   2cpu   1g内存(free 查看内存  cat /proc/meminfo  )

工具包: stress 、sysstat 、
stress 是linux1系统压力测试工具,我们用来模拟平均负载升高的场景

sysstat  用来监控和分析系统性能。
这个包有两个命令:mpstat 、pidstat

mpstat 常用的多核cpu性能分析工具,用来实时查看每个cpu的性能指标,以及所有cpu的平均指标
pidstat 是常用的进程性能分析工具,用来实时查看进程的CPU、内存、I/O以及上下文切换等的性能指标。
  • 初始查看平均负载
[root@server2 ~]# uptime
 11:28:25 up 1 day, 13:19,  5 users,  load average: 0.00, 0.03, 0.05
  • 场景一:模拟cpu密集型进程
模拟一个cpu使用率百分之百的场景
怎样理解平均负载?_第1张图片
在第二个终端内监控 uptime命令,会发现一分钟后平均负载会逐渐升高到一
怎样理解平均负载?_第2张图片
监控所有cpu,每5秒输出一组数据
正好有一个cpu使用率为100%,但是它的iowait只有0,说明平均负载的升高只是由于cpu使用
怎样理解平均负载?_第3张图片
5秒后输出一组数据,查看是哪个进程导致cpu使用率为100%的,很明显是stress
  • I/O密集型进程
怎样理解平均负载?_第4张图片
stress模拟io压力
发现平均负载一分钟后上升到1以上了
怎样理解平均负载?_第5张图片
查看是cpu影响还是io影响,发现是io影响
怎样理解平均负载?_第6张图片
查看是哪个进程影响的
  • 大量进程的场景
模拟8个进程
怎样理解平均负载?_第7张图片
发现平均负载急速上升
怎样理解平均负载?_第8张图片
查看进程情况,8个进程争抢两个cpu

总结:
首先,平均负载,提供了一个快速查看系统性能的手段,反映了整体的负载情况。
但是仅仅看平均负载,什么都得不到,无法发现系统的瓶颈
所以在理解平均负载的时候,要注意:
平均负载高可能是CPU密集型进程导致的
平均负载高不一定代表cpu使用高,还可能是I/O繁忙
平均负载高还可能是有大量进程在争抢cpu

当发现负载高的时候,可以使用,mpstat、pidstat等工具来分析系统瓶颈的来源。

你可能感兴趣的:(怎样理解平均负载?)