UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PerfCounters.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Misc/CoreMisc.h"
8#include "Containers/Ticker.h"
10
11#include "HttpResultCallback.h"
12#include "HttpPath.h"
13#include "HttpRouteHandle.h"
14
15class IHttpRouter;
17class FZeroLoad;
18class FInternetAddr;
19
21
23 : public FTSTickerObjectBase
25 , public IPerfCounters
26 , public TSharedFromThis<FPerfCounters>
27{
28public:
29
30 FPerfCounters(const FString& InUniqueInstanceId);
31 virtual ~FPerfCounters();
32
34 bool Initialize();
35
37 virtual bool Tick(float DeltaTime) override;
38
39 //~ Begin IPerfCounters Interface
40 const FString& GetInstanceName() const override { return UniqueInstanceId; }
41 virtual double GetNumber(const FString& Name, double DefaultValue = 0.0) override;
42 virtual void SetNumber(const FString& Name, double Value, uint32 Flags) override;
43 virtual void SetString(const FString& Name, const FString& Value, uint32 Flags) override;
44 virtual void SetJson(const FString& Name, const FProduceJsonCounterValue& InCallback, uint32 Flags) override;
45 virtual FPerfCounterExecCommandCallback& OnPerfCounterExecCommand() override { return ExecCmdCallback; }
46 virtual const TMap<FString, FJsonVariant>& GetAllCounters() override { return PerfCounterMap; }
47 virtual FString GetAllCountersAsJson() override;
48 virtual void ResetStatsForNextPeriod() override;
49 virtual TPerformanceHistogramMap& PerformanceHistograms() override { return PerformanceHistogramMap; }
50 // Legacy load tracking, which is raw frame time, not overshoot.
51 virtual bool StartMachineLoadTracking() override;
52 // If OvershootBuckets is empty, will use legacy load tracking values, which is raw frame time, not overshoot.
53 virtual bool StartMachineLoadTracking(double TickRate, const TArray<double>& FrameTimeHistogramBucketsMs) override;
54 virtual bool StopMachineLoadTracking();
55 virtual bool ReportUnplayableCondition(const FString& ConditionDescription);
56 //~ Begin IPerfCounters Interface end
57
58protected:
59 //~ Begin Exec Interface
60 virtual bool Exec_Runtime(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar);
61 //~ End Exec Interface
62
63private:
64
65 void TickZeroLoad(float DeltaTime);
66 void TickSystemCounters(float DeltaTime);
67
75 bool ProcessStatsRequest(const FHttpServerRequest& Request, const FHttpResultCallback& OnComplete);
76
84 bool ProcessExecRequest(const FHttpServerRequest& Request, const FHttpResultCallback& OnComplete);
85
87 FString UniqueInstanceId;
88
90 float InternalCountersUpdateInterval;
91
93 float LastTimeInternalCountersUpdated;
94
96 TMap<FString, FJsonVariant> PerfCounterMap;
97
99 FPerfCounterExecCommandCallback ExecCmdCallback;
100
102 TPerformanceHistogramMap PerformanceHistogramMap;
103
105 FZeroLoad* ZeroLoadThread;
106
108 FRunnableThread* ZeroLoadRunnable;
109
111 TSharedPtr<IHttpRouter> HttpRouter = nullptr;
112
114 FHttpRouteHandle StatsRouteHandle = nullptr;
115
117 FHttpRouteHandle ExecRouteHandle = nullptr;
118};
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
OnComplete(MoveTemp(Response))
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IPAddress.h:22
Definition OutputDevice.h:133
Definition PerfCounters.h:27
virtual const TMap< FString, FJsonVariant > & GetAllCounters() override
Definition PerfCounters.h:46
virtual double GetNumber(const FString &Name, double DefaultValue=0.0) override
Definition PerfCounters.cpp:274
virtual FString GetAllCountersAsJson() override
Definition PerfCounters.cpp:99
virtual FPerfCounterExecCommandCallback & OnPerfCounterExecCommand() override
Definition PerfCounters.h:45
virtual bool ReportUnplayableCondition(const FString &ConditionDescription)
Definition PerfCounters.cpp:377
virtual bool Exec_Runtime(UWorld *InWorld, const TCHAR *Cmd, FOutputDevice &Ar)
Definition PerfCounters.cpp:210
const FString & GetInstanceName() const override
Definition PerfCounters.h:40
virtual TPerformanceHistogramMap & PerformanceHistograms() override
Definition PerfCounters.h:49
virtual ~FPerfCounters()
Definition PerfCounters.cpp:40
virtual void SetNumber(const FString &Name, double Value, uint32 Flags) override
Definition PerfCounters.cpp:293
bool Initialize()
Definition PerfCounters.cpp:49
virtual void ResetStatsForNextPeriod() override
Definition PerfCounters.cpp:138
virtual void SetJson(const FString &Name, const FProduceJsonCounterValue &InCallback, uint32 Flags) override
Definition PerfCounters.cpp:309
virtual void SetString(const FString &Name, const FString &Value, uint32 Flags) override
Definition PerfCounters.cpp:301
virtual bool StartMachineLoadTracking() override
Definition PerfCounters.cpp:317
virtual bool StopMachineLoadTracking()
Definition PerfCounters.cpp:347
Definition RunnableThread.h:20
Definition CoreMisc.h:28
Definition Ticker.h:137
Definition ZeroLoad.h:11
Definition IHttpRouter.h:16
Definition PerfCountersModule.h:48
Flags
Definition PerfCountersModule.h:52
TMap< FName, FHistogram > TPerformanceHistogramMap
Definition PerfCountersModule.h:87
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition SharedPointer.h:1640
Definition SharedPointer.h:692
Definition World.h:918
Definition HttpServerRequest.h:24