六、性能测试之CPU分析

news2024/11/24 16:59:21

性能测试之CPU分析

      • 一、回顾:性能测试分析的思路
      • 二、cpu知识
        • 1、影响cpu性能的物理因素:架构、主频、核
        • 2、结构:主要物理结构是3个,实际是有4个
        • 3、内存
        • 说人话(总结)
        • 4、内核&线程&架构
        • 5、查看cpu信息
          • 1、`top`
          • 2、`lscpu`
          • 3、`cat /proc/cpuinfo`
        • 6、监控cpu
          • cpu 分析:
          • load average值和cpu使用率之间的关系
          • 上下文
          • cpu性能分析:load高 && cpu高
          • 做性能测试时候每次的结果都相差很大/不准,怎么分析?

一、回顾:性能测试分析的思路

  • 性能测试分析的思路:先分析硬件 、网络、 系统配置、应用程序
  • 硬件: cpu、内存、磁盘、网络、io
  • 本次我们就来谈谈cpu

二、cpu知识

  • 6、监控cpu

    • cpu 分析:
      • us:用户进程空间中未改变过优先级的进程占用cpu百分比(程序在cpu进行计算的时候,没有改变过优先级,没有成为内核进行计算,在非内核计算的时间)
        • 用户运行计算–>cpu密集计算 or FGC or 死循环
          • cpu密集计算:代码逻辑很复杂,可能计算时候要进行密集的逻辑判断,这时候会消耗us态的时间
          • FGC:
            • GC:资源回收
            • FGC:对老年代的资源进行回收。程序运行起来会分配内存资源,如果资源一直用的上,那就一直放在内存里,然后不用了再进行回收。这种回收消耗时间较长。资源回收就会带来中断和卡顿,卡顿也会导致程序暂时无响应(卡顿时间是毫秒级)
            • YGC:(Young/Minor GC)新生代资源回收:资源用一次就不用了,把资源释放
          • 死循环:一直在计算,用户态死循环就会占用很长时间
      • sy:内核空间占用cpu百分比。
        • 做上下文切换(自愿上下文切换,非自愿上下文切换)
          • 上下文切换:寄存器里的资源进行切换
          • 自愿上下文切换 --> 内存瓶颈
            • 举例:比如进行计算时候,有10个程序,第一个程序有连续5个指令,但是在执行第三个指令的时候因为资源不够,要等待,那就切换其他进程处理其他指令。(资源不够,自觉切换到另外的指令)
          • 非自愿上下文切换 -->cpu瓶颈
            • 举例:执行第三个指令的时候,时间到了,这时候没有执行完,被迫中断/时间有,但是来了个优先级更高的,要立刻执行,强制中断。如果cpu够多,那就可以用另外的cpu去处理,所以是cpu瓶颈(有可能有优先级更高的指令,指令执行的时间已经到了,被迫中止当前的指令,去执行其他指令)
      • ni:用户进程空间内改变过优先级的进程占用cpu百分比(内核->非内核,或非内核->内核切换所用时间)
        • 用户运行计算–>cpu密集计算 or FGC or 死循环
      • id:空闲时间百分比
      • wa:空闲&等待IO的时间百分比(很多时候是资源不够导致的等待)
        • 等待资源 --> IO问题(磁盘/网络)
      • hi:硬中断时间百分比(程序中断导致的切换(比如时间片到了))
      • si:软中断时间百分比(自愿进行切换)
        • 软中断 -->cpu竞争抢资源 or 资源不够IO问题
      • st:虚拟化时被其余vm窃取时间百分比
        • 抢占资源 --> 宿主机抢占资源
    • load average值和cpu使用率之间的关系
      • 现在的linux服务器中,load average不等于cpu使用率
      • load average是系统的整体负载体现
        • 它包括 cpu负载+disk负载+网络负载+外设负载
        • loadaverage=cpuload+ioload(disk+网络+外设负载都是io负载)
      • cpu的使用:用户进程使用的时间us,系统内核运行时间sy,空闲时间idle,管理被抢占时间st
        • 繁忙:us+sy+st+ni+hi+si cpu使用率的时间(除以总时间)
        • 空间:idle+wa
      • 上下文
        • 上下文:cpu寄存器和程序计数器

          • 程序计数器:存储cpu正在执行的指令位置和下一条指令的位置
            在这里插入图片描述
        • 上下文切换:先把当前任务的cpu上下文(cpu寄存器和程序计数器)保存起来(内核中),然后加载新任务的上下文到cpu的寄存器和程序计数器中,cpu再跳转到程序计数器上执行新任务)

        • 上下文切换类型:进程上下文切换,线程上下文切换,中断上下文切换

          • 进程:资源的基本单位
          • 线程:调度的基本单位
        • 进程上下文切换

          • 特权等级,跨等级时,需要系统调用:
            • 同进程上下文切换:进程用户态-- 系统调用–>进程内核态–系统调用–>进程用户态
            • 不同进程上下文切换:进程切换时要保存用户态资源(虚拟内存,栈等)
        • 线程上下文切换

          • 线程,共享进程的资源,但是,线程也有自己的所有数据,如栈,寄存器
          • 同进程中线程上下文切换:进程资源共享,切换线程私有资源
          • 好比,同一个公司,不同部门之间交流;同公司不同楼层交流
        • 不同进程中线程上下文切换:切换进程

    • cpu性能分析:load高 && cpu高
      • top
        • 情况1:sys系统态高 --> 需要排查cpu上下文切换
          • 如果非自愿上下文切换多,说明cpu不够用,进程时间片刻,被迫切换
          • 如果资源上下文切换多,说明计算用的资源不够用,可能存在IO,内存瓶颈
        • 情况2:si软中断高 --> cpu抢资源,资源不够用IO问题
          • sys高+si高 --> 推导出:内存 or网络IO问题 --> 解决方法:排查内存和IO
          • sys高+si不高 --> 推导出:cpu瓶颈 --> 解决方法之一 :加cpu
        • 情况3:us用户态高 --> 用户程序计算
          • 密集型计算,内存FGC,资源等等(线程池)–>解决方法:逐个排查
    • 做性能测试时候每次的结果都相差很大/不准,怎么分析?
      • 如果是用无线网络测试的,可能会出现数据传输不稳定,出现延迟,导致结果会出现较大出入。我们就需要监控网络情况。有以下几种方式:
        • 1,jmeter聚合报告最后两列,可以利用这两个值计算出带宽。企业可能用千兆光纤,但是企业的服务器一般只有几兆到几十兆。
        • 2,也可以通过监控方式,如果有云服务器的管理台,可以看下管理台的网络流量图。
        • 3,直接ping被测服务域名/ip,看看网络的延迟时间。如果时间在几毫秒~几十毫秒以内,那是可以接受的。我们可以在没有做测试前可以ping一下,正在做测试过程中也ping一下,看看有没有明显增大,如果增大非常多,甚至出现丢包,那就说明延迟已经影响性能测试,网络已经成为瓶颈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/941862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫逆向实战(二十五)--某矿采购公告

一、数据接口分析 主页地址:某矿 1、抓包 通过抓包可以发现数据接口是cgxj/by-lx-page 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个param的加密参数 请求头是否加密? 无响应是否加密? 无c…

TypeScript配置-- 1. 新手处理TS文件红色波浪线的几种方式

Typescript 规范化了JS的项目开发,但是对一些项目的一些新手来说,确实是不怎么优好,譬如我:将我之前珍藏的封装JS代码,拿进了配置了tsconfig.json的vue3项目,在vscode下,出现了满屏的红色 &…

css学习7(盒子模型)

1、盒子模型图&#xff1a; Margin(外边距) - 清除边框外的区域&#xff0c;外边距是透明的。Border(边框) - 围绕在内边距和内容外的边框。Padding(内边距) - 清除内容周围的区域&#xff0c;内边距是透明的。Content(内容) - 盒子的内容&#xff0c;显示文本和图像。 <!DO…

接口自动化测试 —— Jmeter 6种定时器应用

①定时器是在每个sampler&#xff08;采样器&#xff09;之前执行的&#xff0c;而不是之后&#xff0c;不管这个定时器的位置放在sampler之后&#xff0c;还是之下&#xff0c;都在sampler之前得到执行 ②定时器是有作用域的&#xff0c;当执行一个sampler之前时&#xff0c;…

机器学习---决策树算法(CLS、ID3、CART)

1. 决策树 决策树&#xff08;Decision Tree&#xff09;又称为判定树&#xff0c;是运用于分类的一种树结构。其中的每个内部结点 &#xff08;internal node&#xff09;代表对某个属性的一次测试&#xff0c;每条边代表一个测试结果&#xff0c;叶结点&#xff08;leaf&am…

Flutter实现StackView

1.让界面之间可以嵌套且执行动画。 2.界面的添加遵循先进后出原则。 3.需要使用AnimateView&#xff0c;请看我上一篇博客。 演示&#xff1a; 代码&#xff1a; Stack: import package:flutter/cupertino.dart;///栈&#xff0c;先进后出 class KqWidgetStack {final Lis…

Excel显示此值与此单元格定义的数据验证限制不匹配怎么办?

总结&#xff1a;1、在编辑excel文档的时候&#xff0c;弹出此时预测单元格定义的数据验证&#xff0c;限制不匹配的提示。2、这是我们点击菜单来的数据菜单。3、然后点击数据工具栏的数据验证下拉按钮。4、在弹出的菜单中选择数据验证的菜单项。5、然后在打开的窗口中点击左下…

【附安装包】Adobe XD2022安装教程

软件下载 软件&#xff1a;Adobe XD版本&#xff1a;2022语言&#xff1a;简体中文大小&#xff1a;346.8M安装环境&#xff1a;Win11/Win10&#xff08;1809版本以上&#xff09;硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff0c;不支持7代以下CPU&#xff09;下载通…

正中优配:新能源股票为何跌跌不休

从前在A股商场炙手可热、涨势如虹的新能源股票&#xff0c;比方光伏、风电、新能源轿车板块的股票&#xff0c;本年以来却是跌跌不休。有些从前的龙头股&#xff0c;看看K线图&#xff0c;走势用“疑是银河落九天”来描述好像也不为过。可是另一方面&#xff0c;这些新能源股票…

头条移动端项目Day06 —— kafka及异步通知文章上下架

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

3d素材库素材资源平台大大节省老师备课时间

教育元宇宙相信大家有所耳闻&#xff0c;3D素材云库通过数字三维建模技术将现实中的物体、天气、灯光等1&#xff1a;1模拟还原到虚拟场景中&#xff0c;让人们在教育元宇宙平台中可视、可见、可感。 在元宇宙爆发的大背景下&#xff0c;3D互联网传播内容也将迎来一次全面升级&…

uniapp启动微信小程序开发者工具报错Enable IDE Service (y/N) 

下载安装好微信小程序开发者路径 配置好启动路径后 报错[微信小程序开发者工具] ? Enable IDE Service (y/N) [27D[27C 解决办法 因为微信开发者工具的服务端口号没有打开

人机对抗智能-部分可观测异步智能体协同(POAC)-(1)

环境链接&#xff1a;数据中心-人机对抗智能 (ia.ac.cn)http://turingai.ia.ac.cn/data_center/show/10 1.环境配置 Ubuntu 20.04 Anaconda python版本3.6 1.1 安装torch0.4.1失败 参考文章&#xff1a; 安装torch0.4.1的神坑_torch0.4.1_DEMO_Tian的博客-CSDN博客 co…

PostgerSql

建表修改字段等语句 1.建表 create table student ( id int, name varchar(30), birthday date, score numeric(5,2) ) 2.修改表名称 alter table student rename to student1; 3.修改表中列的类型 alter table student1 alter column name type varchar(40); 4.删除表的…

浙江大学提出自感知IMU网络精准捕获3D变形

运动捕捉目前有两种主流方法&#xff0c;视觉捕捉能捕获复杂的三维几何变形&#xff0c;但依赖于昂贵的光学设备并且存在视线遮挡问题&#xff1b;基于IMU的方法虽然简便&#xff0c;但难以捕获细微的3D变形。为了解决这个问题&#xff0c;浙江大学的研究者们提出了一种可配置的…

phpspreadsheet导出excel自动获得列,数字下标

安装composer require phpoffice/phpspreadsheetuse PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\Border;$spreadsheet new Spreadsheet(); $sheet $spreadsheet->getActiveSheet();//从65开&a…

怎么建设ITIIL运维管理体系?

市场上大多数ITIL解决方案都过于复杂&#xff0c;让我们举一个客户希望实施ITIL方案的例子。首先&#xff0c;客户要通过ITIL咨询来定义ITIL流程&#xff0c;并使其与业务目标保持一致。接下来就是购买ITIL软件&#xff1b;大多数ITIL解决方案将事件、问题和变更管理作为不同的…

金仓数据库KingbaseES Windows版本启动时报错的问题

服务启动提示&#xff1a; 原因是使用的授权版本不对&#xff0c;导致服务总是启动不了 先卸载&#xff0c;重启&#xff0c;重新安装&#xff0c;选择下面这个授权文件 再启动开发工具&#xff0c;成功

Python 中具有漂移的指数布朗运动;模拟股票价格的未来分布,以预测股票的未来价值

一、说明 随机过程是由概率定律生成的一系列事件或路径。也就是说&#xff0c;随机事件可以随着时间的推移而发生&#xff0c;但受特定的统计和概率规则的约束。主要的随机过程是随机游走或布朗运动。这个过程可以用来预测许多变量&#xff0c;这些变量似乎遵循随机趋势&#x…

【Java架构-版本控制】-Git基础

本文摘要 Git作为版本控制工具&#xff0c;使用非常广泛&#xff0c;在此咱们由浅入深&#xff0c;分三篇文章&#xff08;Git基础、Git进阶、Gitlab搭那家&#xff09;来深入学习Git 文章目录 本文摘要1.Git仓库基本概念1.1 远程仓库(Remote)1.2 本地库(Repository) 2. Git仓库…