Table of Contents
一、load average什么意思
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
CPU部分
- %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 时间与其它虚拟机激烈竞争,你的虚拟机会更快地响应。这一点也暗示了,你的主机供应商没有过量地出售虚拟服务,绝对是一件好事情。