性能测试瓶颈:CPU 问题的深度分析和调优

本贴最后更新于 201 天前,其中的信息可能已经时移世易

前言

我们做性能测试的时候,除了使用工具编写脚本并执行之外,最核心的工作就是做性能测试结果分析和问题调优。然后在做性能测试的时候,非常常见的一类问题就是CPU的问题。所以,要专业做性能测试就免不了要深入学习一下CPU的原理和常见的分析和监控的命令。

CPU的介绍

概念:CPU(中央处理器:Central Processing Unit)),是一块超大规模的集成电路,是计算机的运算核心【拿到数据后先计算】和控制核心【然后再根据计算结果去控制】。

图片.png

CPU的信息查看命令

我们搭建好性能测试环境后,进行性能测试之前,最好能先去看一下服务器CPU的基本信息和参数。所以,我们先来学习几个CPU查看的命令。

1、查看物理CPU的个数: cat /proc/cpuinfo

图片.png

通过上图: 这个虚拟机的物理cpu2个,每个物理cpu的逻辑CPU个数为1个,所以逻辑CPU的个数就是2个。

2、也可以直接用命令: cat /proc/cpuinfo| grep "processor"| wc -l 查看逻辑CPU的个数。

图片.png

3、通过lscpu命令查看:显示CPU制造商、架构、CPU数量、型号、主频以及缓存等信息。

图片.png

CPU关注性能指标

我们真正需要重点学习的是CPU在性能测试的时候,我们分析应该关注哪些指标。 这个是性能分析的关键。如下图所示:

图片.png

关注指标1: CPU使用率

CPU使用率是我们最直观能看到的指标,所以会优先去关注。CPU利用率行业内标准是一般不要超过75%,如果超过了就需要分析原因,并找到问题和调优了。

图片.png

关注指标2:平均负载

平均负载指系统的平均活跃进程数,一个时间段内平均有多少进程数在活跃,跟cpu核数做比较,算出繁忙情况;这是服务器性能的重点关注值,一般CPU的使用率高的话,平均负载也是高的。

主要包括三个数值,过去1、5、15钟的平均负载。可以通过这三个值看到负载整体的趋势。

图片.png

关注指标3:上下文的切换cs

系统内核和应用存储共用CPU的内核,就会需要不停的争抢资源,就会出现上下文切换。

上下文切换多了不是好事儿,过多的上下文切换,会将原本运行进程的CPU时间,消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,很少有时间真正计算和处理数据,减少和缩短了进程真正运行的时间,通常会导致CPU内核【sy】消耗资源比较高,会成为性能瓶颈,需要优化。

性能的基本Linux命令

了解CPU需要关注的性能指标,那么在性能测试执行的时候,如何去监控这些指标呢? 我们就需要通过一些常用的监控命令了。

1、top命令:常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况

图片.png

上图就是top命令的结果显示,我们来一一分析:

2、mpstat:进程相关的统计报告信息,跟top命令里信息类似。

图片.png

结果里显示的信息跟top命令里基本一样,就不详细赘述介绍了。

3、pidstat:监控全部或指定进程的某个进程查看cpu、内存、线程、设备io等资源占用情况和上下文切换信息。重点在于上下文切换。

图片.png

4、vmstat :虚拟内存统计的缩写,很强大的命令,基本涵盖了所有监控的信息,可对虚拟内存、进程、cpu活动进行监控。

vmstat 1 5 : 间隔1秒钟刷新一次,总共收集5次 就结束,显示结果如下:

图片.png

5、iostat 显示设备,分区和网络文件系统的CPU统计信息和输入/输出统计信息 [需要额外安装]

图片.png

重点的参数

结果显示:

6、dstat 是一个用来替换vmstat、iostat等命令的工具,功能比较全,有彩色的界面

图片.png

7、sar:几乎可以统计服务器的所有信息

1 操作
tricy 在 2024-05-07 10:48:20 更新了该帖
回帖
请输入回帖内容 ...