写点什么

平均负载是什么?

发布于: 2020 年 08 月 16 日
平均负载是什么?

一 平均负载是什么?

  1. 平均负载时的单位时间,是系统处于可运行状态和不可中断情况的平均进程数,总之为平均活跃的进程数。怎么验证这是对的呢。使用man uptime如下图所示。

  1. 那么什么是不可中断的状态和可运行状态呢

不可中断的状态,顾名思义是这个状态不要打断我,打断我就是搞事情,不如网络一下就不通了。

可运行状态,也就是这个进程可能是在使用cpu或者在排队等着要使用cpu。



| --不可中断进程 | 处于内核态的关键进程。从ps中我们看到的是D状态 |

| -------------- | ------------------------------------------------------------ |

| --可运行状态 | 正在使用cpu或者正在等待cpu,可以通过ps -ef看到的状态为R状态的进程 |

二 平均负载和cpu的关系?

  1. 刚才知道了是平均的活跃进程数,那么最理想的是每个cpu刚好占用一个进程,这样子就充分利用了。如果是有两个cpu的情况下。



- 在只有2个cpu系统上,cpu刚好被完全占用

- 在4个cpu系统上,那么cpu有一半是空闲的

- 在1个cpu上,就会出现打架竞争的关系,有一半的进程可能争取不到cpu。



2. 平均负载多少才算合理的呢

(1) 先查看有几个cpu

>方法1:top 输出的详细含义后面有介绍

>方法2: cat /proc/cpuinfo /proc是用户态到内核态的桥梁

>方法3:grep 'model name' /proc/cpuinfo | wc -l



(2) 知道了cpu数,然后通过uptime命令查看平均负载值

三 在Linux中使用什么工具查看系统负载情况?

  1. uptime工具

(1) uptime使用

(2) uptime命令输出的参数含义(主要是最后三个参数)

  1. top工具

(1) top使用

(2) top命令输出的参数含义

1)其中第一行包括系统的当前时间(21:49:34),自linux操作系统启动运行以来累计运行时间(0分钟),目前登录到linux操作系统的用户数(1个),以及系统运行在最近1分钟,5分钟和15分钟内系统运行的平均负载。



2)第二行是关于进程的统计信息,包括系统中现有进程的总数(137),当前正在运行的进程数量(3),处于休眠状态的进程数量(134),处于暂停状态的进程数量(0),处于僵尸状态的进程数量(0)。



3)第三行是关于CPU的统计信息,CPU处于用户模式(66),CPU处于系统模式(33),CPU处理其优先级经nice值调整过的用户进程的时间量所占百分比(0),CPU处于空闲状态(0),CPU处于等待I/O状态(0.7),CPU处理硬件中断状态(0),CPU处理软件中断状态(0.3),CPU处理st(Steal Time)状态(0)。



4)第四行是关于内存的统计信息,系统配置的物理内存总量,已用内存数量,空闲内存数量,用作缓冲区的内存数量。



5)第五行是关于交换区的统计信息,系统配置的交换区总量,已用交换区数量,空闲交换区数量,用作缓冲区的交换区数量。

四 平均负载和cpu使用率

  1. 平均负载高了,就认为cpu使用率高了?

不一定。因为cpu使用(单位时间cpu繁忙程度),包括正在使用cpu的进程和等待cpu和等待io的进程。

cpu密集:大量进程使用cpu

io密集:等待io也会导致平均负载升高,但是cpu的使用率不一定高



五 两个案例

  1. 案例1 模拟cpu密集场景

(1) 先安装咋们需要的软件包。

(2) 使用xshell打开三个窗口

第一个窗口:stress --cpu 1 --timeout 600 模拟一个cpu使用100%的场景

第二个窗口:运行uptime查看负载 watch -d uptime(watch可以动态观察命令执行情况)

第三个窗口:mpstat查看cpu使用率情况(mpstat -P ALL) 5.监控所有的cpu,5代表的每5秒输出一下结果

分析:

从窗口2可以知道,1分钟的平均负载很快超过了1,但是iowait为0.所以平均负载升高的主要原因应该是cpu使用率为98%所致





2 案例2 模拟8个进程

第一个窗口 模拟IO压力,执行sync stress -c 8 8 --timeout 600

第二个窗口 uptime

第三个窗口 mpstat查看cpu使用率 midstat -u 5 1

分析:

一个cpu被8个进程在争抢



六 总结

1 可以通过uptime命令查看系统的基本整体性能。

2 平均负载的结果可能是cpu密集进程导致也可能是IO繁忙导致

3 学习工具midstat和stress



发布于: 2020 年 08 月 16 日阅读数: 48
用户头像

公众号【我是程序员小贱】干货分享 2019.10.15 加入

计算机小硕,热爱分享

评论

发布
暂无评论
平均负载是什么?