首页 > 解决方案 > GPU[@"PerformanceStatistics"] 中的键是什么意思?

问题描述

我在 iPhone 设备上的 iOS 应用程序中从 IOKit 获取 GPU 信息,并获得 GPU 信息的 @"PerformanceStatistics" 值,我很困惑这里的键值是什么意思:

{

    CommandBufferRenderCount = 1;
    "Device Utilization %" = 0;
    "Renderer Utilization %" = 0;
    SplitSceneCount = 0;
    TiledSceneBytes = 217088;
    "Tiler Utilization %" = 0;
    agpTextureCreationBytes = 0;
    agprefTextureCreationBytes = 16384;
    contextGLCount = 0;
    finishGLWaitTime = 0;
    freeToAllocGPUAddressWaitTime = 0;
    gartMapInBytesPerSample = 16384;
    gartMapOutBytesPerSample = 0;
    gartUsedBytes = 30801920;
    hardwareWaitTime = 0;
    iosurfaceTextureCreationBytes = 0;
    oolTextureCreationBytes = 0;
    recoveryCount = 0;
    stdTextureCreationBytes = 0;
    textureCount = 521;
}

标签: objective-ciokit

解决方案


我知道这个问题有点老了,但如果有人问同样的问题,你可以通过阅读苹果官方关于这个主题的开发者文档来了解其中的大部分含义:https ://developer.apple.com/library /archive/documentation/GraphicsImaging/Conceptual/OpenGLDriverMonitorUserGuide/Glossary/Glossary.html

至于未列出的,大多数都是不言自明的,而且命名恰当。大多数现代 iOS 和 macOS 驱动程序都会为您计算 GPU 和硬件引擎(例如视频、渲染器和平铺引擎)的使用情况。如果在 Xcode 的性能工具之外需要这些值,则可以从 Objective-C 和 C++ 中查询这些值。

考虑到一般人不需要这种级别的信息,我可以问一下为什么你需要这个而不是使用 XCode 附带的性能分析工具?

编辑:大多数搜索上述信息的人通常都在寻找获取 macOS 或 iOS 的整个系统的 GPU 使用率的方法。如果您或其他任何人需要自定义代码来获取此信息,请参阅以下链接:

以编程方式获取 OS X 中的 GPU 百分比使用率 https://gist.github.com/chockenberry/2afe4d0f1f9caddc81de

公开的 GPU 驱动程序的确切信息因一个 GPU 到另一个 GPU 以及操作系统版本而异。第一个链接通过 C/C++ 代码演示了获取 GPU 使用情况和其他统计数据是多么简单。第二个链接包含不同 GPU 可以生成的各种示例。当然,请参阅每个链接底部的注释,因为这些属性名称可能会发生变化。

最后,如果您的 GPU 没有直接公开 GPU 使用统计信息,那么计算它的唯一可能方法是查询 hardwareWaitTime 的值(这是 GPU 忙碌多长时间的纳秒时间)并比较该时间使用 GPU 时钟速度(我还不知道如何以编程方式获取此类信息):GPUusage = hardwareWaitTime/GPUClockSpeed in nanohertz。

希望这可以帮助。


推荐阅读