AFSim 仿真系统----性能工具

什么是 WPR/WPA?

Windows 性能记录器 (WPR) 和 Windows 性能分析器 (WPA) 是 Windows 性能工具包中提供的性能监控工具。它们是免费的工具,可以通过下载和安装 Windows 评估和部署工具包 (ADK) 来获得。

WPR 是一个工具,允许用户动态部署事件跟踪基础架构 (ETW),以捕获内核和应用程序事件。WPR 作为会话控制器,使用户能够启动和停止所有正在运行的应用程序的事件跟踪,并收集指标以诊断性能问题。

WPA 是一个工具,使用户能够可视化由 WPR 生成的事件跟踪日志 (ETL) 文件,并对记录的应用程序进行分析。

重要提示:用户需要访问正在剖析的应用程序相应的符号 (PDB),因为它们对于 WPA 确定进程所处的函数是必需的。PDB 文件在 AFSIM 发布时并未随附提供,但如果源代码可访问,则可以生成。

如何安装 WPR/WPA

如果测试机器上未安装 Windows ADK,可以通过访问下载页面选择适合所用 Windows 版本的安装程序来获取。

以下是运行 Windows 性能工具包的系统要求:

  • WPR:Windows 8 或更高版本。
  • WPA:Windows 8 或更高版本,且需要安装 Microsoft .NET Framework 4.5 或更高版本。

运行安装可执行文件时,用户应禁用发送匿名消息,并选择 Windows 性能工具包,其中包含 WPR 和 WPA。

注意:Windows 性能工具包为以前的命令行工具 Xperf 提供支持。然而,Xperfview 已不再支持,所有使用 Xperf 进行的录制必须通过 WPA 打开和分析。

一旦安装完成,性能工具就可以开始进行性能测试了。

如何使用 WPR

可以通过在任务栏搜索框中输入“Windows Performance Recorder”或在点击“开始”按钮后从 Windows Kits 中找到 WPR UI。开始录制会话之前,用户必须配置 WPR。以下是推荐的设置:

将性能场景设置为“通用”

这将 WPR 设置为在计算机运行时进行通用目的的录制。

将详细级别设置为“详细”

“轻量”模式耗费的资源更少,对系统的干扰也更小;然而“详细”录制对于全面分析更为有用。

设置日志记录

选择文件模式以进行简短和有针对性的分析会话。这将数据记录到顺序文件中,这些文件会不断增大,因此建议进行简短的会话,以避免生成不必要的大文件。

对于无法确定的分析会话,选择内存模式;即用户可以保持录音机运行,直到他们发现值得注意的事项或到达他们希望分析的应用程序的确切点(即,在加载脚本后通过向导 UI 启动任务)。这将数据记录到循环缓冲区中,当数据大小超过缓冲区大小时,将开始丢弃最旧的事件。

警告:文件模式如果会话运行过长,可能导致录制文件过大,以至于 WPA 无法打开。

选择配置文件

  • CPU 使用情况
  • 堆使用情况和 VirtualAlloc 使用情况(用于内存分析)

有关 WPR 功能的更详细说明,请参阅 WPR 文档页面。

配置 WPR 后,用户可以点击“开始”以开始录制会话,这将捕获所有在 CPU 上运行的内容。此时,用户可以运行需要分析的应用程序(向导、任务等)。点击“保存”将停止会话并保存配置文件数据;这将生成事件跟踪日志。

WPR 还可以通过命令提示符运行。性能工具在使用时需要提升的权限,因此用户必须以管理员身份运行命令提示符。以下是开始分析的示例命令:

wpr -start CPU.Verbose -recordtempto C:\<PATH>\wpr_test_temp

这个示例命令指定将记录 CPU 使用情况,并将所需的详细级别设置为“详细”。同时,还必须指定一个临时目录,WPR 将在生成最终 ETL 时用于存储中间文件。要停止 WPR 并保存录制,请使用以下命令:

wpr -stop C:\<PATH>\test.etl "问题描述" -skipPdbGen

路径和文件名必须指定,同时还需提供报告的描述。skipPdbGen 标志告诉 WPR 不生成任何缓存的符号文件。

有关如何通过命令行使用 WPR 的更多信息,用户可以使用以下命令:

wpr -help <option>

或查阅 Microsoft Devblog。

如何使用 WPA

以下是一个简要示例,演示如何查看特定应用程序(mission.exe)并分析其 CPU 使用情况。

当 WPA 打开 ETL 文件时,用户会看到一个空白的分析选项卡和左侧窗格中的图形浏览器。图形浏览器包含基于选择的性能配置文件记录的所有数据。

通过双击图表或将其拖入分析选项卡,用户可以查看记录的信息。每个信息面板的大小可以通过点击并拖动灰色分隔线进行调整。此示例展示了 CPU 使用情况(采样)图表,该图表测量每个函数在 CPU 上的聚合停留时间。默认采样率为每秒 1000 次计数,因此每次计数大约相当于 CPU 上的 1 毫秒。

为了隔离特定应用程序(如 mission.exe)的输出,用户可以通过右键单击目标应用程序并选择“禁用 > 除所选项外的所有内容”来过滤掉所有其他捕获的信息。

这将从图表窗口中移除所有其他采样进程。为了在底部的详细信息窗口中隔离该应用程序,用户可以右键单击它并选择“过滤到所选项”。

这将导致 WPA 看起来有些空白。

用户可以通过点击进程名称旁边的右指三角形来开始浏览进程树,并展开节点。堆栈列将开始显示该进程的函数堆栈,可以以相同的方式展开。此时,用户可能会看到 [Root] 下的节点标记为

<lib name>.dll!<Symbols disabled>

如果应用程序的符号未正确加载到 WPA 中,就会出现这种情况。

加载符号

要加载符号,用户需要点击 WPA 窗口左上角菜单中的“跟踪”,并选择“配置符号路径”。这将打开“配置符号”菜单,可能已经包含预选的启用路径;根据 WPR 的配置,它将自动生成并包含其他应用程序的缓存符号。如果用户只关心 AFSIM 应用程序,他们可以移除自动生成的路径,并添加 AFISM PDB 文件所在的路径。

添加路径后,用户应确保勾选框已启用,然后点击“确定”。接下来,必须再次点击“跟踪”,并选择“加载符号”选项。

注意:启用 WPA 符号自动加载会将以前会话的符号路径聚合到“配置符号”菜单中,这可能导致冗余和更长的加载时间。

现在,当用户返回详细信息窗口时,堆栈列中的节点将正确识别应用程序的函数名称。

分析:入门

WPA 按照最大采样计数对堆栈节点进行排序,这有助于识别哪些函数调用花费的时间最长。

仅凭采样计数可能会产生误导,因为表现不佳的函数可能发生得不频繁,相对于整个应用程序可能具有较小的采样计数;采样计数是整个应用程序运行时的聚合值。为了检测性能下降,可以利用图表窗口检查运行时的特定区间。通过点击图表并横向拖动光标,用户可以选择一个区间进行扩展。

右键单击所选区间并点击“缩放”将该区间扩展以填充图表窗口,并更新堆栈列中的采样计数,以反映在所选区间内最活跃的函数。

此外,可以选择单个函数调用以绘制到图表上。要启用此功能,用户可以点击图例列中的相应方框。下面的图表显示,尽管所选函数调用的采样计数相对于其他兄弟函数较小,但仍是图表中突然性能峰值的部分原因。

WPA 中有许多分析工具和功能,从保存特定配置设置到过滤特定信息。有关如何使用 WPA 及其功能的更多详细信息,可以在 WPA 文档页面中找到。

错误

在 2021 年 6 月,微软发布了一个修复程序,解决了一个 Windows Defender 错误,该错误导致 WPR 无法生成 CPU 使用情况(采样)报告。如果 WPA 中没有录制会话的采样图,可能需要运行 Windows 更新(可能需要几次)来修复此问题。

不幸的是,这仅修复了 Windows Defender 引起的多个问题中的一个。如果更新未能解决问题,临时的解决方法是在运行 WPR 时在 Windows 安全设置中禁用实时保护,然后在之后重新启用它。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity3D在2D游戏中获取触屏物体的方法

我们的需求是&#xff1a; 假如屏幕中一个棋盘&#xff0c;每个棋子是button构成的&#xff0c;我们希望手指或者鼠标在哪里&#xff0c;就显示那个位置的button信息。 网上有很多获取触屏物体信息的信息的方法如下面代码所示&#xff1a; Camera cam Camera.main; // pre-de…

一个php快速项目搭建框架源码,带一键CURD等功能

介绍&#xff1a; 框架易于功能扩展&#xff0c;代码维护&#xff0c;方便二次开发&#xff0c;帮助开发者简单高效降低二次开发成本&#xff0c;满足专注业务深度开发的需求。 百度网盘下载 图片&#xff1a;

对称密码学

1. 使用OpenSSL 命令行 在 Ubuntu Linux Distribution (发行版&#xff09;中&#xff0c; OpenSSL 通常可用。当然&#xff0c;如果不可用的话&#xff0c;也可以使用下以下命令安装 OpenSSL: $ sudo apt-get install openssl 安装完后可以使用以下命令检查 OpenSSL 版本&am…

uniapp 自定义微信小程序 tabBar 导航栏

背景 做了一个校园招聘类小程序&#xff0c;使用 uniapp vue3 uview-plus pinia 构建&#xff0c;这个小程序要实现多角色登录&#xff0c;根据权限动态切换 tab 栏文字、图标。 使用pages.json中配置tabBar无法根据角色动态配置 tabBar&#xff0c;因此自定义tabBar&…

如何构建你自己的实时人脸识别系统

引言 随着人工智能技术的发展&#xff0c;人脸识别已经成为日常生活中的常见技术&#xff0c;被广泛应用于安全验证、个性化服务等多个领域。本教程将指导你如何使用Python编程语言结合OpenCV和face_recognition库来构建一个基本的人脸识别系统。我们将从安装必要的库开始&…

C++ 设计模式——解释器模式

目录 C 设计模式——解释器模式1. 主要组成成分2. 逐步构建解释器模式步骤1: 定义抽象表达式步骤2: 实现终结符表达式步骤3: 实现非终结符表达式步骤4: 构建语法树步骤5: 实现内存管理步骤6: 创建上下文和客户端 3. 解释器模式 UML 图UML 图解析 4. 解释器模式的优点5. 解释器模…

生日贺卡录放音芯片,多段音频录音ic生产厂商,NVF04M-32minute

可以录音播放的生日贺卡与传统的纸质贺卡相比&#xff0c;它有着创意以及个性的特点&#xff0c;仅需少量的电子元器件&#xff0c;即可实现录音功能&#xff0c;搭配上文字&#xff0c;让声音存储在生日贺卡里&#xff0c;让贺卡也变得有温度&#xff0c;祝福我想亲口对TA说。…

fantastic-admin前端+django后端,初始化全流程记录

fantastic-admin前端是我目前看到最完善的前端框架&#xff0c;只需要简单的设置就可以快速开始项目。 但是我本人的能力有限&#xff0c;对前端知识一知半解&#xff0c;之前废了九牛二虎之力才跑通了前后端流程&#xff0c;由于新的项目需要&#xff0c;有了开发新后台的想法…

【有啥问啥】大模型应用中的哈希链推理任务

大模型应用中的哈希链推理任务 随着人工智能技术的快速发展&#xff0c;尤其是大模型&#xff08;如GPT、BERT、Vision Transformer等&#xff09;的广泛应用&#xff0c;确保数据处理和模型推理的透明性与安全性变得愈发重要。哈希链推理任务作为一种技术手段&#xff0c;能够…

学习计算机网络

a类0~127&#xff0c;b类128~191&#xff0c;c类192~223 网络地址&#xff1a;看子网掩码&#xff0c;分网络位和主机位&#xff0c;后面是主机位&#xff0c;主机位全部为0&#xff0c;网络地址。 直接广播地址&#xff1a;看子网掩码&#xff0c;分网络位和主机位&#xff…

Jenkins构建CI/CD

CI/CD 软件开发的连续方法基于自动执行脚本&#xff0c;以最大限度地减少在开发应用程序时引入错误的可能性。从新代码的开发到部署&#xff0c;它们需要较少的人为干预甚至根本不需要干预。 它涉及在每次小迭代中不断构建&#xff0c;测试和部署代码更改&#xff0c;从而减少…

vue2+ueditor集成秀米编辑器

一、百度富文本编辑器 1.首先下载 百度富文本编辑器 下载地址&#xff1a;GitHub - fex-team/ueditor: rich text 富文本编辑器 2.把下载好的文件整理好 放在图片目录下 3. 安装插件vue-ueditor-wrap npm install vue-ueditor-wrap 4.在你所需要展示的页面 引入vue-uedito…

判断给定的一个不限长的数字串大小变化趋势、经典面试题:猴子排成圈踢出求最后剩下大王编号以及Debian服务器php中安装IMAP扩展各种报错解决过程

一、判断给定的一个不限长的数字串大小变化趋势 自制了一道面试题&#xff1a;给定一个不限长的数字字符串&#xff0c;判断每一位数字的大小变化趋势是否是^或v趋势&#xff0c;如果是就返回true&#xff0c;如果不是就返回false。比如121即属于^&#xff0c;322129即属于v。这…

Verilog和Matlab实现RGB888互转YUV444

文章目录 一、色彩空间1.1 RGB色彩空间1.2 CMYK色彩空间1.3 YUV色彩空间 二、色彩空间转换公式2.1 RGB转CMYK2.2 CMYK转RGB2.3 RGB888转YUV4442.4 YUV444转RGB888 三、MATLAB实现RGB888转YUV4443.1 matlab代码3.2 matlab结果 四、Verilog实现RGB888转YUV444 一、色彩空间 色彩空…

【区块链 + 物联网】区块链边缘计算网关设备 | FISCO BCOS应用案例

目前边缘端设备主要以人工智能应用为主&#xff0c;或以数据采集网络设备为主&#xff0c;还未有区块链边缘计算网关设备&#xff0c;难以 在依托终端设备的传统行业中进行区块链 应用。本项目研制区块链边缘计算网关&#xff0c;将区块链、计算与网络集成 在一起&#xff0c;…

单片机学习笔记

一、单片机帝国的诞生与发展 1.1 单片机的基本概念 单片机是一种集成电路芯片&#xff0c;采用超大规模的集成电路把具有数据处理功能的中央处理器存储器、输入输出端口、外围电路和相关外设集成在一块硅片上构成一个小而完整的微型计算机系统。 一般而言&#xff0c;单片机也…

Java语言程序设计基础篇_编程练习题**17.21 (十六进制编辑器)

目录 题目&#xff1a;**17.21 (十六进制编辑器) 代码示例 结果展示 题目&#xff1a;**17.21 (十六进制编辑器) 编写一个 GUI 应用程序&#xff0c;让用户在文本域输入一个文件名&#xff0c;然后按回车键&#xff0c;在文本域显示它的十六进制表达形式。用户也可以修改十六…

分类预测|基于蜣螂优化极限梯度提升决策树的数据分类预测Matlab程序DBO-Xgboost 多特征输入单输出 含基础模型

分类预测|基于蜣螂优化极限梯度提升决策树的数据分类预测Matlab程序DBO-Xgboost 多特征输入单输出 含基础模型 文章目录 一、基本原理1. 数据准备2. XGBoost模型建立3. DBO优化XGBoost参数4. 模型训练5. 模型评估6. 结果分析与应用原理总结 二、实验结果三、核心代码四、代码获…

1-9 图像膨胀 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 kernel np.ones((3, 3), np.uint8) _, binary_image cv2.threshold(image, 127, 255, cv2.THRESH_BINARY) dilated_image cv2.dilate(binary_image, kernel, iterations1) 三、运行现象 四、完整代码 五、完整工程贴出 一、提前准备 …

scrapy 爬取微博(一)【最新超详细解析】:创建微博爬取工程

本项目属于个人学习记录&#xff0c;爬取的数据会于12小时内销毁&#xff0c;且不可用于商用。 1 初始化环境 首先我们需要有python环境&#xff0c;先安装一下python&#xff0c;然后配置环境变量&#xff0c;这边给出windows的配置&#xff1a; 我这边的安装目录是D:\pyt…