GPA(Graphics Performance Analyzers)是Intel公司提供的一款免费的跨平台性能分析工具。

填写e-mail、name和country并提交后,就会收到一封有专属下载链接的邮件,点开之后,有3大os平台的GPA版本可供下载

我本机是win7 64bit,于是下载gpa_17.2_release_312434_x64_standalone.msi    最新GPA版本简介

GPA 2017 R2版本支持的平台及图形API:

宿主机(GPA所在机器) 目标机(游戏所在机器) 图形API
Windows* 7 SP1/8/8.1/10 Windows* 7 SP1/8/8.1/10 DirectX* 9/9Ex, 10.0/10.1, 11.0/11.1/11.2/11.3
Windows* 10 Windows* 10 DirectX* 12, 12.1
Windows* 7 SP1/8/8.1/10
或者
macOS* 10.11, 10.12
或者
Ubuntu* 16.04

Android* 4.1, 4.2, 4.3, 4.4, 5.x, 6.0

OpenGL* ES 1.0, 1.1, 2.0, 3.0, 3.1, 3.2
Ubuntu* 16.04 Ubuntu* 16.04 OpenGL* 3.2, 3.3, 4.0, 4.1 Core Profile

GPA的工具集关系如下:

Graphics Monitor -- GPA最核心组件,其主要作用有:

①Hook目标进程,来实现游戏内hud绘制和快捷键、截帧、捕获trace、抓取cpu、gpu、图形api数据、执行实验选项等功能

②客户端必须启动Graphics Monitor并Hook目标进程,服务端的System Analyzer才能与客户端机器建立连接并获取进程各项数据指标

③必须启动Graphics Monitor,Graphics Frame Analyzer才能打开帧文件进行分析

④托盘快捷菜单可以快速拉起System Analyzer、Graphics Frame Analyzer、Platform Analyzer和Trace Analyzer工具

⑤通过Profiles和Preferences界面来进行GPA的各项设置

Graphics Frame Analyzer -- 打开形如:MeshFromOBJ_2017_09_25__15_23_01_609.gpa_frame的帧文件进行gpu上各种消耗的细致分析

①使用API log显示出图形api的调用过程,并查看是否存在一些error或warning

②查看某个draw call在gpu消耗,颜色、深度、模板buffer,像素的alpha值及format

③执行一些实验选项来精确查看gpu消耗的减少情况

Platform Analyzer -- 打开形如:MeshFromOBJ_2017_09_25__14_29_27_931.gpa_trace\MeshFromOBJ_2017_09_25__14_29_27_931.gpa_trace.amplxe的trace文件来分析cpu与gpu协作工作及消耗的细节

①标识出cpu与gpu的帧边界

②依据时间线来review执行流程上的各段时间消耗

③查看gpu的任务队列、检查cpu利用率

④捕获时,目标进程在机器上cpu与gpu的消耗情况

System Analyzer -- 支持本机与远程连接目标进程

①用良好的图形化界面显示建立连接的目标进程的cpu、gpu、图形api各项数据指标的曲线图

②在其图形化界面执行实验选项来快速确定是cpu还是gpu造成了性能瓶颈

③在其图形化界面上进行截帧和捕获trace

Trace Analyzer -- 与Platform Analyzer一样,利用Trace Viewer For Google Chrome方式来可视化trace中cpu与gpu分析cpu与gpu协作工作及消耗的细节

打开形如:MeshFromOBJ_2017_09_25__14_39_01_887.sea的trace文件夹

注1:启动Graphics Monitor后,等待弹出如下气泡时,再去操作Graphics Monitor,否则会引发卡死

注2:点击Profiles面板Tracing标签页的Collection Settings按钮,来设置捕获那种类型的trace文件

Graphics Monitor

双击托盘中的Graphics Monitor图标会弹出Analyze Application对话框

点击Analyze Application对话框中Manage按钮会弹出Profiles面板(或单击托盘中的Graphics Monitor图标,选择Profiles...)

windows下,GPA有2种Hook D3D的方法:

方法① 从Analyze Application中拉起一个D3D程序

方法② 单击托盘中的Graphics Monitor图标,选择Preferences...,弹出如下对话框,勾选“Auto-detect launched applications”,

此时会看到Graphics Monitor图标从蓝色变成绿色

则后续启动的D3D程序都会成为被Hook目标(注:开了这个之后,会引发2010及以上版本的vs崩溃)

若Profiles的HUD Options标签页的Display Mode没有选择Disable的话,就会在程序的窗口上看到GPA的HUD

下图为gpasample.exe被Hook时的情况:

注:877为当前帧的fps(1s / 当前帧的时间),为过去1s内min fps(1s / 最耗时一帧的时间),为过去1s内max fps(1s / 最快一帧的时间)

看到了GPA的HUD表明程序已经被GPA成功Hook了,可以按Ctrl + Shift + C进行截帧,按Ctrl + Shift + T进行截取一段时间内(时长在Profiles的Tracing标签页中设置)的Trace

截取的帧和Trace放置在“文档\GPA”目录中

若截取的帧的图像在Graphics Frame Analyzer中无法预览(状态栏右下角的进度条卡死无法完成),可能是显卡不兼容导致的,若有多个显卡(如:1个nVidia独显+1个Intel集显),可以切到另外一个显卡上重新截帧

GPA简介的更多相关文章

  1. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  2. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  3. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  4. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  5. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  6. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  7. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  8. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  9. Cesium简介以及离线部署运行

    Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...

随机推荐

  1. java提高(2)---正则表达式(1)常用符号

    正则表达式---常用符号 首先声明,我这里列表的是经常使用的一些符号,如果你想得到全部,那建议你通过API中,搜索Pattern类,会得到所有符号. 字符类 [abc] a.b 或 c(简单类) [^ ...

  2. mysql 开发基础系列21 事务控制和锁定语句(下)

    1.  隐含的执行unlock tables 如果在锁表期间,用start transaction命令来开始一个新事务,会造成一个隐含的unlock tables 被执行,如下所示: 会话1 会话2 ...

  3. MFC控件第一讲.DC编程

    MFC控件第一讲.DC编程 一丶简介 什么是DC,DC有什么用. DC成为设备描述符表. DC的作用就是可以进行绘制. 比如我们的窗口都是绘制出来的.  DC可以简单理解为.没一个窗口程序都有一块内存 ...

  4. Java 容器源码分析之 LinkedHashMap

    同 HashMap 一样,LinkedHashMap 也是对 Map 接口的一种基于链表和哈希表的实现.实际上, LinkedHashMap 是 HashMap 的子类,其扩展了 HashMap 增加 ...

  5. 监控报I/O问题,怎么办?

    Linux系统出现了性能问题,一般我们可以通过top.iostat.free.vmstat等命令来查看初步定位问题.其中iostat可以给我们提供丰富的IO状态数据. 一.查询命令基本使用 1.命令介 ...

  6. 不到50行代码实现一个能对请求并发数做限制的通用RequestDecorator

    使用场景 在开发中,我们可能会遇到一些对异步请求数做并发量限制的场景,比如说微信小程序的request并发最多为5个,又或者我们需要做一些批量处理的工作,可是我们又不想同时对服务器发出太多请求(可能会 ...

  7. spring-boot-2.0.3启动源码篇一 - SpringApplication构造方法

    前言 spring-boot-2.0.3应用篇 - shiro集成,实现了spring-boot与shiro的整合,效果大家也看到了,工程确实集成了shiro的认证与授权功能.如果大家能正确搭建起来, ...

  8. Perl:写POD文档

    官方手册:https://perldoc.perl.org/perlpod.html POD文档是perl的man文档,可以用perldoc输出,也可以直接用man输出.在开始下面的文章之前,请先粗略 ...

  9. 我的python渗透测试工具之主机嗅探

    嗅探工具的主要目标是基于UDP发现目标网络中的存活主机,选择UDP的原因是UDP访问过程开销小. 由于很多的操作系统在处理UDP端口的闭合时都会存在一个共性,我们也正是利用这个共性来开展确定此IP上是 ...

  10. B树与B+详解

    承接上篇SQLite采用B树结构使得SQLite内存占用资源较少,本篇将讲述B树的具体操作(建树,插入,删除等操作).在看博客时,建议拿支笔和纸,一点一点操作,毕竟知识是自己的,自己也要消化的.本篇通 ...