近期为了丰富UE4插件UnrealAutomator的基础功能,在ProfileService中增加了LLM数据获取的方法。LLM拥有抓取UE4底层模块内存使用情况的功能,各种Modules按照LLM的规范实现相应宏即可将内存使用数据实时更新到LLM系统中。如果从产品外部,是难以直接访问这些信息的。
以UE4.24为例,用C++在UE4插件实现LLM数据获取的方式如下:
1 | /** |
LLM追踪内存,默认给了70多个tag,如果用户需要把自己的模块加进去可以加到custom tag里。用这个实现基本能导出这些tag的实时占用数据。
值得一提的是,在引擎默认LLM的实现当中(Core/HAL/Public/LowLevelMemTracker.h
与Core/HAL/Private/LowLevelMemTracker.cpp
),默认屏蔽了内部的一些类以及extern函数的实现,使得用户无法通过MODULE_API
的方式直接访问相应的数据结构及功能。如果实在有深入挖掘的需求,比如说区分stat LLMFULL
与LLM summary
,需要考虑更改引擎的代码,公开一部分模块内容,修改LLMGetTagStat
与LLMGetTagStatGroup
实现去支持custom tag,从而更加方便实现需求。
再提一嘴,除了LLM之外,如果要获得其它的stat数据,可以采用Hook Stats的方式进行。这块以后有空再慢慢研究~