Linux Load Average详解
时间:2022-07-28
本文章向大家介绍Linux Load Average详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Linux Load Average详解
引言
Linux系统中的load average是SRE工程师经常关注的指标,也是SRE工程师在面试时候经常会被问到的问题,大家用它来判断CPU
的工作负载,一般这个值如果是CPU核心数的多倍时,我们就认为CPU负载很高,需要处理,这样的认识对吗?
结论:不完全对
。load average不仅体现CPU负载,磁盘I/O,内存不足都会造成该值上升。
分析
- load average的使用场景
- 源码解读
该数据来源是计算CPU的内核态线程量(等价用户态进程量)(这里是我自己综合看各路资料总结,待确认),不仅包括了nr_running状态,还包括了nr_uninterruptible状态的线程,后者是会被I/O、内存资源关联影响的。
- 什么是nr_running、nr_uninterruptible状态?
这是用户态进程状态,有7种状态。running的状态好理解,就是正常运行的进程;而uninterruptible是一种特殊状态,表示的是一个等待硬件资源睡眠且无法被中断的进程,出现该状态的进程一般是因为在等待IO,例如磁盘IO、网络IO等。
也就是说,I/O和内存的不足,也会造成load average增加。
待办
- nr_running、nr_uninterruptible的来源测试分析。
- 内核态线程和用户态进程线程概念的理解。
- 一套测试验证方法
参考材料
https://zhuanlan.zhihu.com/p/75975041 | Linux Load Averages:什么是平均负载?https://github.com/torvalds/linux/blob/master/kernel/sched/loadavg.c | Linux相关内核源码https://cloud.tencent.com/developer/article/1087424 | linuxload average详细分析
http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html | Linux Load Averages: Solving the Mystery
https://blog.csdn.net/dog250/article/details/107792805 | Linux系统load average异常值处理的trick
- iBatis.Net(6):Data Map(深入)
- iBatis.Net(5):Data Map(了解)
- ModernPHP读书笔记(三)——PHP的良好实践
- PHP开发过程的那些坑(一) ——对象拷贝
- PHP开发过程的那些坑(二) ——PHP empty函数
- Thinking in SQL系列之数据挖掘Apriori关联分析再现啤酒尿布神话
- PHP开发过程的那些坑(三) ——PHParray_shift函数
- CSS3弹性盒布局
- iBatis.Net(4):DataMapper API
- PHP开发过程的那些坑(四) ——PDO bindParam函数
- iBatis.Net(3):创建SqlMapper实例
- PHP开发过程的那些坑(五) ——PHP的empty()
- iBatis.Net(2):基本概念与配置
- ASP.NET Web API中的依赖注入什么是依赖注入ASP.NET Web API依赖解析器使用Unity解析依赖配置依赖解析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 面试题:部分排序
- 变成语言的层次和类型
- Android自定义ViewGroup实现堆叠头像的点赞Layout
- Android给任何view添加全屏倾斜水印
- 分布式一致性协议 - Paxos
- 链表中穿针引线
- Android 帧动画的实例详解
- Android HandlerThread使用方法详解
- LeetCode 167,两数之和2
- 详解android 通过uri获取bitmap图片并压缩
- android线程消息机制之Handler详解
- 分布式一致性协议 - ZAB
- 删除链表的倒数第N个节点
- Open3d学习计划—高级篇 2(彩色点云配准)
- Android7.0上某些PopuWindow出现显示位置不正确问题的解决方法