Max*_*Max
5
performance
android
opengl-es
game-development
unity-game-engine
首先感谢您花时间查看此内容 - 我们感谢您的任何意见!
\n
关于我们现在面临的问题:\n在过去的几个月里,我们在 Android 上的游戏应用程序中遇到了随机 fps 下降到接近于零的情况,并且到目前为止尚未成功调试该问题。它完全随机发生(有时在 3 分钟后,有时在 3 小时后),感觉就像冻结一样 - 但实际上 FPS 在仍在运行时下降得非常快。\n我们已经花了相当多的时间使用各种工具进行调试和分析。现在我们希望您能帮助我们并从我们的数据中得出新的结论。
\n
版本:
\n
\n- Unity版本:2020.3.30f1
\n- 用户计划:10.8.1
\n
\n
线索:
\n
\n- 这不是完全冻结。如果您等待足够长的时间,新的帧就会被渲染。
\n- 首先,帧时间变为 30 毫秒、50 毫秒、100 毫秒、500 毫秒、1000 毫秒、3 分钟、5 分钟等 - 在很短的时间内
\n- 该问题已在不同的 Android 设备上重现(例如 OnePlus 6)
\n- 在统一分析器中,我们可以看到,当问题发生时,主线程似乎正在等待渲染线程上的“gfx.presentframe”
\n- 负载没有实际增加(您可能在同一场景中闲置 30 分钟,一切都很好,然后 fps 突然下降。我们也没有看到多边形、内存使用量增加,分析器中的任何内容都没有增加)
\n- 问题发生在屏幕上具有不同对象的不同场景等中
\n- 问题随机发生,有时在运行应用程序 5 分钟后,有时在运行应用程序 2 小时后。它似乎与设备变热或进入电源安全模式无关
\n- 问题不需要任何输入/交互。它只是在让应用程序空闲时发生
\n- 在 ARM mobile studio 图形分析器中,我们可以看到,一旦问题发生,eglGetCurrentContext() 和下一个命令 (eglGetSyncAttribKHR ) 之间就会有约 3 分钟(或更长)的间隙 - 然而命令本身只需要几个 \xce\xbcs。当查看较早的帧时(问题开始之前),eglGetCurrentContext() 和下一个命令 (eglGetSyncAttribKHR ) 之间没有明显的延迟。eglGetCurrentContext() 的返回值在问题开始之前和问题发生时是相同的
\n
\n
分析器的屏幕截图(帧时间超过 2 秒):\n
\n
我们可以在以下位置重现该问题:
\n
\n- 小米红米 9T [高通 SM6115 骁龙 662]
\n- 雅思特T5【全志A133】
\n- 一加 6 (A6003) [高通 SDM845 骁龙 845]
\n
\n
我们在这里希望的是:
\n
\n- 我们非常高兴获得任何帮助或线索
\n- 哪种分析工具可以告诉我们到底出了什么问题?
\n- 下一步应该采取什么措施来找出问题所在以及如何解决这个问题?
\n- 以前有人见过类似的事情发生吗?
\n
\n