1。什么是平均负载首先,让我们了解什么是平均负载。平均负载是指单位时间内系统处于可运行和不可中断状态的平均进程数,即平均活跃进程数,与CPU使用率没有直接关系。(为什么跟CPU占用率没有直接关系,这个我后面会解释)那么问题来了,什么是可运行状态和不可中断状态?所谓runnable进程是指正在使用CPU或等待CPU的进程,也就是我们经常用ps命令看到的处于R状态(Running或Runnable)的进程。处于不可中断状态的进程是内核态关键进程中的进程,这些进程是不可中断的。比如最常见的就是等待硬件设备的I/O响应,也就是我们在ps命令中看到的D状态(UninterruptibleSleep,又称DiskSleep)过程。例如,一个进程在磁盘上读写数据时,为了保证数据的一致性,不能被其他进程打断,也不能在得到磁盘的回复前中断。此时进程处于不可中断状态。如果此时进程中断,很容易出现磁盘数据和进程数据不一致的问题。因此,不可中断状态实际上是系统对进程和硬件设备的一种保护机制。了解了什么是loadaverage,那么自然就知道怎么用了。2、如何查看平均负载当我们使用uptime命令时,会出现如下结果(这是我本地机器的结果,每个人的机器不一样)$uptime02:34:03up2days,20:14,1user,loadaverage:0.63,0.83,0.88对应解释:02:34:03//当前时间up2days,20:14//系统运行时间1user//登录用户数后三位in,依次为过去1分钟、5分钟、15分钟的LoadAverage。了解了怎么看平均负载后,什么是合理的平均负载呢?3.平均负载的合理值是平均负载高于CPU数量的70%。应该分析排查负载过高的问题。一旦负载过高,可能会导致进程响应缓慢,从而影响服务的正常功能。但70%这个数字并不是绝对的。最推荐的方法是监控系统的平均负载,然后根据更多的历史数据(分析uptime得到的三个数字)来判断负载的变化趋势。当发现负载有明显的上升趋势,比如负载翻了一番,就可以重新分析排查。理想情况下,平均负载恰好是每个CPU上运行一个进程,以便每个CPU都得到充分利用。例如,当平均负载为2时,这意味着什么?在只有2个CPU的系统上,这意味着所有CPU都得到了充分利用。在4CPU系统上,这意味着50%的CPU是空闲的。在只有1个CPU的系统中,意味着一半的进程无法竞争CPU。好吧,关于平均负载的基础知识差不多就这些了。现在,让我来填补开头的空洞——为什么它与CPU使用率没有直接关系?4、平均负载和CPU使用率文章开头提到,平均负载是指单位时间内处于可运行状态和不可中断状态的平均进程数。所以,它不仅包括正在使用CPU的进程,还包括等待CPU和等待IO的进程。CPU使用率是单位时间内CPU繁忙度的统计,不一定与平均负载完全对应。例如:一个CPU密集型进程,大量使用CPU会导致平均负载增加,此时两者是一致的。I/O密集型进程,等待I/O也会导致更高的平均负载,但不一定会导致CPU使用率高。大量等待CPU的进程调度也会导致平均负载增加。这个时候CPU占用率会比较高。这就是文章的全部内容。如果您觉得有帮助,请点个赞。本文整理自极客时间:《Linux性能优化实战》如果您觉得文章不错,希望得到您的关注:七夕在学Java
