首页 > 其他分享 >性能测试瓶颈之CPU问题分析与调优

性能测试瓶颈之CPU问题分析与调优

时间:2024-08-05 15:28:15浏览次数:10  
标签:使用率 瓶颈 cpu 调优 切换 进程 上下文 CPU

一、CPU的简介

  • CPU概念:CPU(中央处理器:Central Processing Unit),是一块超大规模的集成电路,是计算机的运算核心【拿到数据后先计算】和控制核心【然后再根据计算结果去控制】。
  • 功能:主要是解释计算机指令以及处理计算机软件中的数据。电脑中所有操作都由CPU负责读取指令,对指令译码并执行指令的核心部件。
    • 计算机程序编译后 0101二进制代码,CPU 接受到这个指令,解释指令拿到数据,处理数据。
  • CPU由3个模块组成,三个部分由内部总线连接起来:
    • 控制单元:根据计算结果去控制数据的流向,把内存的指令、数据读入寄存器,控制计算机
    • 运算单元:拿到数据先计算数据
    • 存储单元: 临时的数据存储在存储单元,比磁和-内存更小,速度更快。

二、CPU的信息查看命令

搭建好性能测试环境后,进行性能测试之前,最好能先去看一下服务器CPU的基本信息和参数

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

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

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

wc -lwc 是一个命令,用于计算文件中的字节数、字数和行数。-l 选项告诉 wc 只计算行数。

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

  • Sockets = 物理cpu
  • Cores per Socket = 一个插槽上CPU核数
  • Threads per core = 每个核上超线程数
  • CPUs=逻辑cpu

三、CPU关注性能指标

 

关注指标1: CPU使用率

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

CPU使用率=非空闲时间占总CPU时间的百分比, 越高说明CPU越繁忙,就可能需要进行性能问题分析和调优。

参数:

%us:用户 CPU,比如java程序,应用程序等:用户态使用CPU的百分比(user)。用户CPU使用率高,通常说明有应用程序比较繁忙。
%sy:系统CPU:表示CPU在内核态运行的时间百分比。系统CPU 使用率高,说明内核比较繁忙。
%iowait:等待I/O:表示等待I/O的时间百分比。iowait高,说明系统与硬件设备的I/O 交互时间比较长,比如跟键盘、网卡、显示器等交互。

ni【软/硬中断】:分别表示内核调用软中断处理程序、硬中断处理程序的时间百分比。它们的使用率高,通常说明系统发生了大量的中断。 (1)当CPU的时间分片正在处理某个任务还没完成时钟时间的时候,突然收到硬中断或软中断指令,CPU被打断需要去响应,才能继续执行任务; (2)如果ni参数很高,说明中断的数量很多,说明CPU不停的被打扰,需要分析是什么中断。一般ni比较高的情况比较少,不过ni高也会导致
sy【内核占比】比较高,是环环相扣的,要能分析。 %st/gu:steal/guest:在虚拟化环境中会用到的窃取CPU使用率(steal)和客户CPU使用率(guest),分别表示被其他虚拟机占用的CPU
时间百分比,和运行客户虚拟机的CPU时间百分比。
这两个一般比较低,不会成为cpu的瓶颈 不太需要关注

%id:空闲 CPU百分比,CPU使用率 = (100-id)%
比较简单的算法: 100% - id% = CPU使用率

关注指标2:平均负载

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

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

1 逐步降低,是CPU后来越来越空闲; 逐步增加,CPU越来越繁忙; 或者持平,就是CPU稳定。

2 理想情况下,平均负载=逻辑 CPU个数,这表示每个CPU都恰好被充分利用;如果大于逻辑 CPU 个数,就表示负载较重;如果平均负载的值高于CPU的3-5倍 ,那么很有可能CPU存在瓶颈,就需要分析和调优。

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

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

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

四、性能的基本Linux命令

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

第一行数据:

1 当前系统时间,启动运行了多长时间

2 [2 users] 有多少个终端用户连接, 不代表多少个账户 【同一个账户 多个终端也算】

3 [load average]:服务器性能的重点关注值,系统过去1分钟的平均负载、 过去5分钟的平均负载、 过去15分钟的平均负载
  如果平均负载大于CPU数量,甚至达到3- 5倍cpu数量,说明系统负载非常大了。这个时候才会需要去观察下面的详细数据分析原因。

第二行数据:默认是进程数,可以切换为线程数

1 总进程数,正在运行的进程数,休眠的进程数 。

2 按下H, 切换为 Threads 当前总线程数 。

第三行数据:CPU的使用情况,这个是重点。

pid 进程id
USER 进程的归属者, 这个进程启动用户
PR 进程优先级,数字越大优先级高的话可以优先使用资源 ----性能不太关注 影响不大
NI 进程优先级切换,跟PR共同决定了进程的优先级 ---性能不太关注 影响不大
VIRT: 这个进程分配的虚拟内存
RES: 实际物理内存
SHR :共享内存会详细讲。
S: status,进程的状态,可以是R S 等
%CPU 这个进程占用了多少的cpu使用率 -----这个数值,在CPU为多核时候,是可以超过100
    进程列表中,默认排序规则,是根据 %CPU 数值从高到低的排序
    如果某个进程占用CPU高于75% 需要单独拎出来分析
%MEM 这个进程占用内存率,后面讲解。
TIME+: 这个进程占用CPU的总的时间,如果这个进程经常需要CPU进行计算和处理,这个时间就会很大。
COMAND: 这个进程通过哪个命令启动的。

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

这个命令Linux系统不自带,需要安装,安装命令 : yum install -y sysstat

mpstat 1 10 : 1s刷新一次数据,实时监控工具,主要报告与cpu相关统计信息,这个CPU是所有CPU的平均整合情况;总共打印10次。

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

1 同样不是系统自带的命令,需要额外安装: yum install sysstat -y

2 监控全部或指定进程的cpu、内存、线程、设备io等资源占用情况和上下文切换信息,用来实时查看进程的CPU、内存、I/O以及上下文切换等指标信息

3 一般会加一些参数来使用pidstat命令:pidstat -u -w -p pid ,过滤指定的进程的信息显示。

  -u: CPU的信息,-w【switch】,-p 【指定进程id】

  这个命令里我们会重点看上下文切换信息,上下文切换包括资源上下文切换和非资源切换:

  • cswch/s :自愿上下文切换 :,资源不够资源切换
  • nvcswch/s:非自愿上下文切换 ,时钟周期+中断等被迫切换

4 如果这个上下文切换高,那么CPU的sy一般会比较高, 就需要去定位原因了

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

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

procs: r 显示多少进程在等待,b 显示多少进程在不可中断的休眠
memory: swpd 显示多少块被换出磁盘,free显示剩下的空闲块,buff正在被用作缓冲区的块,cache正在被用作操作系统的缓存
swap: 现在交换活动, si 每秒有多少块正在被换入内存 so正在被换出到磁盘
io: 显示了多少块从块设备读取(bi)和写出(bo),通常反映了硬盘I/O的繁忙程度
system: 显示每秒中断(in)和上下文切换(cs)的数量
cpu:显示所有的cpu时间花费在各类操作的百分比,包括执行用户代码(非内核),执行系统代码(内核),空闲以及等待IO

5、iostat 显示设备,分区和网络文件系统的CPU统计信息和输入/输出统计信息

重点的参数:
-c 显示CPU使用率报告
-d 显示设备【磁盘】使用率报告
-k 以每秒千字节显示统计报告
-m 以每秒兆字节显示统计报告
-x 显示扩展统计信息

结果显示:
Device: 磁盘信息
rrqm/s :读磁盘队列数量
wrqm/s 写磁盘队列数量
r/s w/s 每秒的读\写的请求次数
rMB/s wMB/s 每秒读\写磁盘的大小
avgrq-sz 平均请求磁盘扇区数
avgqu-sz 等待队列的大小
await r_await w_await 等待
svctm 请求用的时间
%util 至少有一个活跃的 读写操作的时间占比

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

安装: yum install dstat -y

参数:
-c: cpu监控
-m: 内存
-d:disk 磁盘
-n:net 网络
-l: load 系统负载
-y:system ,系统
-r: io
-t: 加上时间显示

标签:使用率,瓶颈,cpu,调优,切换,进程,上下文,CPU
From: https://www.cnblogs.com/xingzhifeng/p/18342999

相关文章

  • 安装CPU版本的TensorFlow教程
    在这篇博客中,我将详细介绍如何在Conda虚拟环境中安装CPU版本的TensorFlow。第一步,首先在安装前你需要检查你的电脑中是否安装VisualStudio,在应用中搜索visual,如下图,如果有就跳到下一步,没有的话就跟着下面步骤安装。 VisualStudio安装,复制链接到浏览器打开,选择适合你电脑......
  • Python实现简单的模型调优技术
    Python实现简单的模型调优技术一、开篇:模型调优的魅力所在1.1模型调优:不只是参数游戏1.2为什么好的模型也需要调优二、基础篇:理解模型调参的必要性2.1模型评估指标:选择合适的尺子2.2常见调参方法:从手动到自动化2.3验证集的重要性:不要让模型裸奔三、实战篇:动手......
  • 突破PyCharm索引瓶颈:提升文件索引速度的策略
    突破PyCharm索引瓶颈:提升文件索引速度的策略PyCharm作为Python开发者的首选IDE,以其强大的功能和灵活的配置而广受好评。然而,当处理大型项目或复杂文件结构时,文件索引慢的问题可能会显著降低开发效率。本文将提供一系列优化技巧和解决方案,帮助开发者在PyCharm中解决文件索引......
  • linux测试cpu性能的命令
    linux测试cpu性能的命令在Linux中,可以使用多种命令来测试CPU性能。以下是一些常用的命令:stress:一个通用的压力测试工具,可以生成CPU、内存、IO等负载。安装:sudoapt-getinstallstress(Debian/Ubuntu)使用:测试所有CPU核心:stress--cpu8测试单个CPU核心:stress--cpu......
  • caffe编译和基本使用(Windows + CPU)
    xqspace0.摘要本文主要完成以下几点:caffe默认支持是vs2013/vs2015+python2.7/python3.5,使用其他版本会比较麻烦,这里使用的是vs2015和python3.5;完成caffe在windows上的编译(cpu版);提供caffe的python接口;caffe的基本使用方法(这里是推荐几篇讲的比较详细的入门博文);......
  • JVM:双亲委派,内存溢出,垃圾回收,JVM调优
    1,双亲委派1.1,类加载过程【加载】:加载是指将类的字节码文件读入内存,并在内存中创建一个Class对象,用来描述该类的结构信息。类的字节码可以来自本地磁盘、网络等各种来源。【连接】:连接是指对类的字节码进行验证、准备和解析的过程。验证:验证字节码文件的正确性和安全性。例......
  • CPU和GPU的区别(CPU核心少但是强和GPU核心多但是弱)
    目录CPU和GPU的区别(CPU核心少但是强和GPU核心多但是弱)内存和显存的区别在Helo2和Zk-Snarks中使用CPU还是GPU提升验证效率实现串行和并行的原因及简单举例CPU和GPU的区别(CPU核心少但是强和GPU核心多但是弱)CPU(中央处理器)和GPU(图形处理器)在设计和功能上存在显著差异:设......
  • 达梦数据库系列—44.SQL调优
    目录SQL优化思路1、定位慢sql2、SQL分析方法2.1执行计划2.2ET工具2.3dbms_sqltune工具3、SQL语句优化3.1索引3.2SQL语句改写3.3表设计优化3.4表的连接方式3.5HINT4、统计信息SQL优化思路1、定位慢sql待优化的SQL大致可分为两类:1、SQL执行时间在十......
  • Linux - 查看CPU使用率命令mpstat
    简介想在imx6q上定时查看CPU使用率,发现命令mpstat可以直接使用,不需要额外安装 使用mpstat的基本用法mpstat的全称为MultiprocessorStatistics,是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。这个命令Linux缺省没有安装,它是Linux性......
  • 西门子smart能搜到cpu但连接当前IP地址失败
    如果显示这一步,那么你的物理连接是没有问题的,应当是plc和电脑并不在同一网段导致的问题首先打开smart左侧菜单栏的通信将通信接口改为TCPIP.AUTO.1结尾再次尝试,如果还是报错,那么win+r打开运行,打开cmd输入ipconfig查看本机网段与plc是否为同一网段此电脑就不在同一网段所......