我想计算GPU使用率。是否有任何类似于cpu统计信息保存在/ proc / stat的文件?
获取GPU等详细信息的方法可能是什么?
由于
答案 0 :(得分:4)
Since Android 4.3(Jelly Bean)你可以通过Dev Options中的工具监控它。
Seetings>更多>开发人员选项>配置文件GPU渲染。
您可能需要在Android 4.2上启用开发者选项,因为它默认是隐藏的。通过在设置>上点击7次启用此功能关于手机>内部编号。
配置文件GPU渲染有几个选项,“在屏幕上显示为条形图”是一种很好的方式,可以快速直观地查看正在发生的事情。
答案 1 :(得分:1)
AGI (Android GPU Inspector)目前处于公开测试阶段,并且仅支持以下devices:
DEVICE NAME GPU NAME
Google Pixel 4 (standard and XL) Qualcomm® Adreno™ 640
Google Pixel 5 Qualcomm® Adreno™ 620
Google Pixel 4a 5G Qualcomm® Adreno™ 620
These devices do not support AGI yet but will offer support in the future:
DEVICE NAME GPU NAME
Google Pixel 4a Qualcomm® Adreno™ 618
Samsung Galaxy S10 series Qualcomm® Adreno™ 640 and Arm® Mali™ G76
Samsung Galaxy S20 series Qualcomm® Adreno™ 650 and Arm® Mali™ G77
Samsung Galaxy Note 10 series Qualcomm® Adreno™ 640 and Arm® Mali™ G76
Samsung Galaxy Note 20 series Qualcomm® Adreno™ 650 and Arm® Mali™ G77
这将允许您分析应用程序的GPU使用情况。
答案 2 :(得分:1)
对于Arm Mali GPU,您可以使用Streamline,它是Arm Mobile Studio的一部分的性能分析器:https://developer.arm.com/tools-and-software/graphics-and-gaming/arm-mobile-studio/components/streamline-performance-analyzer
Mobile Studio是免费的,并且有一些不错的视频教程。
答案 3 :(得分:0)
如果您想优化您的 GL 管道代码,您可能会发现 Fencing 是一个简单的替代或补充工具。这是 Kotlin 中的一个示例:
override fun onDrawFrame(unused: GL10) {
if(glPipelineFence != null) { // if it's the first pass then ignore
// block until the GPU has reached the pipeline fence
val result = glClientWaitSync(glPipelineFence!!, 0, 1000000000)
if (result == GL_TIMEOUT_EXPIRED) Log.v("myinfo", "gl fence error: expired")
if (result == GL_WAIT_FAILED) Log.v("myinfo", "gl fence error: failed")
glDeleteSync(glPipelineFence!!)
}
// YOUR OPEN GL ES STUFF GOES HERE
glPipelineFence = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0)
}
然后您可以使用增量,例如System.currentTimeMillis()
的任一侧 glClientWaitSync
或整个函数范围,以查看您的管道需要多长时间。 glClientWaitSync
将阻塞,直到 OpenGL ES 管道在最后执行栅栏命令。
答案 4 :(得分:-2)
GPUz将帮助您跟踪任何图形应用程序的GPU使用情况。它可以简单地显示内存使用情况和GPU负载,并且可能适用于大多数硬件。