平均负载

平均负载是指单位时间内系统中活跃进程的数量,包括可运行和不可中断状态的进程。合理的平均负载应接近CPU逻辑核心数。通过`uptime`等命令查看负载,若1分钟负载远大于15分钟负载,可能是临时过载。平均负载高可能是CPU密集型或IO密集型进程引起。使用`stress`、`mpstat`和`pidstat`工具可以帮助分析负载来源。
摘要由CSDN通过智能技术生成

平均负载的定义

单位时间内, 系统处于可运行状态不可中断状态的进程数。也可以理解成单位时间内,活跃的进程数。

可运行状态: 正在使用或者等待使用CPU的进程,使用top命令查看时,状态S为R的进程

不可中断状态: 正处在内核态关键流程中的进程。最常见的是等待硬件设备的IO响应。不可中断状态是系统对进程和硬件设备的一种保护机制

例如, 当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,是不能被其他进程或者中断打断的,这时候的进程就处于不可中断状态,如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。

Stack Overflow上对不可中断状态进程的解释

An uniterruptable process is a process which happens to be in a system call(kernel function) that can't be interrupted by a signal.

也就是说,处于不可中断状态的进程,在执行系统调用之后会被阻塞,而且不能被中断(杀掉),直到系统调用完成。这系统系统调用实际上都是瞬时完成的,通过ps命令一般看不到这些进程,如果ps命令能观察到,可能是IO出现了问题,因为程序之所以进入不可中断状态,就是因为得不到相关IO响应(磁盘IO、网络IO、其他外设IO)。所以要想进程退出不可中断状态,就得使进程等待的IO恢复。

查看平均负载

使用uptime命令查看

使用命令man uptime查看uptime的作用:

Gives  a  one  line display of the following information. The current time, how long the system has been running, how many users are currently logged on, and the system load averages for the past 1, 5, and 15 minutes.

即查看当前时间,系统已经运行的时间、当前登录的用户数以及过去1、5、15分钟系统的平均负载。

uptime

系统平均负载

可以看到,过去1、5、15分钟,本系统的负载分别是1.05,1.27和1.31, 充分利用好这三个值,可以让我们更全面、更立体的理解目前系统的负载状态。

如果1、 5、 15分钟的平均负载:

  • 基本相同,说明系统的负载很稳定;
  • 如果1分钟前的负载远大于15分钟前的负载,说明最近1分钟的负载在增加。这种情况可能是临时性的,需要持续的观察。一旦1分钟的平均负载过大,说明系统发生了过载,需要想办法分析优化了;
  • 如果1分钟前的负载远小于15钟前的负载,说明系统的负载在下降。

根据上图可以知道,整体来说系统的负载很稳定。那平均负载为多少时,才能保证系统的运行效率呢?

平均负载为多少时合理

最理想的情况下,平均负载和系统CPU的逻辑核数一致。所以我们需要先知道系统中CPU的逻辑核数。

通过读取/proc/cpuinfo文件获取系统CPU的信息。Linux系统贯彻“一切都是文件”的思想,所以系统相关的很多信息,进程状态都可以通过读取相关文件来获取。

Linux系统上的/proc文件目录是一种文件系统,及proc文件系统。与其他常见的文件系统不同,proc文件系统是一种伪文件系统(虚拟文件系统),所有的文件都存储在内存中,不占用任何的磁盘空间,存储的是当前内核运行状

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值