下文通过命令stress命令进行演示CPU负载高对应的不同情况,stress用法可参考链接:stress
一、测试设备硬件资源情况
- 系统版本:Ubuntu 18.04.5 LTS
- CPU型号:Intel® Core™ i7-9700K CPU @ 3.60GHz
- CPU物理核数:8
- CPU逻辑核数:8(不支持超线程)
- 空闲CPU负载:0.1
- 空闲内存使用:
二、大量计算
产生4个进程,每个进程反复不停计算随机数的平方根:
结果分析:
- 系统负载:4<load<5 ,在只有4颗CPU的情况下,属于高负载;
- 4颗CPU使用率100%;
- 48.8 us(近似50%),用户空间占用CPU百分比升高明显;
三、大量wio
产生4个进程,每个进程反复调用sync()将内存上的内容写到硬盘:
结果分析:
- 系统负载:4<load<5 ,在只有4颗CPU的情况下,属于高负载;
- 4颗CPU使用率62%;
- 31.9 sy,内核空间占用CPU百分比升高明显;
四、大量内存消耗
1、一直占用内存的情况
产生4个进程,每个进程分配500M内存:
结果分析:
- 系统负载:4<load<5 ,在只有4颗CPU的情况下,属于高负载;
- 4颗CPU使用率100%;
- 49.8 us(一直进行默认stride操作,us很高);
- 内存使用相较空闲状态增加2G;
2、不断释放和重新分配内存
产生4个进程,每个进程不断释放和分配500M内存:
- 系统负载:4<load<5 ,在只有4颗CPU的情况下,属于高负载;
- 4颗CPU使用率100%;
- 63.1 sy(由于不断释放和分配,导致内核空间占用升高);
- 内存:由于不断释放和分配内存处于动态变化过程中;
可见,系统负载的升高,并非仅仅是CPU算力导致,其他情况后续不断完善。