Linux集群和自动化维1.4.4 Linux下CPU使用率与机器负载的关系与区别

简介:

1.4.4 Linux下CPU使用率与机器负载的关系与区别


 笔者的线上竞标业务机器,在业务最繁忙的一段周期内,发现Nginx单机并发活动的连接数超过了2.6万,机器负载(基本上不到4,Nagios监控系统并没有发送报警邮件和短信)和Nginx+Lua服务都是正常的,网卡流量并没有打满,但流量就是怎么也打不进去。经过深入观察,发现这段时期内每台机器的CPU利用率都已经很高了,基本都维持在99%~100%左右,这种情况应该是CPU资源耗尽了,导致不能再继续提供服务,所以这里有必要研究下CPU负载和CPU利用率这两个概念的关系与区别。

CPU负载和CPU利用率虽然是两个不同的概念,但它们的信息可以显示在同一个top命令中。CPU利用率显示的是程序在运行期间实时占用的CPU百分比,而CPU负载显示的则是一段时间内正在使用和等待使用CPU的平均任务数。CPU利用率高,并不意味着负载就一定大。

网上有篇文章提供了一个有趣的比喻,即通过打电话来说明两者的区别,下面笔者按照自己的理解来阐述一下。

某公用电话亭,有一个人在打电话,四个人在等待,每人限定使用电话一分钟,若有人一分钟之内没有打完电话,则只能挂掉电话去排队,等待下一轮。电话在这里就相当于CPU,而正在或等待打电话的人就相当于任务数。

在电话亭的使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队,这个人数的变化就相当于任务数的增减。为了统计平均负载情况,我们5秒钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。有的人拿起电话就打,一直打完一分钟;而有的人可能前三十秒在找电话号码,或者在犹豫要不要打,后三十秒才真正在打电话。如果把电话看作CPU,人数看作任务,就可以说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。

当然,CPU并不会在前三十秒工作,后三十秒歇着,只是说,有的程序涉及大量的计算,所以CPU利用率就高,而有的程序涉及计算的部分很少,CPU利用率自然就低。但无论CPU的利用率是高还是低,都跟后面有多少任务在排队没有必然关系。

CPU负载为多少才算是比较理想的呢?对于这个问题,业界一直存在争议,各有各的说法,个人比较赞同CPU负载小于等于0.5算是一种理想的状态。

不管某个CPU的性能有多好,1秒钟能处理多少个任务,我们都可以认为它无关紧要,虽然事实并非如此。在评估CPU负载时,我们只以5秒钟为单位来统计任务队列长度。如果每隔5秒钟统计的时候,发现任务队列的长度都是1,那么CPU负载就为1。假如只有一个单核的CPU,负载一直为1,那就意味着没有任务在排队,这说明目前机器系统负载还不错。还是以上面提到的竞标业务机器为例,都是四核机器,每个内核的负载为1的话,则总负载为4。也就是说,如果那些竞标服务器的CPU负载长期保持在4左右,还是可以接受的。

CPU使用率达到多少才算比较理想?

建议统计%user+%system的值(后面的章节有相关的Shell脚本),如果长期大于85%的话,就可以认为系统的CPU负载过重,这个时候就可以考虑添加物理CPU或增添业务集群机器了。

相关文章
|
29天前
|
存储 Unix Linux
Linux 下文件和目录的本质区别和组成
Linux 下文件和目录的本质区别和组成
36 0
|
29天前
|
Linux API 调度
Linux系统驱动跟裸机驱动的区别
Linux系统驱动跟裸机驱动的区别
27 0
|
1月前
|
Oracle 关系型数据库 Linux
Linux下 su命令与su - 命令有什么区别?
Linux下 su命令与su - 命令有什么区别?
27 0
|
2月前
|
运维 Linux
Linux系统调优详解(二)——CPU负载查看相关命令
Linux系统调优详解(二)——CPU负载查看相关命令
50 10
|
28天前
|
Shell Linux C语言
【Shell 命令集合 系统管理 】Linux 显示系统的平均负载情况 tload命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示系统的平均负载情况 tload命令 使用指南
39 1
|
1月前
|
IDE Linux 编译器
【Linux】项目自动化构建工具 —— make/Makefile
【Linux】项目自动化构建工具 —— make/Makefile
|
2月前
|
IDE Linux 开发工具
【Linux】Linux项目自动化构建工具-make/Makefile
【Linux】Linux项目自动化构建工具-make/Makefile
【Linux】Linux项目自动化构建工具-make/Makefile
|
1月前
|
IDE 小程序 Linux
【linux】Linux项目自动化构建工具-make/Makefile
【linux】Linux项目自动化构建工具-make/Makefile
26 0
|
2月前
|
弹性计算 运维 安全
阿里云服务器Windows和Linux操作系统区别对比
阿里云服务器Windows和Linux操作系统区别对比,性能有差异吗?有,同配置下Linux性能要优于Windows,但这与阿里云无关,仅仅是linux和windows之间的区别。另外,阿里云提供的windows和linux操作系统均为正版授权,用户不需要额外支付许可费用,如何选择?看用户自己的应用程序情况。
|
29天前
|
运维 网络协议 Unix
Linux终端(Terminal)与控制台(Console)的区别
Linux终端(Terminal)与控制台(Console)的区别
26 0