文章目录
LLMT
LLM目前有两个跟踪器。每个跟踪器都有自己的分配映射和标记堆栈。默认跟踪器适用于引擎的所有分配。在这两个跟踪器中,它的级别较高并记录通过 FMemory 类函数 Malloc 进行的分配。该跟踪器可为 stat LLM 和 stat LLMFULL 控制台命令提供统计信息。平台跟踪器是较低级别的版本,它记录从OS进行的所有分配。例如,它会跟踪 Binned2 等函数进行的内部分配。因此,默认跟踪器统计信息是平台跟踪器统计信息的子集。
使用 -LLMCSV 命令行参数时,.CSV 文件将写入 saved/profiling/llm/。该文件将包含每个标记的列,以MB为单位显示当前值。每隔5秒写一个新行(默认情况下)。此频率可以使用 LLM.LLMWriteInterval 控制台变量更改。
- -LLM: bIsDisabled
- -LLMCSV: bCsvWriterEnabled,同时使用FLLMCsvWriter
初始化
FLowLevelMemTracker() + FLLMAllocator::Initialise()
--> FLowLevelMemTracker::InitialiseTrackers() + FLLMTracker::Initialise()
GetTracker(ELLMTracker::Platform)->SetTotalTags(ELLMTag::PlatformUntaggedTotal, ELLMTag::PlatformTrackedTotal);
GetTracker(ELLMTracker::Default)->SetTotalTags(ELLMTag::UntaggedTotal, ELLMTag::TrackedTotal);
- 构造FLowLevelMemTracker和FLLMAllocator
- 初始化Tags
- UnrealMemory.h 平台接口,每一个平台都需要分配内存
- FMemory::GCreateMalloc() -> FMemory_GCreateMalloc_ThreadSave() -> FPlatformMemory::BaseAllocator()[Windows] --> FMallocBinned2() --> FLLMScope::Init --> FLowLevelMemTracker::Get()–>Construt()
- FPlatformMemory::GetConstants(): 获取PageSize,TotalPhysical,TotalVirtual等数据
- FLLMTracker* Trackers[(int32)ELLMTracker::Max]: 存放两个一个Default,另一个是Platform的
- FLLMAllocator 每个类都有引用到
- uint64 PlatformProcessMemory = PlatformStats.UsedVirtual; // virtual is working set + paged out memory
词汇
- 虚拟内存 = Working Set + Page Out Memory
- ProgramSize: 代码,变量,Stacked Memory存储等存储大小
- WokingSetSize = Physical Memory
- PlatformProcessMemory: 不同平台获取的值不一样,Windows平台下,代表虚拟内存
每5秒更新
//控制命令 变量
TAutoConsoleVariable<int32> CVarLLMWriteInterval(
TEXT("LLM.LLMWriteInterval"),
5,
TEXT("The number of seconds between each li