GPU[@"PerformanceStatistics"]中的按键是什么意思?

What is the meaning of the keys in the GPU[@"PerformanceStatistics"]?

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

{

    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;
}

我知道这个问题有点陈旧,但如果有人问同样的问题,您可以通过阅读此处有关该主题的官方 Apple 开发人员文档了解其中大部分内容的含义:https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/OpenGLDriverMonitorUserGuide/Glossary/Glossary.html

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

考虑到普通人不需要这一级别的信息,请问您为什么需要这些信息而不是使用 XCode 附带的性能分析工具?

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

Programmatically get GPU percent usage in OS X https://gist.github.com/chockenberry/2afe4d0f1f9caddc81de

暴露的 GPU 驱动程序的确切信息因一个 GPU 和下一个 GPU 以及 OS 版本而异。第一个 link 通过 C/C++ 代码演示了获取 GPU 使用率和其他统计数据是多么简单。第二个 link 包含不同 GPU 可以生成的各种示例。当然,请参阅每个 link 底部的注释,因为这些属性名称可能会更改。

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

希望对您有所帮助。