Linux中CPU负载和CPU使用率表示的含意,多大负载算高

收到zabbix 警报信息,发现其中一台服务器CPU负载过重 报警值为4

一、警报信息的三个参数到底是什么意思?

9.73、10.67、10.49分别代表前一分钟,五分钟,十五分钟的平均CPU负载,最重要的指标是最后一个数字,即前15分钟的平均CPU负载,这个数字越小越好。所谓CPU负载指的是一段时间内任务队列的长度,通俗的讲,就是一段时间内一共有多少任务在使用或等待使用CPU。

二、除了zabbix,还有哪些工具可以查看CPU负载?

可以使用top命令、uptime命令,特别是top命令,功能强大,不仅仅可以用来查看CPU负载。

三、CPU负载怎么理解?是不是CPU利用率?

这里要区别CPU负载和CPU利用率,它们是不同的两个概念,但它们的信息可以在同一个top命令中进行显示。CPU利用率显示的是程序在运行期间实时占用的CPU百分比,而CPU负载显示的是一段时间内正在使用和等待使用CPU的平均任务数。CPU利用率高,并不意味着负载就一定大。网上有篇文章举了一个有趣比喻,拿打电话来说明两者的区别,我按自己的理解阐述一下。

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

在电话亭使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队,这个人数的变化就相当于任务数的增减。为了统计平均负载情况,我们5秒钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。

有的人拿起电话就打,一直打完1分钟,而有的人可能前三十秒在找电话号码,或者在犹豫要不要打,后三十秒才真正在打电话。如果把电话看作CPU,人数看作任务,我们就说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。

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

四、了解了CPU负载的含义,我们如何来降低服务器的CPU负载呢?

最简单办法的是更换性能更好的服务器,不要想着仅仅提高CPU的性能,那没有用,CPU要发挥出它最好的性能还需要其它软硬件的配合。

在服务器其它方面配置合理的情况下,CPU数量和CPU核心数(即内核数)都会影响到CPU负载,因为任务最终是要分配到CPU核心去处理的。两块CPU要比一块CPU好,双核要比单核好。

因此,我们需要记住,除去CPU性能上的差异,CPU负载是基于内核数来计算的!有一个说法,“有多少内核,即有多少负载”。

五、那么,本文开头的CPU负载分担到每个CPU上的负载是多少呢?那就要看我这台服务器有一共有多少个内核了。

Linux里有一个/proc目录,存放的是当前运行系统的虚拟映射,其中有一个文件为cpuinfo,这个文件里存放着CPU的信息。我们可以直接打开查看,或者过滤关键字进行查看,因为文件内容比较多,所以一般我们需要过滤关键字。

/proc/cpuinfo文件按逻辑CPU而非真实CPU分段落显示信息,每个逻辑CPU的信息占用一个段落,第一个逻辑CPU标识从0开始。我们首先要明白这一点,至于什么是逻辑CPU,下面会提到。要理解该文件中的CPU信息,有几个相关的概念要知道:

processor:逻辑CPU的标识

model name:真实CPU的型号信息

physical id:真实CPU和标识

cpu cores:真实CPU的内核数

>grep‘modelname′/proc/cpuinfo|uniqmodelname:Intel(R)Xeon(R)CPUE5320@1.86GHz>grep‘modelname′/proc/cpuinfo|uniqmodelname:Intel(R)Xeon(R)CPUE5320@1.86GHz>grep ‘physical id’ /proc/cpuinfo |sort |uniq |wc -l

2

$>grep ‘cpu cores’ /proc/cpuinfo |uniq

2

可以看出,该服务器CPU型号为Intel(R) Xeon(R) CPU E5320,双CPU,每个CPU都是双核,相当于服务器有4个内核。

前面我们说CPU负载是基于CPU内核数计算的,那么以前十五分钟的平均负载数10.49为例,我们可以得出,这台服务器每个CPU的负载为5.245,再分配到内核上,每个内核的负载为2.6左右。

这个负载是否是合理的呢?那就要看理想CPU负载的标准是什么样子的了。

六、CPU负载为多少才算比较理想?

这个有争议,各有各的说法,我个人比较赞同CPU负载小于等于0.7算是一种理想状态。

不管某个CPU的性能有多好,1秒钟能处理多少任务,我们可以认为它无关紧要,虽然事实并非如此。在评估CPU负载时,我们只以5秒钟为单位为统计任务队列长度。如果每隔5秒钟统计的时候,发现任务队列长度都是1,那么CPU负载就为1。假如我们只有一个单核的CPU,负载一直为1,意味着没有任务在排队,还不错。

上面提到的我那台服务器,是双核又CPU,等于是有4个内核,每个内核的负载为1的话,总负载为4。这就是说,如果我那台服务器的CPU负载长期保持在4左右,还可以接受。但实际上CPU负载已经达到9以上了,所以就很麻烦了。

但是每个内核的负载为1,并不能算是一种理想状态!这意味着我们的CPU一直很忙,不得清闲。网上有说理想的状态是每个内核的负载为0.7左右,我比较赞同,0.7乘以内核数,得出服务器理想的CPU负载,比如我这台服务器,负载在3.0以下就可以。

七、下面关于逻辑CPU的描述,全部来自网上:

现在的服务器一般都使用了“超线程”(Hyper-Threading,简称HT)技术来提高CPU的性能。超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程。

虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每各CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。

具有超线程技术的CPU还有一些其它方面的限制。

linux中负载值为多少正常_Linux中CPU负载和CPU使用率表示的含意,多大负载算高...相关推荐

  1. linux中负载值为多少正常_Linux load average负载量分析与解决思路

    一.load average top命令中load average显示的是最近1分钟.5分钟和15分钟的系统平均负载.系统平均负载表示 系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或 ...

  2. linux中负载值为多少正常_Linux系统Load average负载详细解释

    我们知道判断一个系统的负载可以使用top,uptime等命令去查看,它分别记录了一分钟.五分钟.以及十五分钟的系统平均负载-- AD: 我们知道判断一个系统的负载可以使用top,uptime等命令去查 ...

  3. linux中负载值为多少正常_linux查看系统负载常用指标与命令

    top命令中load average显示的是最近1分钟.5分钟和15分钟的系统平均负载.系统平均负载表示 系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程 ...

  4. linux中负载值为多少正常_linux 查看负载和使用情况 top

    top命令是看当前进程的cpu和内存等的占用情况 参数解析 top - 20:54:37 up 228 days, 11:03, 3 users, load average: 0.54, 0.33, ...

  5. html取 输入框中的值,jquery获取input输入框中的值

    如何用javascript获取input输入框中的值,js/jq通过name.id.class获取input输入框中的value 先准备一段 HTML 一.jquery获取input文本框中的值 通过 ...

  6. 将一个数组中的值按逆序重新排放。_六十五、下一个更大的数系列,单调栈解决方法...

    「@Author:Runsen」 ❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. 「---- Runsen」 ❞ 据说,放张小姐姐觉得照片可以提高阅读量,图是来源学校 ...

  7. php删除session中的值,php如何删除session中数据

    php删除session中数据,我们可以通过PHP中的特定函数session_destroy()等函数来实现删除操作. 首先大家要简单了解下http无状态协议是什么? HTTP无状态协议,是指协议对于 ...

  8. linux中负载值为多少正常_Linux系统中load average平均负载

    系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数.如果一个进程满足以下条件则其就会位于运行队列中: 1)它没有在等待I/O操作的结果 2)它没有主动进入等待状态(也就是没有调用'wait') ...

  9. linux mysql 数据目录迁移后不生效_Linux中更改转移mysql数据库目录的步骤

    前几天发现由于MySQL的数据库太大,默认安装的/var盘已经再也无法容纳新增加的数据,只能想办法转移数据的目录.网上有很多相关的文章写到转移数据库目录的文章,但转载的过程中还会有一些错误,因为大部分 ...

最新文章

  1. 【微信小程序企业级开发教程】快递查询实例
  2. 块存储,文件存储和对象存储
  3. 与股权投资有关的抵消分录的编制
  4. Eclipse安装以及JDK环境变量配置
  5. linux批量去掉文件名前缀,linux 批量删除某个前缀文件
  6. Linux—scp或ssh出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  7. ASP.NET MVC3书店--第二节 控制器(转)
  8. 计算机小白也看得懂的Liang-Barsky算法
  9. 【目标提取】计算机视觉中如何利用颜色和形状提取目标?
  10. 网络安全之密码安全基础
  11. Flutter:表单Form
  12. DIY装机之入围产品
  13. Windows 10 S怎么样?Windows 10 S六大新特性介绍
  14. 微信公众号开发相关问题
  15. sql 节假日判断(春节、中秋、国庆、周末等)
  16. ZFS文件系统(8) -- SLOG
  17. 因果推断实战:淘宝3D化价值分析小结
  18. html5残影,液晶显示器出现残影的原因及解决办法
  19. 洛杉矶警局用 AI “预测犯罪”;北欧银行拟裁员六千,用智能机器取而代之
  20. RocketMQ学习笔记(二)

热门文章

  1. (一)redis常见5种数据结构
  2. 遇见逆水寒最新服务器是哪个,遇见逆水寒连接服务器失败怎么回事_遇见逆水寒连接服务器失败解决办法_玩游戏网...
  3. html+css+js 学生信息管理系统
  4. L1-020 帅到没朋友(包含测试点)
  5. html上下键移动单元格,如何用键盘的上下键盘来移动 表格的每一行
  6. Python Revisited Day 01
  7. Java:判断一个整数是否是素数
  8. 实现对excel文件中多个sheet的拼接
  9. 实现不同VlAN之间的通讯
  10. 平台如何模拟真实商家竞争环境