4#include "Containers/Map.h"
36 const uint64 MaxTimeStepCycles;
57 : LastHeartBeatTime(0.0)
67 double LastHeartBeatTime;
88 void Resume(
double CurrentTime)
90 check(SuspendedCount > 0);
91 if (--SuspendedCount == 0)
93 LastHeartBeatTime = CurrentTime;
106 FHeartBeatInfo PresentHeartBeat;
121 double ConfigHangDuration;
122 double CurrentHangDuration;
123 double ConfigPresentDuration;
124 double CurrentPresentDuration;
125 double ConfigStuckDuration;
126 double CurrentStuckDuration;
128 double HangDurationMultiplier;
131 uint32 LastHangCallstackCRC;
140 int32 CheckpointSuspendCount;
156 void InitSettingsInternal();
178 UE_DEPRECATED(5.7,
"HeartBeat(bool bReadConfig) is deprecated, please use HeartBeat() instead.")
267 bool bSuspendedAllThreads;
277 HB->SuspendHeartBeat(bSuspendedAllThreads);
286 HB->ResumeHeartBeat(bSuspendedAllThreads);
296 bool bStartedMonitor;
299 : bStartedMonitor(
false)
303 bStartedMonitor =
true;
304 HB->MonitorFunctionStart();
313 HB->MonitorFunctionEnd();
322#ifndef LOOKUP_SYMBOLS_IN_HITCH_STACK_WALK
323#define LOOKUP_SYMBOLS_IN_HITCH_STACK_WALK 0
326#ifndef WALK_STACK_ON_HITCH_DETECTED
327#define WALK_STACK_ON_HITCH_DETECTED 0
341#if USE_HITCH_DETECTION
342 float HangDuration = -1.0f;
345 double FrameStartTime;
346 int32 SuspendedCount;
347 bool bStartSuspended =
false;
349#if WALK_STACK_ON_HITCH_DETECTED
350#if LOOKUP_SYMBOLS_IN_HITCH_STACK_WALK
351 static constexpr SIZE_T StackTraceSize = 65535;
352 ANSICHAR StackTrace[StackTraceSize];
354 static constexpr uint32 MaxStackDepth = 128;
355 uint64 StackTrace[MaxStackDepth];
365 void InitSettingsInternal();
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
FGameThreadHitchHeartBeatThreaded FGameThreadHitchHeartBeat
Definition ThreadHeartBeat.h:419
Definition ThreadHeartBeat.h:331
EConstants
Definition ThreadHeartBeat.h:370
@ InvalidThreadId
Definition ThreadHeartBeat.h:372
CORE_API void InitSettings()
Definition ThreadHeartBeat.cpp:965
CORE_API void FrameStart(bool bSkipThisFrame=false)
Definition ThreadHeartBeat.cpp:1158
void PostFork()
Definition ThreadHeartBeat.h:407
static CORE_API FGameThreadHitchHeartBeatThreaded * GetNoInit()
Definition ThreadHeartBeat.cpp:953
CORE_API void ResumeHeartBeat()
Definition ThreadHeartBeat.cpp:1199
virtual CORE_API bool Init()
Definition ThreadHeartBeat.cpp:959
CORE_API double GetCurrentTime()
Definition ThreadHeartBeat.cpp:1243
static CORE_API FGameThreadHitchHeartBeatThreaded & Get()
Definition ThreadHeartBeat.cpp:925
virtual CORE_API void Stop()
Definition ThreadHeartBeat.cpp:1153
virtual CORE_API uint32 Run()
Definition ThreadHeartBeat.cpp:1057
CORE_API double GetFrameStartTime()
Definition ThreadHeartBeat.cpp:1234
CORE_API bool IsStartedSuspended()
Definition ThreadHeartBeat.cpp:1225
CORE_API void SuspendHeartBeat()
Definition ThreadHeartBeat.cpp:1181
void Restart()
Definition ThreadHeartBeat.h:406
Definition NameTypes.h:617
Definition RunnableThread.h:20
Definition ThreadHeartBeat.h:33
CORE_API void Tick()
Definition ThreadHeartBeat.cpp:44
CORE_API double Seconds()
Definition ThreadHeartBeat.cpp:54
Definition ThreadHeartBeat.h:50
virtual CORE_API void Stop()
Definition ThreadHeartBeat.cpp:340
static CORE_API FThreadHeartBeat * GetNoInit()
Definition ThreadHeartBeat.cpp:147
CORE_API bool IsBeating()
Definition ThreadHeartBeat.cpp:863
CORE_API void SetDurationMultiplier(double NewMultiplier)
Definition ThreadHeartBeat.cpp:878
CORE_API void MonitorCheckpointEnd(FName CheckPoint)
Definition ThreadHeartBeat.cpp:694
CORE_API uint32 CheckFunctionHeartBeat(double &OutHangDuration)
Definition ThreadHeartBeat.cpp:641
uint32 GetLastHungThreadId() const
Definition ThreadHeartBeat.h:231
CORE_API void KillHeartBeat()
Definition ThreadHeartBeat.cpp:748
FOnThreadStuck & GetOnThreadStuck()
Definition ThreadHeartBeat.h:242
FOnThreadUnstuck & GetOnThreadUnstuck()
Definition ThreadHeartBeat.h:243
CORE_API uint32 CheckCheckpointHeartBeat(double &OutHangDuration)
Definition ThreadHeartBeat.cpp:707
CORE_API void HeartBeat()
Definition ThreadHeartBeat.cpp:429
CORE_API void MonitorFunctionStart()
Definition ThreadHeartBeat.cpp:488
CORE_API void PresentFrame()
Definition ThreadHeartBeat.cpp:470
virtual CORE_API bool Init()
Definition ThreadHeartBeat.cpp:153
double GetHangDuration() const
Definition ThreadHeartBeat.h:254
CORE_API void Start()
Definition ThreadHeartBeat.cpp:346
CORE_API void MonitorCheckpointStart(FName EndCheckPoint, double TimeToReachCheckpoint)
Definition ThreadHeartBeat.cpp:672
CORE_API void SuspendHeartBeat(bool bAllThreads=false)
Definition ThreadHeartBeat.cpp:757
EConstants
Definition ThreadHeartBeat.h:161
@ PresentThreadId
Definition ThreadHeartBeat.h:166
@ InvalidThreadId
Definition ThreadHeartBeat.h:163
CORE_API void MonitorFunctionEnd()
Definition ThreadHeartBeat.cpp:507
UE_DEPRECATED(5.7, "HeartBeat(bool bReadConfig) is deprecated, please use HeartBeat() instead.") CORE_API void HeartBeat(bool bReadConfig)
CORE_API void ResumeHeartBeat(bool bAllThreads=false)
Definition ThreadHeartBeat.cpp:797
virtual CORE_API uint32 Run()
Definition ThreadHeartBeat.cpp:290
uint32 GetLastStuckThreadId() const
Definition ThreadHeartBeat.h:237
CORE_API void InitSettings()
Definition ThreadHeartBeat.cpp:351
static CORE_API FThreadHeartBeat & Get()
Definition ThreadHeartBeat.cpp:119
FOnHangDelegate & GetOnHangDelegate()
Definition ThreadHeartBeat.h:249
CORE_API uint32 CheckHeartBeat(double &OutHangDuration)
Definition ThreadHeartBeat.cpp:549
Definition ThreadSafeBool.h:17
Definition ThreadSafeCounter.h:14
Definition UnixSignalHeartBeat.h:10
Definition UnrealString.h.inl:34
@ false
Definition radaudio_common.h:23
Definition ThreadHeartBeat.h:424
UE_FORCEINLINE_HINT FDisableHitchDetectorScope()
Definition ThreadHeartBeat.h:425
UE_FORCEINLINE_HINT ~FDisableHitchDetectorScope()
Definition ThreadHeartBeat.h:429
Definition ThreadHeartBeat.h:294
FFunctionHeartBeatScope()
Definition ThreadHeartBeat.h:298
~FFunctionHeartBeatScope()
Definition ThreadHeartBeat.h:307
Definition ThreadHeartBeat.h:265
FSlowHeartBeatScope(bool bAllThreads=false)
Definition ThreadHeartBeat.h:270
~FSlowHeartBeatScope()
Definition ThreadHeartBeat.h:280