性能测试一定绕不开并发和并行,而并发和并行又离不开CPU,本文就来带大家深入理解一下究竟什么是并发和并行以及CPU的状态和核心参数。
并发和并行
通常情况下,CPU 有几个核,就可以并行执行几个进程(线程)。这里强调一个概念,我们通常说的并发,英文是 concurrent,指的在一段时间内几个任务看上去在同时执行(不要求多核);而并行,英文是 parallel,任务必须绝对的同时执行(要求多核)。
比如一个 3核的 CPU 就好像拥有 3条流水线,可以并行执行3任务。一个进程的多个线程执行过程则会产生竞争条件,如下图
CPU主要参数
在linux系统中,我们可以通过top命令获取CPU的主要参数:
其中主要参数的含义如下:
us(user),即用户空间 CPU 使用占比。
sy(system),即内核空间 CPU 使用占比。
ni(nice),nice 是 Unix 系操作系统控制进程优先级用的。-19 是最高优先级, 20 是最低优先级。这里代表了调整过优先级的进程的 CPU 使用占比。
id(idle),闲置的 CPU 占比。
wa(I/O Wait),I/O Wait 闲置的 CPU 占比。
hi(hardware interrupts),响应硬件中断 CPU 使用占比。
si(software interrrupts),响应软件中断 CPU 使用占比。
st(stolen),如果当前机器是虚拟机,这个指标代表了宿主偷走的 CPU 时间占比。对于一个宿主多个虚拟机的情况,宿主可以偷走任何一台虚拟机的 CPU 时间。
load average——平均负载。 负载可以理解成某个时刻正在排队执行的进程数除以 CPU 核数。平均负载需要多次采样求平均值。 如果这个值大于1,说明 CPU 相当忙碌。
CPU状态
用户空间程序对应参数us
内核空间程序对应参数sy
中断程序对应参数hi和si
Idle对应参数id
I/O对应参数wa
被偷走对应参数st
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!