Arbeitsspeichernutzung mit Unreal Engine prüfen

Der Messwert „anonymer RSS + Swap“ gibt den Arbeitsspeicherdruck eines Prozesses an und ist ein wichtiger Messwert für die Stabilität von Spielen. Er dient sowohl als Grenzwert für den Arbeitsspeicherbegrenzer (Android 17 und höher) als auch als Standard-Benchmark für die Messwerte zur Arbeitsspeichernutzung in der Google Play Console.

Es ist schwierig, die Arbeitsspeichernutzung zu messen, die genau mit „anonymer RSS + Swap“ übereinstimmt, entweder zur Laufzeit oder statisch in der Unreal Engine.

Für das Tracking der Arbeitsspeichernutzung bietet die Unreal Engine den VmRSS + VmSwap Messwert. Obwohl er umfassender ist als „anonymer RSS + Swap“, da VmRSS auch rssFile und rssShmem umfasst, dient er dennoch als zuverlässige Schätzung.

Folgen Sie dieser Anleitung, um den Speicherbedarf Ihres Spiels zu analysieren:

Arbeitsspeicher mit C++-APIs abfragen

Verwenden Sie die folgenden C++-APIs, um Arbeitsspeichermesswerte abzufragen:

Einfache Arbeitsspeicherabfrage

Verwenden Sie GetMemoryUsedFast für eine einfache Arbeitsspeicherabfrage. Unter Android gibt diese Methode die geschätzte Arbeitsspeichernutzung zurück, indem nur die erforderlichen Arbeitsspeicherfelder aus /proc/self/status geparst werden, anstatt die gesamte Datei zu lesen.

Detaillierte Arbeitsspeicherstatistiken

Verwenden Sie GetStats, um detaillierte Arbeitsspeicherstatistiken der Plattform abzufragen. Diese Methode liefert umfassende Arbeitsspeicherstatistiken der Plattform und gibt sowohl FPlatformMemoryStats.UsedPhysical als auch FPlatformMemoryStats.RssFile zurück. Da UsedPhysical die Summe aus VmRSS und VmSwap ist, können Sie sich dem Benchmark-Wert nähern, indem Sie RssFile davon subtrahieren.

#include "HAL/PlatformMemory.h"

uint64 GetEstimatedPhysicalMemory()
{
  FPlatformMemoryStats Stats = FPlatformMemory::GetStats();

#if PLATFORM_ANDROID
    return Stats.UsedPhysical - Stats.RssFile;
#else
    return Stats.UsedPhysical;
#endif
}

Arbeitsspeicher mit Konsolenbefehlen überwachen

Mit diesem Ansatz können Sie Arbeitsspeichertrends beobachten, während das Spiel auf dem Gerät ausgeführt wird. Tippen Sie mit vier Fingern auf den Bildschirm, um die Konsole zu öffnen, und geben Sie dann die folgenden Befehle ein.

Befehl Beschreibung
stat unit Zeigt die aktuelle aggregierte physische Arbeitsspeichernutzung in der Zeile „Mem“ an, die mit jedem Frame aktualisiert wird.
stat unitmax Zeigt die durchschnittliche und maximale aggregierte physische und virtuelle Arbeitsspeichernutzung in der Zeile „Mem“ an.

Unreal Engine-Statistik-Overlay mit der Zeile „Mem“
Abbildung 1 Das stat unit Overlay mit der Mem Zeile.

Arbeitsspeicher mit Unreal Insights visualisieren

Mit Unreal Insights können Sie Arbeitsspeichermesswerte wie Arbeitsspeicherstatistiken der Plattform und benutzerdefinierte Zähler im Zeitverlauf mit framegenauen Zeitachsendiagrammen beobachten und visualisieren.

  1. Verbinden Sie Ihr Gerät mit den Arbeitsspeicher-Trace-Channels mit Flags, die default,counters enthalten, um das Diagramm PlatformMemory/UsedPhysical (VmRSS + VmSwap) neben der Frame-Zeitachse anzusehen.
  2. Optional: Wenn Sie benutzerdefinierte Arbeitsspeichermesswerte detaillierter verfolgen möchten, deklarieren und aktualisieren Sie einen benutzerdefinierten Trace-Zähler mit TRACE_DECLARE_MEMORY_COUNTER und TRACE_COUNTER_SET.
#include "ProfilingDebugging/CountersTrace.h"

TRACE_DECLARE_MEMORY_COUNTER(Trace_EstimatedPhysicalMemory, TEXT("Memory/EstimatedPhysicalMemory"));

void UpdateMemoryTraceCounter()
{
    // Note: Ensure GetEstimatedPhysicalMemory() is defined as shown
    // in the Query memory at runtime using C++ APIs section.
    TRACE_COUNTER_SET(Trace_EstimatedPhysicalMemory, GetEstimatedPhysicalMemory());
}

Unreal Insights mit Memory/EstimatedPhysicalMemory.
Abbildung 2. Die Unreal Insights-Zeitachse mit dem benutzerdefinierten Memory/EstimatedPhysicalMemory Zähler.

Genaue Arbeitsspeichernutzung mit Perfetto überprüfen

Wenn Sie genaue Werte für „anonymer RSS + Swap“ für das Android-Betriebssystem anstelle einer Schätzung überprüfen möchten, verwenden Sie Perfetto. Perfetto erfasst Arbeitsspeichermesswerte auf Systemebene, um die genaue Arbeitsspeichernutzung Ihres Spiels zu ermitteln.

Perfetto-Benutzeroberfläche mit anonymer RSS-, Swap- und Summenabfrage.
Abbildung 3 Die Perfetto-UI mit der Abfrage für anonymen RSS, Swap und deren Summe.