最近经常收到告警,CPU load大于阈值告警。查看系统的CPU是12核,告警阈值设置的是8。对于CPU load一直有个模糊的概念,具体是什么意思还真搞不明白,趁这个机会好好搞搞究竟。

1.查看CPU load

查看CPU load的方法很多,我经常用个最简单的命令:uptime

[linux@b28-34-98 ~]$ uptime
16:09:32 up 530 days, 1 min, 1 user, load average: 2.71, 2.44, 1.99

命令结果的后三位就是load的值了,分别代表1分钟、5分钟、15分钟的平均值。因为是平均值,15分钟更能代表系统的整体负载情况,如果1分钟的值很高,其他两个值很低,只能说明系统有瞬间的高负载。如果15分钟内,系统的平均负载都很大,表明问题持续存在,不是暂时现象。那么CPU load这个值多少算大呢,和CPU核数又有什么关系呢?

2.CPU load含义

CPU load是一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息。

2.1单核CPU

当CPU完全空闲的时候,平均负荷为0(即load average的值为0);当CPU工作量饱和的时候,平均负荷为1;当有线程等待时,平均负荷为等待线程数+1,如果这个时候等待线程过多,等待时间就会长,需要考虑增加CPU 了。

来个经典比喻:

不妨把这个CPU想象成一座大桥,桥上只有一根车道,所有车辆都必须从这根车道上通过(很显然,这座桥只能单向通行),大桥的通行能力(一次10辆车),就是CPU的最大工作量;桥梁上的车辆,就是一个个等待CPU处理的进程(process)。

1)系统负荷为0,意味着大桥上一辆车也没有。

2)系统负荷为0.5,意味着大桥一半的路段有车。

3)系统负荷为1.0,意味着大桥的所有路段都有车,也就是说大桥已经"满"了。但是必须注意的是,直到此时大桥还是能顺畅通行的。

4)系统负荷为1.7,意味着车辆太多了,大桥已经被占满了(100%),后面等着上桥的车辆为桥面车辆的70%。

以此类推,系统负荷2.0,意味着等待上桥的车辆与桥面的车辆一样多; 系统负荷3.0,意味着等待上桥的车辆是桥面车辆的2倍。 总之,当系统负荷大于1,后面的车辆就必须等待了;系统负荷越大,过桥就必须等得越久。 CPU的系统负荷,基本上等同于上面的类比。为了服务器顺畅运行,系统负荷最好不要超过1.0,这样就没有进程需要等待了,所有进程都能第一时间得到处理。 很显然,1.0是一个关键值,超过这个值,系统就不在最佳状态了,就需要动手干预了。

2.2多核CPU

当CPU核数是4时,系统的处理能力是单核CPU的4倍,这时候CPU工作量饱和时,平均负荷为4,即每个CPU正在处理一个负荷。

类比到这个小车过桥的比喻中,4核CPU相当于4车道大桥。

1)系统负荷为0,意味着大桥上一辆车也没有。

2)系统负荷为1.0,意味着大桥只有一条车道占满,其他车道空闲着,其实也不一定所有车辆挤一条车道上,可以平均分配到不同车道,每条车道负载0.25。

3)系统负荷为4,意味着大桥的4条路段都有车,也就是说大桥已经"满"了。但是必须注意的是,直到此时大桥还是能顺畅通行的。

4)系统负荷大于4,意味着车辆太多了,大桥已经被占满了(100%),后面已经有等着上桥的车辆了。

3.CPU load多大合适

这个仁者见仁,有人觉得CPU负载小于等于"内核数乘以0.5-0.7"算是一种理想状态。 比如4核CPU的服务器,理想负载是小于等于2,最好不要超过2.8,否则性能多少会受影响。个人感觉这个要具体情况具体分析,在监控中设置成CPU核数即可,当然如果长时间观察到CPU load饱满运行,就需要多加注意了。

什么是CPU load的更多相关文章

  1. Linux内核分析:页回收导致的cpu load瞬间飙高的问题分析与思考--------------蘑菇街技术博客

    http://mogu.io/156-156 摘要 本文一是为了讨论在Linux系统出现问题时我们能够借助哪些工具去协助分析,二是讨论出现问题时大致的可能点以及思路,三是希望能给应用层开发团队介绍一些 ...

  2. linux loadavg详解(top cpu load)

    目录 [隐藏] 1 Loadavg分析 1.1 Loadavg浅述 1.2 Loadavg读取 1.3 Loadavg和进程之间的关系 1.4 Loadavg采样 2 18内核计算loadavg存在的 ...

  3. CPU利用率和CPU负荷(CPU usage vs CPU load)

    对于CPU的性能监测,通常用top指令能显示出两个指标:cpu 利用率和cpu负荷. 其中%Cpu相关的内容: us表示用户进程cpu利用率,sy表示系统内核进程cpu利用率,ni表示运行正常进程消耗 ...

  4. 浅谈cpu.idle和cpu.load

    1.概述 大家经常对一个系统的容量进行评估时,会参考cpu.idle和cpu.load指标,但是这两个指标到底在什么区间,表示系统是正常或者异常呢,业内有不同的说法.因此本文搜集一些资料,并对一个系统 ...

  5. cpu load过高问题排查

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

  6. CPU load高而使用率低的问题分析

    最近服务器上出现了一个很诡异的问题,症状如下图所示: 查看进程发现: 如上图所示,非常多的df -h进程没有退出.于是手工kill掉这些 df -h进程.cpu load恢复正常. 至于为什么会有这么 ...

  7. 理解linux cpu load - 什么时候应该担心了

    译文原文: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages 你可能已经很熟悉linux的平均load. ...

  8. Linux CPU Load Average

    理解Linux系统负荷 LINUX下CPU Load Average的一点研究 Linux load average负载量分析与解决思路 Understanding Linux CPU Load - ...

  9. LINUX下CPU Load Average的一点研究

    背景: 公司的某个系统工作在基于Linux的Cent OS下,一个host下同时连接了许多client, 最近某台Host总是显示CPU Load Average过高,我们单纯的以为是CPU的占用过高 ...

  10. 【操作系统之十一】任务队列、CPU Load、指令乱序、指令屏障

    一.CPU Loadcpu load是对使用或者等待cpu进程的统计(数量的累加):每一个使用(running)或者等待(runnable)CPU的进程,都会使load值+1;每一个结束的进程,都会使 ...

随机推荐

  1. JavaScript是如何工作的(一)

    简评:JavaScript 是越来越受欢迎了,很多团队都在采用这些语言工作.前端.后端.嵌入式设备等等,都可以看见它的身影.虽然我们知其然,但又知其所以然吗? 大家应该都知道 JavaScript 是 ...

  2. 6——PHP顺序结构&&字符串连接符

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  3. git指令-工作区和暂存区

    #git指令-工作区和暂存区 工作区(Working Directory):就是平常电脑可以看到的文件夹目录 版本库(Repository):存放git内容的文件夹例如: Git的版本库里存了很多东西 ...

  4. 一文了解各大图数据库查询语言(Gremlin vs Cypher vs nGQL)| 操作入门篇

    文章的开头我们先来看下什么是图数据库,根据维基百科的定义:图数据库是使用图结构进行语义查询的数据库,它使用节点.边和属性来表示和存储数据. 虽然和关系型数据库存储的结构不同(关系型数据库为表结构,图数 ...

  5. 2,Java中的数据结构

    1,字符串(String) ···String为特殊的引用类型,不可变. ···常用实例方法:     获取子串:substring(start, end);     获取索引:indexOf(cha ...

  6. 前端每日实战:152# 视频演示如何用纯 CSS 创作一个圆点错觉效果

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gBwzKR 可交互视频 此视频是可 ...

  7. CVE-2020-1947 Sharding-UI的反序列化复现及分析

    CVE-2020-1947 复现及分析 0x01 影响 Apache ShardingSphere < =4.0.0 0x02 环境搭建 incubator-shardingsphere 的ui ...

  8. iNeuOS工业互联平台,开放设备驱动管理、服务驱动管理、云组态自定义画布等,促进平台开放、赋能和落地。发布:v2.3版本。

    目       录 1.      概述... 2 2.      iNeuOS平台演示... 2 3.      设备驱动管理... 2 4.      服务驱动管理... 3 5.      云组 ...

  9. 解析Laravel框架下的Contracts契约

    Contracts Laravel 的契约是一组定义框架提供的核心服务的接口, 例如我们在介绍用户认证的章节中到的用户看守器契约IllumninateContractsAuthGuard 和用户提供器 ...

  10. 数据采集实战:通过Python获取和分析Google趋势中Covid-19的关注程度

    在传染病研究领域,社交媒体数据已被证明可作为预测感冒和流感季节的发作和进展的指标.在本文中,我们将使用Google Trends API来衡量与冠状病毒的状态.我们将使用python谷歌趋势API p ...