命令
➜ ~ uptime
22:37 up 90 days, 21:45, 2 users, load averages: 2.91 3.46 3.81
具体含义
22:37:代表的是当前的系统时间,也即晚上10点37分。
up 90 days, 21:45:代表系统运行时间
2 users :当前两个用户
load averages: 2.91 3.46 3.81 代表的是当前系统的平均负载
平均负载
平均负载具体是什么,可能大多数人说不出来,说系统的负载能力?其实这并不是很准确。
简单来说单位时间内,系统中可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,和CPU的使用率没有关系。
**可运行状态: ** CPU在处理或者在等待CPU执行的进程,ps 查看的 处于R(Ruanning或Runnable)的进程。
不可中断状态: 在等待系统内核关键流程的进程,比如IO读写等。
平均负载就是单位时间内活跃的线程。
比如为2,在2个CPU,说明CPU刚好用完,在4个CPU中,用了一半。
平均负载多少合理
首先查看自己电脑的有多少个CPU
查看物理CPU个数:
sysctl hw.physicalcpu
查看逻辑CPU个数:
sysctl hw.logicalcpu
查看硬件信息总揽:
system_profiler SPHardwareDataType
我的有10个CPU,负载为2,说明只用了1/5的CPU资源。
为什么需要三个参考值呢?
原因在于可以很好的进行分析出系统的负载情况,如果只看个值不具备普遍性。
分别是三种情况
- 负载平稳:三个值相差不大,说明系统负载平稳
- 过去系统负载过高: 1分钟的值小于5分钟的值,说明最近一分钟的负载在减少,而过去15分钟有较大的负载
- 现在系统负载过高: 1分钟的值大于5分钟之前的值,说明系统现在负载较高。
最好的情况下是负载数等于系统CPU个数。
平均负载与 CPU 使用率
平均负载代表平均时间内进程数,而CPU使用率是单位时间内CPU繁忙情况的统计
- CPU密集型进程,使用大量CPU会导致负载升高
- IO密集型进程,等到IO也会导致平均负载升高,但是CPU不一定升高
- 大量等待CPU的进程调度也会导致平均负载升高,此时CPU使用率也会比较高
小结
本篇分享了uptime 平均负载的概念