Qualcomm Snapdragon Profiler使用教程(3)

2023-10-19 18:59

本文主要是介绍Qualcomm Snapdragon Profiler使用教程(3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Qualcomm Snapdragon Profiler使用教程(3)

    • 1. 跟踪捕获
    • 2. 额外的要求
    • 3. 启动应用
    • 4. 跟踪捕获的基础操作
    • 5. 评估DSP性能
    • 6. 捕捉OpenCL的应用程序
    • 7. 捕获Vulkan应用程序
    • 8. 分析
    • 9. 测量时间
    • 10. 注释

1. 跟踪捕获

跟踪捕获模式,如图5-2。捕获snapdragon驱动的设备上可用的跟踪事件和数据。一旦捕获,调用跟踪可以用于以下方面:

  • 收集和显示重要的性能统计数据
  • 查看内核中每个CPU核上的线程调度情况
  • 查看CPU、DSP和GPU活动在同一时间轴上的相关性
    在这里插入图片描述
    Figure 5-2 Trace Capture mode

2. 额外的要求

OpenGL ES、Vulkan和OpenCL应用程序必须包含android.permission。并且需要在应用程序的AndroidManifest.xml中启用API跟踪和GPU指标。

3. 启动应用

Trace Capture面板中的Launch Application按钮可用于启动安装在目标设备上的任何应用程序。使用这个按钮的具体作用取决于正在启动的应用程序的类型。

  • 如果想要获取Vulkan跟踪指标,那么启动Vulkan应用时必须使用该按钮。
  • OpenGL ES应用程序使用该按钮将允许Snapdragon Profiler加载其OpenGL API拦截器(interceptor可对方法进行拦截)库的最新版本,这将启用最佳的分析功能。当OpenGL ES应用程序在没有使用按钮的情况下在设备上启动时,设备上预安装的API拦截器库将被使用。
  • 所有其他应用程序的行为都是相同的,无论他们是从设备或按钮启动。使用Launch Application按钮启动应用程序使用Java调试协议(Java Debug Wire
    Protocol)。因此,在使用此功能时,建议禁用其他使用JDWP的调试和分析工具。

4. 跟踪捕获的基础操作

  1. 检查Android设备是否连接到安装了Snapdragon Profiler的计算机,并启动Profiler(见3.2节)。

  2. 选择“文件–>连接”,或者在开始页面单击“连接到一个设备”,连接到一个设备并开始一个会话(参见3.3节)。

  3. 在“开始”页面中,单击“新建跟踪捕获”,或者选择“捕获–>新建跟踪”。

  4. 创建了一个新的Capture选项卡。当选择此选项卡时,将显示一个类似于Realtime的视图,附带Start Capture和Stop Capture按钮。
    在这里插入图片描述

  5. 在Data Sources面板中,选择要查看的指标。从进程列表中选择一个进程,以查看特定于该进程的指标(如果存在的话)。

  6. 单击start capture,开始捕获。
    在这里插入图片描述

  7. 单击“Stop Capture”,几秒钟后停止捕获。Snapdragon Profiler处理并在图形窗格中显示跟踪数据。

注意:Snapdragon Profiler不允许跟踪捕获超过10秒。

在这里插入图片描述在这里插入图片描述

5. 评估DSP性能

为了收集DSP数据,必须使用配备骁龙820处理器的设备,如三星Galaxy S7。

  1. 检查Android设备是否连接到安装了Snapdragon Profiler的计算机,并启动Profiler(见3.2节)。

  2. 选择文件–>连接,或者在开始页面单击“连接到一个设备”,连接到一个设备并开始一个会话(参见3.3节)。

  3. 在开始页面中,单击New Trace Capture,或者选择Capture --> New Trace来查看应用程序或设备的跟踪级别对应的性能数据。

  4. 在Metrics窗口中,如果需要的话可以展开系统类别,将会显示两个子类别:Trace和DSP。Trace采集的数据来自Android系统Trace和DSP采集的数据来自于DSP设备。

  5. 选择捕获指标:

a. 展开“DSP”子类别,查看可选指标。滚动到DSP %利用率,并选中复选框来启用这个指标。

b. 展开Trace子类别,并启用CPU Frequency和HW模块指标。收集DSP和跟踪指标将展示Profiler在不同处理器子系统之间关联时间轴信息的能力。

注意:要查看DSP %利用率的变化,需要在捕获期间打开一个产生音频的应用程序。
  1. 单击左上角的Start Capture开始捕获。

  2. 捕获几秒钟后,打开音频。

  3. 让音频播放几秒钟,然后单击Stop Capture。捕获可以继续,但是它会在10秒后自动停止捕获。

  4. 捕获数据显示在主分析器窗口中。

注意:在捕获几秒钟后,由于音频活动,DSP %利用率增加了。且在音频运行期间,跟踪数据中的活动也会增加。
  1. 使用书签功能可以方便地查看跨时间轴的相关性。

6. 捕捉OpenCL的应用程序

使用跟踪捕获来了解OpenCL应用程序是如何在由Snapdragon处理器驱动的设备上执行的。

注意:并不是所有的移动设备都支持OpenCL。使用像OpenCL Info这样的应用程序,看看你的设备是否支持OpenCL。根据所捕获的应用程序和首选行为,在运行应用程序之前可能需要额外的设置步骤。
  1. 检查Android设备是否连接到安装了Snapdragon Profiler的计算机,并启动Profiler(见3.2节)。

  2. 选择文件—>连接,或者在开始页面单击“连接到一个设备”,连接到一个设备开始一个会话(参见3.3节)。

  3. 如果要捕获的应用程序是命令行,并且首选从开始捕获,则必须在运行应用程序之前设置Enable Blocking选项。一旦设置好,应用程序将暂停执行,直到捕获开始。

注意:OpenCL预设布局可以方便地访问所有与OpenCL相关的视图。
  1. 在开始页面中,单击New Trace Capture,或者选择Capture --> New Trace来查看应用程序或设备的跟踪级别对应的性能数据。

  2. 从进程列表中选择应用程序。OpenCL跟踪指标将出现在指标树视图中。

  3. 启用OpenCL跟踪指标和捕获的其他OpenCL指标。

  4. 单击左上角的Start Capture开始捕获。

注意:如果被捕获的应用程序是命令行,则在给定的应用程序上继续执行。
  1. 单击“Stop Capture”,结束捕获。如果应用程序完成执行,捕获将自动停止。

  2. 然后传输和处理数据。进度指示器将显示在分析器窗口的右下角。

  3. 处理完成后,跟踪捕获数据显示在主分析器窗口中,根据主机上的线程、GPU上的上下文和设备进行组织。

  • 事件链接
    在等待或完成事件的调用之间显示相关链接。
  • 跟踪元素
    选择trace elements以在trace视图中查看元素的详细信息。
  • 可视化缓冲区
    如果启用了缓冲区和图像数据传输,则会显示另一条带有标记的轨道,其中绑定到给定缓冲区的数据可能已被修改。
  • 快照跟踪缓冲区
    单击一个标记来查看该数据,并在缓冲区或图像查看器上查看选定的缓冲区数据。
  • 查看器缓冲区
    可以自定义缓冲区查看器以适应所查看的数据。可以修改每页的行数和列数以对齐数据,也可以更改显示格式以匹配最常见的用例。
  • 跟踪视图
    使用API调用的跟踪数据返回值、参数和指标计算将出现在跟踪视图中。
  • 资源及监控视图
    Resources视图列出了捕获过程中收集的所有资源。单击某个资源,在检查器视图中显示该资源的详细信息。程序在Inspector视图中显示静态代码分析,在source视图中也显示包含内核的代码。

7. 捕获Vulkan应用程序

要为Vulkan应用程序捕获Vulkan跟踪指标,必须从Snapdragon Profiler的跟踪捕获面板启动应用程序。此外,Vulkan跟踪指标要求你的应用程序是可调试的(除了在根设备上)。在应用程序的AndroidManifest.xml中设置android:debuggable标志为true。

  1. 按照Trace Capture basics(跟踪捕获的基础操作)中的步骤1-4连接并打开一个新的Trace Capture选项卡,然后单击Data Sources面板中的Launch Application按钮:
    在这里插入图片描述

  2. 启动应用程序窗口,如图5-3所示。从已安装应用列表中选择一个应用程序,然后单击Launch。如果应用程序已经在运行,它将重新启动并启用Vulkan跟踪分析。
    在这里插入图片描述

    Figure 5-3 Launch Application window

  3. 从跟踪捕获基础的第5步开始,选择指标并开始捕获。

8. 分析

一些跟踪指标支持额外的分析。捕获跟踪之后,如果工具栏上的Analytics按钮已启用,则单击它。

在这里插入图片描述

“分析”窗口如图5-4所示。在左侧面板中选择一个统计信息来查看其他信息。

在这里插入图片描述

5-4 Analytics window

9. 测量时间

calipers,如图5-5所示,用于测量两个标记之间的时间。

  1. 双击时间轴(请参见绿框),在要测量的区域的开始和结束处设置标记。

  2. 左键单击其中一个标记,然后shift +左键单击另一个标记。
    在这里插入图片描述

    5-5 Measuring time with the calipers

设置,可以通过轨道左侧的一个小齿轮图标进行访问,它将总结在该组的每条轨道上花费的时间。只有屏幕上可见的元素才会被加满。
在这里插入图片描述

10. 注释

通过右键单击跟踪捕获中的任何块元素,可以将注释添加到该元素。为该组添加了一个注释跟踪。
在这里插入图片描述

这篇关于Qualcomm Snapdragon Profiler使用教程(3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_38498942/article/details/114300377
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/241745

相关文章

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核