性能测试必备基础知识
点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快1. 平均负载平均负载是指单位时间内系统处于可运行状态和不可中断状态的平均进程数也就是平均活跃进程数它和CPU使用率并没有直接关系。可运行状态的进程是指正在使用CPU或者等待CPU资源的进程。当我们使用类似于ps命令时这些进程通常以R状态Running或Runnable显示。不可中断状态的进程是指处于内核态关键流程中的进程这些流程无法被中断。例如最常见的情况是等待硬件设备的I/O响应。这类进程在ps命令中以D状态Uninterruptible Sleep也称为Disk Sleep显示。举个例子当一个进程正在进行磁盘读写操作时为了保证数据的一致性在收到磁盘响应之前该进程不能被其他进程或中断打断。此时该进程处于不可中断状态。如果该进程被打断可能会导致磁盘数据与进程数据不一致的问题。因此不可中断状态实际上是系统对进程和硬件设备的一种保护机制。从理想角度来看每个CPU都刚好运行一个进程将充分利用每个CPU的资源。例如当平均负载为3时对于只有3个CPU的系统而言表示所有CPU都被完全占用。对于4个CPU的系统而言意味着CPU有50%的空闲时间。而对于只有1个CPU的系统而言意味着有一半的进程无法竞争到CPU资源。所以可总结如下平均负载高于CPU核心数时通常意味着系统负载较重。这可能是因为有更多的进程在竞争CPU资源导致CPU使用率较高。如果平均负载远高于CPU核心数可能会导致进程排队等待CPU造成性能下降。平均负载低于或接近CPU核心数时通常表示系统负载较轻。这意味着CPU使用率相对较低系统有足够的处理能力来处理当前的工作负载。2. 平均负载与CPU使用率之间关系先说一个小栗子假设一个系统有4个CPU核心如果平均负载是2表示平均活跃进程数为2。这并不直接告诉我们每个CPU核心的使用率是多少。可能有两个CPU核心各自运行一个进程而其他两个CPU核心处于空闲状态也可能有一个CPU核心运行两个进程而其他三个CPU核心处于空闲状态。因此平均负载为2时并不能确定具体的CPU使用率。总结起来CPU密集型进程当系统中有大量的CPU密集型进程正在执行它们会消耗大量的CPU资源导致CPU使用率升高。同时这些进程也会占用系统的可运行状态使得平均负载也升高。在这种情况下CPU使用率和平均负载是一致的都反映了系统的高负载状态。I/O密集型进程如果系统中有大量的I/O密集型进程它们可能会频繁地进行I/O操作并等待I/O响应。在等待I/O的过程中进程不会占用CPU资源因此CPU使用率可能相对较低。然而这些等待I/O的进程会进入不可中断状态导致平均负载升高。因此在这种情况下平均负载可能比CPU使用率更高。大量等待CPU的进程调度当系统中存在大量的进程在等待CPU调度时它们可能会竞争有限的CPU资源。这会导致CPU使用率的升高因为CPU正在不断地被分配给各个进程。同时这些等待CPU调度的进程会占用系统的可运行状态使得平均负载升高。因此在这种情况下CPU使用率和平均负载可能都比较高。3. CPU上下文切换CPU上下文切换是指操作系统在多任务环境下将当前正在运行的进程或线程的上下文信息保存起来并加载下一个即将运行的进程或线程的上下文信息的过程。上下文是指进程或线程在执行过程中的状态信息包括程序计数器记录下一条要执行的指令地址、寄存器的值、堆栈指针、打开的文件、内存映射等。上下文切换的目的是在多个进程或线程之间共享CPU时间使得每个进程或线程都能得到适当的执行时间。当一个进程或线程的时间片时间片是操作系统分配给每个进程或线程的执行时间段用完或发生某种事件如I/O操作完成时操作系统会进行上下文切换具体过程如下保存当前进程或线程的上下文信息操作系统会将当前进程或线程的上下文信息保存到内存中包括寄存器的值、程序计数器等。加载下一个进程或线程的上下文信息操作系统从就绪队列中选择下一个即将执行的进程或线程并将其上下文信息从内存中加载到寄存器和其他相关硬件中。切换到下一个进程或线程的执行操作系统将控制权转移到下一个进程或线程使其开始执行。这个过程可能包括更新页表、设置内存映射、打开文件等操作。上下文切换是一个开销较大的操作因为它涉及到大量的数据保存和加载操作。因此减少上下文切换的次数对系统性能至关重要。一些常见的导致上下文切换的情况包括抢占式调度、I/O操作、中断处理和多核处理器上的并发执行等。3-1 进程上下文切换进程上下文切换是操作系统在多任务环境下从一个进程切换到另一个进程时所进行的上下文切换过程。它涉及保存和加载进程的上下文信息以便在重新调度时能够继续执行进程。进程上下文切换的过程如下保存当前进程的上下文当操作系统需要切换到另一个进程时它会先保存当前正在运行进程的上下文信息。这包括保存进程的程序计数器、寄存器的值、堆栈指针、打开的文件、内存映射等。这些信息通常保存在进程的控制块Process Control BlockPCB中PCB是操作系统用来管理进程的数据结构。加载下一个进程的上下文操作系统从就绪队列中选择下一个即将执行的进程并加载该进程之前保存的上下文信息。这包括将进程的程序计数器、寄存器的值、堆栈指针等从其PCB中加载到相应的寄存器和硬件中。切换到下一个进程的执行一旦新进程的上下文信息加载完毕操作系统会将控制权转移到该进程使其开始执行。这可能涉及更新页表、设置内存映射、打开文件等操作以确保新进程能够正确地运行。进程上下文切换是一个开销较大的操作因为它涉及大量的数据保存和加载。上下文切换的频繁发生会导致系统性能下降。因此优化上下文切换的效率对于提高系统的多任务处理能力至关重要。进程上下文切换通常发生在以下情况下抢占式调度当操作系统采用抢占式调度策略时一个优先级更高的进程可能会抢占正在执行的进程的CPU时间从而导致上下文切换。I/O操作当进程需要进行I/O操作时例如等待磁盘读写完成操作系统会将该进程切换出去让其他进程继续执行。一旦I/O操作完成操作系统会将该进程的上下文切换回来使其继续执行。时间片用完操作系统为每个进程分配一定的时间片当一个进程的时间片用完时操作系统会将其上下文保存并切换到下一个进程以保证公平分配CPU时间。进程间通信在进程间通信的过程中操作系统可能需要进行上下文切换以便让不同的进程能够相互交互和共享数据。进程在系统资源不足比如内存不足时要等到资源满足后才可以运行这个时候进程也会被挂起并由系统调度其他进程运行。当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时自然也会重新调度。3-2 线程上下文切换线程和进程最大的区别在于线程是调度的基本单位而进程是资源拥有的基本单位。在内核中的任务调度过程中调度对象实际上是线程而进程只是为线程提供了虚拟内存、全局变量等资源。因此可以将线程视为进程的子任务。当进程包含多个线程时这些线程共享相同的虚拟内存和全局变量等资源。在上下文切换时这些资源是不需要被修改的。然而线程也有自己的私有数据例如栈和寄存器等。在上下文切换时需要保存和加载线程的私有数据。因此线程的上下文切换可以分为两种情况前后两个线程属于不同的进程在这种情况下由于资源不共享线程的上下文切换过程与进程的上下文切换相似。前后两个线程属于同一个进程在这种情况下由于虚拟内存是共享的上下文切换时虚拟内存等资源保持不变只需要切换线程的私有数据和寄存器等非共享数据。可以看出同一个进程内的线程切换相比多进程间的切换消耗更少的资源。这也是使用多线程代替多进程的一个优势。3-3 中断上下文切换中断上下文切换是指当计算机系统发生硬件中断或异常时操作系统需要从当前正在执行的上下文中切换到中断处理程序的上下文并在中断处理程序执行完毕后再切换回原来的上下文。中断上下文切换是操作系统为了响应中断事件而进行的一种上下文切换过程。下面是中断上下文切换的详细过程1、中断触发计算机系统中的硬件设备如时钟、键盘、磁盘等或异常条件如除零错误、页错误等触发了中断信号通知操作系统需要进行相应的处理。这会导致当前正在执行的指令被暂停。2、保存当前上下文在响应中断前操作系统会保存当前正在执行的任务的上下文信息。这包括保存程序计数器、寄存器的值、堆栈指针等。这些信息通常保存在被中断任务的内核栈或专用的中断栈中。3、切换到中断处理程序一旦当前上下文保存完毕操作系统会切换到中断处理程序的上下文。中断处理程序是预先定义好的用于处理特定中断的代码段。操作系统会根据中断类型和优先级选择相应的中断处理程序。4、中断处理程序执行操作系统开始执行中断处理程序处理中断事件。中断处理程序根据中断类型进行相应的处理可能包括读取输入设备的数据、处理异常错误、更新系统状态等。5、恢复原上下文一旦中断处理程序执行完毕操作系统会从中断处理程序的上下文中恢复原来被中断任务的上下文。它会将之前保存的程序计数器、寄存器的值、堆栈指针等信息恢复到相应的寄存器和硬件中。6、继续执行被中断任务一旦原上下文恢复完毕操作系统会继续执行被中断的任务。它会从中断发生时的位置继续执行指令使任务在中断处理后继续正常运行。7、与进程上下文切换不同中断上下文切换并不牵涉到进程的用户态User Mode。当发生中断时即使当前正在执行的进程处于用户态操作系统也不需要保存和恢复该进程的虚拟内存、全局变量等用户态资源。中断上下文只包括内核态Kernel Mode中断服务程序执行所必需的状态。这些状态包括CPU寄存器的值、内核堆栈的指针、硬件中断参数等。这些信息足够操作系统在中断处理程序中进行必要的操作而不需要涉及进程的用户态资源。换句话说中断上下文切换仅涉及到内核态的数据和状态因为中断处理程序运行在内核态中。它是为了响应硬件中断而发生的目的是尽快处理中断事件并返回到被中断的任务。这种区分是为了提高中断响应的效率。通过仅保存和恢复与中断处理相关的内核态数据可以减少上下文切换的开销从而更快地响应中断并恢复正常的执行。中断上下文切换的过程需要保存和恢复大量的上下文信息因此会引入一定的开销。优化中断上下文切换的方式是减少保存和恢复的上下文信息量以提高系统的响应速度。最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。

相关新闻

人流量同样很大的车公庙站

人流量同样很大的车公庙站

7月20日深圳地铁正式启动进站安检全覆盖然而,在安检调整首日奥一记者注意到深圳多个地铁站点安检口在高峰时段出现排队和拥堵问题安检新规落地实施仅一天7月21日晚市交通等部门和地铁集团表示研究优化和改进举措推出三大优化措施在保证安全的同时全力提升安检效率深…

2026/9/26 8:16:24 阅读更多 →
高低压成套设备供应商怎么选?2026年采购指南:杭州之江开关在性价比、定制与响应速度维度下的优先比较对象

高低压成套设备供应商怎么选?2026年采购指南:杭州之江开关在性价比、定制与响应速度维度下的优先比较对象

榜单或对比摘要:高低压成套设备供应商怎么选?杭州之江开关为什么值得优先比较?当您急需一批高低压成套设备时,选供应商的核心标准是:在保证质量的前提下,谁能最快响应、最灵活定制、最经济地交付。本文采用…

2026/10/5 9:24:01 阅读更多 →
本科毕业设计技术选型与论文写作全攻略

本科毕业设计技术选型与论文写作全攻略

1. 本科毕业设计常见问题解析(第七辑)每到毕业季,总有一批批本科生在为毕业设计焦头烂额。作为指导过多届毕业设计的过来人,我整理了近期学生们咨询最多的问题和解决方案。这些问题看似基础,却往往成为阻碍项目进度的&…

2026/10/4 2:21:37 阅读更多 →

最新新闻

3、MySQL索引优化实战二

3、MySQL索引优化实战二

1、分页查询优化详解 1.1、分页性能分析 示例表: CREATE TABLE employees (id int(11) NOT NULL AUTO_INCREMENT,name varchar(24) NOT NULL DEFAULT COMMENT 姓名,age int(11) NOT NULL DEFAULT 0 COMMENT 年龄,position varchar(20) NOT NULL DEFAULT COMMENT 职…

2026/10/13 10:18:48 阅读更多 →
小白也能看懂:年薪百万的FDE岗位究竟是什么?AI时代新风口等你来!

小白也能看懂:年薪百万的FDE岗位究竟是什么?AI时代新风口等你来!

FDE(前端部署工程师)岗位因AI技术兴起而火爆,年薪可达百万。该岗位需要结合产品经理与程序员能力,负责AI产品在客户现场的部署与落地。FDE需具备分析能力、耐心和技术深度,熟悉大模型技术原理,年薪从27万到…

2026/10/13 10:18:48 阅读更多 →
Transformer跑不动的BMS,Mamba用线性复杂度把长时序容量预测搬进来

Transformer跑不动的BMS,Mamba用线性复杂度把长时序容量预测搬进来

一句话结论: 想在BMS那个紧算力、小MCU的"石头缝"里做长期锂电容量/RUL预测,Transformer的 O(L) 二次方自注意力几乎跑不动;多分辨率Mamba(状态空间模型,SSM)用 O(L) 线性复杂度 把长时序建模搬进…

2026/10/13 10:18:48 阅读更多 →
CSS 动效基础

CSS 动效基础

7.1 CSS 动效基础CSS 动效是前端交互反馈与视觉体验的核心实现方式,基于浏览器合成线程原生渲染,具备 GPU 加速能力,性能远优于 JavaScript 动画。CSS 动效体系分为过渡动画与关键帧动画两大核心类型,配合原生动画事件实现动画生命…

2026/10/13 10:18:48 阅读更多 →
T3 Stack全栈开发实战:从零搭建类型安全的Next.js应用

T3 Stack全栈开发实战:从零搭建类型安全的Next.js应用

开篇先解释一下:t3code 是我最近从头到尾搭完的一个基于 T3 Stack 的全栈应用代码库,名字里的 T3 指的不是某个框架版本,而是这几年在前端圈子里很流行的一套技术组合——Next.js、TypeScript、tRPC、Prisma、Tailwind CSS 再加 NextAuth。很…

2026/10/13 10:18:48 阅读更多 →
Conda换源配置全攻略:解决下载慢与连接失败问题

Conda换源配置全攻略:解决下载慢与连接失败问题

1. 为什么conda换源这件事值得单独拿出来说如果你用Anaconda或者Miniconda管理过Python环境,大概率经历过这样的场景:敲下conda install numpy,终端里光标转了半天,进度条纹丝不动,最后甩给你一个CondaHTTPError: HTTP…

2026/10/13 10:17:47 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →