博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【运维】CPU负载
阅读量:5227 次
发布时间:2019-06-14

本文共 1163 字,大约阅读时间需要 3 分钟。

最近对我的本本(4核8线程)用top命令看系统状况出现了CPU利用率超过200%的情况,非常诧异,查了下相关资料,把这个问题弄清楚了。

首先来分析下CPU Load

load average: 0.09, 0.05, 0.01

分别是1分钟、5分钟、15分钟的平均Load。

Load这个东西怎么理解呢,就像一条马路,有N个车道,如果N个进程进入车道,那么正好一人一个,再多一辆车就占不到车道,要等有一个车空出车道。
在CPU中可以理解为CPU可以并行处理的任务数,那么就是“CPU个数 * 核数”,如果CPU Load = CPU个数 * 核数 那么就是说CPU正好满负载,再多一点,可能就要出问题了,有任务不能被及时分配处理器,那么保证性能的话,最好是小于CPU个数 * 核数 *0.7。

查看CPU核数可以通过:grep ‘model name’ /proc/cpuinfo

那么以哪个平均值为准呢?如果1分钟平均出现大于CPU个数 * 核数的情况,还不用担心,如果5分钟平均也是,那就要警惕了,15分钟平均也是这样,就要分析哪里出问题了,防范于未然

CPU利用率超过100%的问题,也是差不多,top命令应该是把每个核的CPU占用率加起来,算一个和,于是多核情况下会出现超过100%。

另外Context Switch Rate也是个非常值得注意的值,因为线程间切换的代价也是非常高的。

引用一个公式:Context Switch Rate = Interrupt Rate + TPS* N

对于一个多线程的程序,我觉得准备一个控制线程来调度任务是非常必要的,免得线程过于高并发,导致资源的争用和线程切换带来性能问题,最好控制并发的线程数基本等于CPU的总核数,减少这个N,获得更好的处理器性能。

参考了如下几篇文章:

 

 

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cores"| uniq# 查看逻辑CPU的个数cat /proc/cpuinfo| grep "processor"| wc -l

 查看CPU信息(型号)

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

 

查看内 存信息

# cat /proc/meminfo

转载于:https://www.cnblogs.com/Dhouse/p/6839725.html

你可能感兴趣的文章
strong和copy的区别
查看>>
MySQL 之 表操作
查看>>
Linux下phpsh安装与使用
查看>>
Ubuntu14.04+eclipse下cocos2d-x3.0正式版环境的搭建
查看>>
iOS UIScrollView的嵌套使用(仿穷游主界面的实现)
查看>>
mac 如何显示隐藏文件和.点开头文件?
查看>>
AddChildViewController
查看>>
C#解压或压缩文件夹
查看>>
人机猜拳
查看>>
WEB应用从服务器主动推送Data到客户端有那些方式?
查看>>
07 装饰器及进阶
查看>>
黑马程序员——java学习7(152-165)——String类和StringBuffer,StringBuilder
查看>>
Asp.Net 5
查看>>
流式计算之Storm简介
查看>>
44.纯 CSS 创作背景色块变换的按钮特效
查看>>
TopCoder SRM 571 题解
查看>>
CentOS 6.2 安装chromium,并可以使用yum update保持更新
查看>>
vue.js计算属性 vs methods
查看>>
Day004课程内容
查看>>
调整显示屏幕偏移和刷新频率[zt]
查看>>