首页 > 其他分享 >基础篇:到底应该怎么理解“平均负载”

基础篇:到底应该怎么理解“平均负载”

时间:2024-09-06 17:35:54浏览次数:4  
标签:负载 15 到底 分钟 理解 进程 平均 CPU

root@Test-MySQL:/home/zoom/test# uptime 
 08:41:38 up 3 days,  5:40,  2 users,  load average: 0.00, 0.03, 0.02


我相信你对前⾯的⼏列⽐较熟悉,它们分别是当前时间、系统运⾏时间以及正在登录⽤户数。
⽽最后三个数字呢,依次则是过去1分钟、5分钟、15分钟的平均负载(Load Average)。

平均负载

平均负载是指单位时间内,系统处于可运⾏状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使⽤率并没有直接关系。

  • 可运⾏状态:是指正在使⽤CPU或者正在等待CPU的进程,也就是我们常⽤ps命令看到的,处于R状态(Running或 Runnable)的进程。
  • 不可中断状态:是指正处于内核态关键流程中的进程,并且这些流程是不可打断的,⽐如最常⻅的是等待硬件设备的I/O响应,也就是我们在ps命令中看到的D状态(Uninterruptible Sleep,也称为Disk Sleep)的进程。⽐如,当⼀个进程向磁盘读写数据时,为了保证数据的⼀致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不⼀致的问题。所以,不可中断状态实际上是系统对进程和硬件设备的⼀种保护机制。

因此,可以简单理解为,平均负载其实就是平均活跃进程数。平均活跃进程数,直观上的理解就是单位时间内的活跃进程数,但它实际上是活跃进程数的指数衰减平均值。这个“指数衰减平均”的详细含义你不⽤计较,这只是系统的⼀种更快速的计算⽅式,你把它直接当成活跃进程数的平均值也没问题。

既然平均的是活跃进程数,那么最理想的,就是每个CPU上都刚好运⾏着⼀个进程,这样每个CPU都得到了充分利⽤。⽐如当平均负载为2时,意味着什么呢?

  • 在只有2个CPU的系统上,意味着所有的CPU都刚好被完全占⽤。
  • 在4个CPU的系统上,意味着CPU有50%的空闲。
  • ⽽在只有1个CPU的系统中,则意味着有⼀半的进程竞争不到CPU。

 

平均负载为多少时合理

  • 执行uptime,最后三个数字依次则是过去1分钟、5分钟、15分钟的平均负载(Load Average)
    root@Test-MySQL:/home/zoom/test# uptime 
     08:41:38 up 3 days,  5:40,  2 users,  load average: 0.00, 0.03, 0.02
  • 执行top/nproc查到cpu个数,当平均负载⽐ CPU 个数还⼤的时候,系统已经出现了过载
    • 如果1分钟、5分钟、15分钟的三个值基本相同,或者相差不⼤,那就说明系统负载很平稳。
    • 如果1分钟的值远⼩于15 分钟的值,就说明系统最近1分钟的负载在减少,⽽过去15分钟内却有很⼤的负载。
    • 如果1分钟的值远⼤于 15 分钟的值,就说明最近1分钟的负载在增加,这种增加有可能只是临时性的,也有可能还会持续增加下去,所以就需要持续观察。⼀旦1分钟的平均负载接近或超过了CPU的个数,就意味着系统正在发⽣过载的问题,这时就得分析调查是哪⾥导致的问题,并要想办法优化了。
  • 当平均负载⾼于 CPU 数量70%的时候,你就应该分析排查负载⾼的问题了。⼀旦负载过⾼,就可能导致进程响应变慢,进⽽影响服务的正常功能。

假设我们在⼀个单 CPU 系统上看到平均负载为 1.73,0.60,7.98,那么说明在过去 1 分钟内,系统有73% 的超载,⽽在 15 分钟内,有 698% 的超载,从整体趋势来看,系统的负载在降低。

 

平均负载与CPU使⽤率

平均负载不等于 CPU 使⽤率,平均负载是指单位时间内,处于可运⾏状态和不可中断状态的进程数。所以,它不仅包括了正在使⽤ CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。⽽ CPU 使⽤率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不⼀定完全对应。⽐如:

  • CPU 密集型进程,使⽤⼤量 CPU 会导致平均负载升⾼,此时这两者是⼀致的;
  • I/O 密集型进程,等待 I/O 也会导致平均负载升⾼,但 CPU 使⽤率不⼀定很⾼;
  • ⼤量等待 CPU 的进程调度也会导致平均负载升⾼,此时的CPU使⽤率也会⽐较⾼。

 

平均负载案例分析

我们以三个示例分别来看这三种情况,并⽤ iostat、mpstat、pidstat 等⼯具,找出平均负载升⾼的根源。

 

标签:负载,15,到底,分钟,理解,进程,平均,CPU
From: https://www.cnblogs.com/gavin-zheng/p/18400712

相关文章

  • postgresql java jdbc 负载均衡解决方案
    在PostgreSQL和JavaJDBC的环境中实现负载均衡,可以有效提升数据库性能和可用性。以下是一个基于PostgreSQL和JavaJDBC的负载均衡解决方案,包括主从复制、连接池、以及负载均衡器的集成。1.PostgreSQL主从复制PostgreSQL的主从复制是实现读写分离的重要前提。主节点(Ma......
  • D19 kubernetes 工作负载资源对象
    在kubernetes中,通常不会直接创建pod。都是使用工作负载资源deployment、statefulset来创建和管理pod。这种方式简化了pod的管理,提供了诸多如多副本、滚动和更新、回滚和自动扩展等告警功能,使得部署和管理应用程序变得方便和搞笑工作负载资源概述工作负载资源是kubernetes......
  • passOS毕业神器!查重降重aigc到底怎么降低才好?技巧拿走!
    查重时,一般要求整篇论文上传,但并非所有内容都属于查重范围。比如参考文献和附录一般不查重,减轻了大家的压力。学校一般规定论文各部分的排列顺序,如封面放在前面,然后是目录。原始声明。中英文摘要。文本和其他内容,每个部分的顺序也会对查重率产生一定的影响,所以我们应该......
  • 快速理解视频内容并回答问题,视频理解描述模型 Flash-VStream 上线!
    Flash-VStream是一种模拟人类记忆机制的视频语言模型。它能够实时处理极长的视频流,并同时响应用户的查询。与现有模型相比,Flash-VStream显著降低了推理延迟和VRAM消耗,这与执行在线流视频的理解密切相关。使用云平台:OpenBayeshttp://openbayes.com/console/signup?r=sony_0m6v登录到......
  • 电阻负载柜的故障排除方法有哪些?如何解决常见问题?
    电阻负载柜是电力系统中的重要设备,主要用于模拟实际负载,对电力设备进行测试和调试。然而,在使用过程中,可能会出现各种故障。以下是一些常见的电阻负载柜故障及其排除方法:电源无法启动:首先检查电源线是否接触良好,电源开关是否打开。如果这些都正常,可能是电源模块出现故障,需要更换......
  • 变阻箱和负载箱的区别
    变阻箱和负载箱是两种常见的电力设备,它们在电力系统中起着重要的作用。虽然它们都是用来调节电流的,但是它们的工作原理和用途有很大的区别。首先,我们来看看变阻箱。变阻箱是一种可以改变电阻值的设备,它的主要作用是调节电流的大小。变阻箱的工作原理是通过改变电阻丝的长度或者改......
  • 深入理解通信模型
    深入理解通信模型OSI七层模型主要目的OSI七层模型的主要目的是为解决不同网络互连时所遇到的兼容性问题,通过七个层次化的结构模型使不同的系统、不同的网络之间实现可靠的通信主要功能物理层:单位比特,定义物理连接和电信号传输,如电缆、连接器等数据链路层:单位帧,分MAC子......
  • AlGC-stable diffusion如何辅助服装设计,SD到底能给设计提升多少效率?
    ❗️❗️❗️StableDiffusion介绍StableDiffusion是一款开源AI绘画工具,用户输入语言指令即可自动生成各种风格的绘画图片StableDiffusion功能强大生态完整、使用方便支持大部分视觉模型上传且可自己定制模型支持各种尺寸的图片输出和局部调整。****在AIGC时代......
  • 【C++ 关键字】谈谈你对volatitle、extern 关键字的理解
    文章目录1.volatitle的概念2.volatitle的作用3.1.volatitle的概念......
  • 《深入理解 C++中的右值引用:开启高效编程新篇章》
    在C++的编程世界中,右值引用是一个强大而又富有特色的特性,它为程序员提供了更高效的资源管理方式和更灵活的编程手段。本文将带你深入探讨C++中的右值引用,揭示其独特的特点和强大的功能。一、标题背后的意义C++中的右值引用究竟有何特殊之处?为何它成为了C++编程中的热点......