1、什么是平均负载
单位时间内,系统处于可运行状态和不可中断状态的平均进程数,不仅包含了正在使用的CPU,还包含了等待的I/O进程
比如平均负载为2时,意味着什么
情况一:CPU只有2个时,CPU刚好全部被占用
情况二:CPU有4个时,CPU有50%的空闲
情况三:CPU只有1个时,有一半的资源竞争不到CPU
平均负载为多少时才合理
1、使用top命令查看CPU个数,或者从/proc/cpuinfo中读取
2、使用uptime或者top命令来查看系统负载情况,下面用uptime来演示,最后三个数字依次代表过去1分钟,5分钟,15分钟的平均负载
3、进行分析
情况一:如果过去1分钟,5分钟,15分钟的平均负载相差不大,说明负载很文档
情况二:如果过去1分钟远小于15分钟,说明过去1分钟负载在减小,过去15分钟内有很大的负载
情况三:如果过去1分钟远大于15分钟,说明过去1分钟负载在增加,也可能持续增加,所以需要观察,如果近一分钟的负载接近或者大于CPU 个数,意味着发生过载,需要进行分析和想办法优化
4、假设我们在⼀个单+CPU+系统上看到平均负载为+1.73,0.60,7.98那么说明在过去+1+分钟内,系统有+73%+的超载,⽽在+15+分钟内,有 +698%+的超载,从整体趋势来看,系统的负载在降低
5、⼀般,当平均负载⾼于+CPU+数量+70%+的时候,你就应该分析排查负载⾼的问题了。一旦负载过高,响应就会变慢。70%也不是绝对的,最 推荐的⽅法,还是把系统的平均负载监控起来,然后根据更多的历史数据,判断负载的变化趋势,当发现负载有明显升高趋势时,比如翻倍 了,再进行分析和检查
2、什么是可运行状态和不可中断状态
正在使用CPU或者正在等待的进程称作为可运行状态,通过ps命令查看整体的进程情况,STAT 为R的进程即为可运行状态
正处于内核态关键流程的进程称作为不可中断状态,常见的硬件设备的I/O响应、磁盘的读写数据时,这种是对进程和硬件设备的保护机制,STAT 为D的进程即为不可中断状态
3、CPU使用率
CPU密集型进程:使⽤⼤量+CPU+会导致平均负载升⾼,此时这两者是⼀致的
I/O密集型进程,等待+I/O+也会导致平均负载升⾼,但+CPU+使⽤率不一点很高
⼤量进程调度也会导致平均负载升⾼,此时的+CPU+使⽤率也会比较高
4、平均负载与CPU使用率案件分析
命令:mpstat是⼀个常⽤的多核CPU性能分析⼯具,⽤来实时查看每个CPU的性能指标,以及所有CPU的平均指标
pidstat是⼀个常⽤的进程性能分析⼯具,⽤来实时查看进程的CPU、内存、I/O+以及上下⽂切换等性能指标
CPU密集型进程
环境:CPU使用率100%
正好有⼀个CPU的使⽤率为100%,但它的iowait只有+0。这说明,平均负载的升⾼正是由于+CPU+使⽤率为+100%
从这⾥可以明显看到,stress进程的CPU使⽤率为100%
I/O密集型进程
平均负载的升⾼是由于iowait的升⾼
可以发现,还是stress进程导致的。使用pidstat -d 5 1查看延迟多少秒
大量进程场景
由于系统只有2个CPU,明显⽐8个进程要少得多,因⽽,系统的CPU处于严重过载状态
可以看出,8个进程在争抢2个CPU,每个进程等待CPU的时间(也就是代码块中的%wait列)⾼达75%。这些超出CPU计算能⼒的进程,导致 CPU严重过载
5、防止cpu负载过高的方法
短期来看,可以通过kill和killall来杀死一些影响cpu负载的进程,达到降低cpu负载的目的。这些进程的状态是可以利用ps显示出来的,然后对相关的进程采取一定的措施就能在短时间内降低cpu的负载
参考:https://wenku.baidu.com/view/7f38990a463610661ed9ad51f01dc281e53a566f.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律