前言:
每次排查性能相关问题的时候,我们都会先通过监控来查看下当前机器的CPU负载,根据负载结果值的输出,来判断当前CPU的基本状况。
那么什么是CPU负载呢?具体CPU负载多少才算是正常的呢?有哪些情况会导致CPU负载高呢?
今天我们就来统一说明下。
注意:笔者使用ubuntu:18.04版本镜像创建docker 容器,如果没有相关命令,则需要提前装载好
1.CPU负载的查看通过top命令或者uptime命令可以查看到
1.1 top命令root@7bc18553126f:/# top
top - 02:10:14 up 22:10, 0 users, load average: 8.08, 6.68, 3.56
Tasks: 15 total, 9 running, 6 sleeping, 0 stopped, 0 zombie
1.2 uptime命令
root@7bc18553126f:/# uptime
02:10:23 up 22:10, 0 users, load average: 8.07, 6.72, 3.60
上面两个命令中load average所展示的结果就是当前CPU的负载值,这三个值分别代表:1min 5min 15min分钟内的平均负载值。
2.CPU平均负载的定义通过1我们知道了如何查看CPU负载,那么什么是CPU负载呢?
标准答案是:单位时间内,系统处于可运行状态和不可中断状态的平均进程数。
可运行状态:正在使用CPU或者正在等待CPU的进程
不可中断状态:处于内核态关键流程中的进程,不可被打断,如等待硬件设备IO响应
通过命令ps我们可以查看到当前有哪些进程,如下所示:
root@7bc18553126f:/# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 42290 0.2 0.1 3020 2340 pts/1 S+ 01:00 0:13 watch -d uptime
root 49918 0.0 0.1 5292 2384 pts/3 R+ 02:23 0:00 ps aux
STAT这一列就代表当前进程的状态,具体有哪些状态呢?我们可以通过man ps来查看到:
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped by job control signal
t stopped by debugger during the tracing
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent
正常运行情况下的进程处于R状态(已执行或等待执行);不可中断进程处于D状态;
那么CPU 平均负载就是单位时间内处于R状态+D状态的进程数。
3.CPU平均负载多少比较合适?理论上来说:最好的状态就是每个CPU有一个进程在运行是最好的(如我们的机器是4C,那么有4个正在运行的进程就非常完美)
依据业界经验值而言:当load average
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?