UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LowLevelMemStats.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Stats/Stats.h"
7
8#if ENABLE_LOW_LEVEL_MEM_TRACKER && STATS
12 #define DECLARE_LLM_MEMORY_STAT(CounterName,StatId,GroupId) \
13 DECLARE_STAT(CounterName,StatId,GroupId,EStatDataType::ST_int64, EStatFlags::None, FPlatformMemory::MCR_PhysicalLLM); \
14 static DEFINE_STAT(StatId)
15 #define DECLARE_LLM_MEMORY_STAT_EXTERN(CounterName,StatId,GroupId, API) \
16 DECLARE_STAT(CounterName,StatId,GroupId,EStatDataType::ST_int64, EStatFlags::None, FPlatformMemory::MCR_PhysicalLLM); \
17 extern API DEFINE_STAT(StatId);
18
25
26 /*
27 * LLM Summary stats referenced by ELLMTagNames
28 */
48
49#else
50 #define DECLARE_LLM_MEMORY_STAT(CounterName,StatId,GroupId)
51 #define DECLARE_LLM_MEMORY_STAT_EXTERN(CounterName,StatId,GroupId, API)
52
53#endif //ENABLE_LOW_LEVEL_MEM_TRACKER && STATS
54
58#if ENABLE_LOW_LEVEL_MEM_TRACKER && LLM_ENABLED_STAT_TAGS
59#define LLM_SCOPED_TAG_WITH_STAT(Stat, Tracker) FLLMScope SCOPE_NAME(GET_STATFNAME(Stat), true /* bIsStatTag */, ELLMTagSet::None, Tracker);
60#define LLM_SCOPED_TAG_WITH_STAT_IN_SET(Stat, Set, Tracker) FLLMScope SCOPE_NAME(GET_STATFNAME(Stat), true /* bIsStatTag */, Set, Tracker);
61#define LLM_SCOPED_TAG_WITH_STAT_NAME(StatName, Tracker) FLLMScope SCOPE_NAME(StatName, true /* bIsStatTag */, ELLMTagSet::None, Tracker);
62#define LLM_SCOPED_TAG_WITH_STAT_NAME_IN_SET(StatName, Set, Tracker) FLLMScope SCOPE_NAME(StatName, true /* bIsStatTag */, Set, Tracker);
63#define LLM_SCOPED_SINGLE_PLATFORM_STAT_TAG(Stat) DECLARE_LLM_MEMORY_STAT(TEXT(#Stat), Stat, STATGROUP_LLMPlatform); LLM_SCOPED_TAG_WITH_STAT(Stat, ELLMTracker::Platform);
64#define LLM_SCOPED_SINGLE_PLATFORM_STAT_TAG_IN_SET(Stat, Set) DECLARE_LLM_MEMORY_STAT(TEXT(#Stat), Stat, STATGROUP_LLMPlatform); LLM_SCOPED_TAG_WITH_STAT_IN_SET(Stat, Set, ELLMTracker::Platform);
65#define LLM_SCOPED_SINGLE_STAT_TAG(Stat) DECLARE_LLM_MEMORY_STAT(TEXT(#Stat), Stat, STATGROUP_LLMFULL); LLM_SCOPED_TAG_WITH_STAT(Stat, ELLMTracker::Default);
66#define LLM_SCOPED_SINGLE_STAT_TAG_IN_SET(Stat, Set) DECLARE_LLM_MEMORY_STAT(TEXT(#Stat), Stat, STATGROUP_LLMFULL); LLM_SCOPED_TAG_WITH_STAT_IN_SET(Stat, Set, ELLMTracker::Default);
67#define LLM_SCOPED_PAUSE_TRACKING_WITH_STAT_AND_AMOUNT(Stat, Amount, Tracker) FLLMPauseScope SCOPE_NAME(GET_STATFNAME(Stat), true /* bIsStatTag */, Amount, Tracker, ELLMAllocType::None);
68#define LLM_SCOPE_DYNAMIC_STAT_OBJECTPATH(Object, Set) LLM_SCOPE_DYNAMIC(FName(*Object->GetPathName()), \
69 ELLMTracker::Default, Set, FLLMDynamicTagConstructorStatString(Object->GetPathName()))
70#define LLM_SCOPE_DYNAMIC_STAT_OBJECTPATH_FNAME(ObjectPath, Set) LLM_SCOPE_DYNAMIC(ObjectPath, \
71 ELLMTracker::Default, Set, FLLMDynamicTagConstructorStatString((ObjectPath).ToString()))
72
73// special stat pushing to update threads after each asset when tracking assets
74// Currently this is unused, but we may use it for optimizations later
75#if LLM_ALLOW_ASSETS_TAGS
76//#define LLM_PUSH_STATS_FOR_ASSET_TAGS() if (FLowLevelMemTracker::Get().IsTagSetActive(ELLMTagSet::Assets)) {}
77#define LLM_PUSH_STATS_FOR_ASSET_TAGS()
78#else
79#define LLM_PUSH_STATS_FOR_ASSET_TAGS()
80#endif
81
82#else
83#define LLM_SCOPED_TAG_WITH_STAT(...)
84#define LLM_SCOPED_TAG_WITH_STAT_IN_SET(...)
85#define LLM_SCOPED_TAG_WITH_STAT_NAME(...)
86#define LLM_SCOPED_TAG_WITH_STAT_NAME_IN_SET(...)
87#define LLM_SCOPED_SINGLE_PLATFORM_STAT_TAG(...)
88#define LLM_SCOPED_SINGLE_PLATFORM_STAT_TAG_IN_SET(...)
89#define LLM_SCOPED_SINGLE_STAT_TAG(...)
90#define LLM_SCOPED_SINGLE_STAT_TAG_IN_SET(...)
91#define LLM_SCOPED_PAUSE_TRACKING_WITH_STAT_AND_AMOUNT(...)
92#define LLM_SCOPE_DYNAMIC_STAT_OBJECTPATH(...)
93#define LLM_SCOPE_DYNAMIC_STAT_OBJECTPATH_FNAME(...)
94#define LLM_PUSH_STATS_FOR_ASSET_TAGS()
95#endif
96
97#define LLM_SCOPED_TAG_WITH_OBJECT_IN_SET(Object, Set) UE_DEPRECATED_MACRO(5.3, "Use LLM_SCOPE_DYNAMIC_STAT_OBJECTPATH instead") LLM_SCOPE_DYNAMIC_STAT_OBJECTPATH(Object, Set);
98
99
#define TEXT(x)
Definition Platform.h:1272
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_LLM_MEMORY_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition LowLevelMemStats.h:51