最近经常收到告警,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. Emacs key bindings for vim users

    Emacs key bindings for vim users | Scarletsky 盒子 盒子 博客 分类 标签 关于 RSS 搜索 文章目录 简介 Emacs 是一个文本编辑器,号称是伪装成 ...

  2. java快速开发平台可视化开发表单

    XJR java快速开发平台,简单的理解就是:开发人员以某种编程语言或者某几种编程语言(比如:目前流行的多种web技术,包括springboot, JPA,Druid, Activiti,Lombok ...

  3. Pycharm2019.2激活至2089年

    PyCharm作为日常开发常用工具,过段时间就需要再次激活是个问题,今早找到个方法很实用,亲测也是有效的.激活成功如下图: 具体步骤如下: 1. 下载破解补丁和激活码[小哈学Java公众号提供],使用 ...

  4. 使用Pods中使用Swift和Objective-C混编-编译不通过的原因

    iOS开发#使用Pods中使用Swift和Objective-C混编-编译不通过的原因-ld: symbol(s) not found for architecture arm64 问题基本描述 在P ...

  5. Appium自动化测试实践

    安装配置Appium环境 安装appium 安装appium有两种方式,一种是通过命令行终端方式,一种是Appium Desktop.这里推荐使用Appium Desktop方式,只需下载下来安装就可 ...

  6. VUE实现Studio管理后台(七):树形结构,文件树,节点树共用一套代码NodeTree

    本次介绍的内容,稍稍复杂了一点,用VUE实现树形结构.目前这个属性结构还没有编辑功能,仅仅是展示.明天再开一篇文章,介绍如何增加编辑功能,标题都想好了.先看今天的展示效果: 构建树必须用到递归,使用s ...

  7. LeetCode 154.Find Minimum in Rotated Sorted Array II(H)(P)

    题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...

  8. vue开发路由相关基础知识和笔记

    路由实现:hash模式 和 history模式 hash模式: 概述 在浏览器中符号"#",#以及#后面的字符称之为hash,用window.location.hash读取: 特点 ...

  9. 2019-2020-2 20174318张致豪《网络对抗技术》Exp1 PC平台逆向破解

    Exp1_PC平台逆向破解 前期准备 一.逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数 ...

  10. python http代理支持 https

    首先需要2个软件来抓包. fiddler : http 代理软件可以分析,抓包,重放. wireshark : 全能抓包分析软件. RFC 提供了非常好的设计描述. https://tools.iet ...