skip to content
Logo Hetai's blog

top命令中的Load average分析

/ 7 min read

Table of Contents

一、load average什么意思

image.png

top第一行输出的内容相当于uptime输出的内容

load average: 平均负载,数量表示的是活跃进程数量。作用是用于让人一眼快速了解系统的负载情况。

这三串数字的意义与cpu核数息息相关,要看懂load average要先知道机器的cpu核数。因为在不同cpu数量下的系统,平均负载数字的意义不一样

ps:敲nproc命令可知道机器的cpu核数

拿出来看看:load average: 2.25, 2.08, 2.03

三个数分别代表:

过去的1分钟内系统的负载(2.25)

过去的5分钟内系统的负载(2.08)

过去的15分钟内系统的负载(2.03)

假设上面这个top所在机器cpu数量是2核,那么load average: 2.25, 2.08, 2.03的2.25意义就是:

  • 2.25:过去一分钟平均过载0.25(25%),也就是过去一分钟有两个不同的进程完全使用了2个cpu,有0.25个运行着的进程在等待cpu。
  • 如果load average是2,和cpu数量一样,那就说明系统cpu得到最佳的利用。
  • 如果load average是1.3,说明过去的一分钟平均有0.7的cpu是空闲的。
  • 其余时段的数字同理,只是在长度不同的时间段下的平均值。

假设上面这个top所在机器cpu数量是1核的话

  • 2.25:过去的一分钟平均过载1.25(也就是超cpu负荷125%),网上搜的说70%就算严重过载。。。不知所然

二、上面浅入了top的load average,还有更深入的点

  • load average表示活跃进程数,活跃进程数表示正在运行的进程,可以是等待cpu的进程。
  • top命令的数据来源是/porc目录下的数据。

总结:load average:就是反映活跃进程数对机器所有cpu核数的使用情况。

三、load average三组数字怎么配合起来看?

我觉得很有道理,从一个篇文章记录下来。

还需结合1分钟平均负载,5分钟平均负载,15分钟平均负载看负载的趋势,如果1分钟负载比较高5分钟和15分钟的平均负载都比较低,则说明是瞬间升高,需要观察。如果三个值都很高则需要关注下是否某个进程在疯狂消耗CPU或者有频繁的IO操作,也有可能是系统运行的进程太多,频繁的进程切换导致。

参考:

Understanding the Load Average on Linux and Other Unix-like Systems

top命令输出详解

CPU部分

image.png
  • %us (user):表示用户空间运行的进程所占用的 CPU 时间百分比。高值意味着用户应用程序在占用 CPU。
  • %sy (system):表示内核空间运行的进程所占用的 CPU 时间百分比。高值通常表示系统调用和内核操作繁忙。
  • %ni (nice):表示用户进程在“nice”优先级下运行所占用的 CPU 时间百分比。这个值通常较低,表明低优先级进程的 CPU 使用情况。
  • %id (idle):表示 CPU 空闲时间的百分比。高值表示 CPU 有较多的空闲时间,系统负载较低。
  • %wa (wait):表示 CPU 等待 I/O 操作完成所占用的时间百分比。高值意味着系统在等待磁盘或网络 I/O,可能导致性能瓶颈。
  • %hi (hardware interrupt):表示处理硬件中断所占用的 CPU 时间百分比,通常较低。
  • %si (software interrupt):表示处理软件中断所占用的 CPU 时间百分比,通常也较低。
  • %st (steal time):在虚拟化环境中,表示虚拟机请求的 CPU 时间被其他虚拟机占用的时间百分比。高值可能表示资源竞争。

st

st 的全称是 Steal Time ,就是Hypervisor 分配给运行在其它虚拟机上的任务的实际 CPU 时间。

IBM 关于 steal time 的定义:

%st(Steal time) 是当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比。

那么,这究竟是什么意思呢?

Steal 值比较高的话,你需要向主机供应商申请扩容虚拟机。服务器上的另一个虚拟机可能拥有更大更多的 CPU 时间片,你可能需要申请升级以与之竞争。另外,高 steal 值可能意味着主机供应商在服务器上过量地出售虚拟机。如果升级了虚拟机, steal 值还是不降的话,你应该寻找另一家服务供应商。

低 steal 值意味着你的应用程序在目前的虚拟机上运作良好。因为你的虚拟机不会经常地为了 CPU 时间与其它虚拟机激烈竞争,你的虚拟机会更快地响应。这一点也暗示了,你的主机供应商没有过量地出售虚拟服务,绝对是一件好事情。