Unreal Engine के साथ मेमोरी के इस्तेमाल की जानकारी देखना

किसी प्रोसेस पर मेमोरी का कितना दबाव है, यह 'बिना सोर्स फ़ाइल वाली आरएसएस मेमोरी + स्वैप मेमोरी' से पता चलता है. गेम को सही तरीके से चलाने के लिए, यह एक अहम मेट्रिक है. यह Android 17 और इसके बाद के वर्शन के लिए, मेमोरी लिमिटर की मेमोरी लिमिट थ्रेशोल्ड के साथ-साथ, Google Play Console में मेमोरी की ज़रूरी जानकारी के लिए स्टैंडर्ड बेंचमार्क के तौर पर काम करता है.

अनरियल इंजन में, रनटाइम या स्टैटिक तौर पर 'anonymous RSS + swap' से मेल खाने वाली मेमोरी के इस्तेमाल का सटीक आकलन करना मुश्किल है.

मेमोरी के इस्तेमाल को ट्रैक करने के लिए, Unreal Engine VmRSS + VmSwap मेट्रिक उपलब्ध कराता है. भले ही, यह 'गुमनाम आरएसएस + स्वैप' से ज़्यादा व्यापक है, क्योंकि VmRSS में rssFile और rssShmem शामिल हैं, लेकिन यह अब भी एक भरोसेमंद अनुमान के तौर पर काम करता है.

अपने गेम की मेमोरी फ़ुटप्रिंट का विश्लेषण करने के लिए, यहां दिए गए दिशा-निर्देशों का पालन करें:

C++ API का इस्तेमाल करके मेमोरी के बारे में क्वेरी करना

मेमोरी मेट्रिक के बारे में क्वेरी करने के लिए, यहां दिए गए C++ API का इस्तेमाल करें:

मेमोरी से जुड़ी क्वेरी के लिए कम संसाधनों का इस्तेमाल करना

कम साइज़ वाली मेमोरी क्वेरी के लिए GetMemoryUsedFast का इस्तेमाल करें. Android पर, यह तरीका /proc/self/status से सिर्फ़ ज़रूरी मेमोरी फ़ील्ड को पार्स करके, अनुमानित फ़ुटप्रिंट दिखाता है. इसके लिए, पूरी फ़ाइल को पढ़ने की ज़रूरत नहीं होती.

मेमोरी के बारे में ज़्यादा जानकारी

प्लैटफ़ॉर्म की मेमोरी के बारे में ज़्यादा जानकारी वाले आंकड़े देखने के लिए, GetStats का इस्तेमाल करें. इस तरीके से, प्लैटफ़ॉर्म की मेमोरी के बारे में पूरी जानकारी मिलती है. साथ ही, FPlatformMemoryStats.UsedPhysical और FPlatformMemoryStats.RssFile, दोनों की जानकारी मिलती है. UsedPhysical, VmRSS और VmSwap का जोड़ है. इसलिए, इसमें से RssFile घटाकर, बेंचमार्क वैल्यू के करीब पहुंचा जा सकता है.

#include "HAL/PlatformMemory.h"

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

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

कंसोल कमांड का इस्तेमाल करके मेमोरी पर नज़र रखना

इस तरीके का इस्तेमाल करके, डिवाइस पर गेम चलने के दौरान मेमोरी के इस्तेमाल की निगरानी करें. कंसोल खोलने के लिए, स्क्रीन पर चार उंगलियों से टैप करें. इसके बाद, यहां दिए गए निर्देश डालें.

निर्देश ब्यौरा
stat unit यह Mem लाइन में, फ़िज़िकल मेमोरी के मौजूदा कुल इस्तेमाल को दिखाता है. इसे हर फ़्रेम पर अपडेट किया जाता है.
stat unitmax यह Mem लाइन में, फ़िज़िकल और वर्चुअल मेमोरी के कुल इस्तेमाल की औसत और सेशन की सबसे ज़्यादा जानकारी दिखाता है.

Unreal Engine की स्टैट यूनिट ओवरले में, Mem लाइन दिख रही है.
पहली इमेज. stat unit ओवरले, जिसमें Mem लाइन दिख रही है.

Unreal Insights की मदद से मेमोरी को विज़ुअलाइज़ करना

Unreal Insights की मदद से, समय के साथ मेमोरी मेट्रिक को मॉनिटर और विज़ुअलाइज़ किया जा सकता है. जैसे, प्लैटफ़ॉर्म मेमोरी के आंकड़े और कस्टम काउंटर. इसके लिए, फ़्रेम के हिसाब से सटीक टाइमलाइन ग्राफ़ का इस्तेमाल किया जाता है.

  1. अपने डिवाइस को मेमोरी ट्रेस चैनलों से कनेक्ट करें. इसके लिए, ऐसे फ़्लैग इस्तेमाल करें जिनमें default,counters शामिल हो. इससे आपको फ़्रेम टाइमलाइन के साथ-साथ PlatformMemory/UsedPhysical (VmRSS + VmSwap) ग्राफ़ दिखेगा.
  2. ज़रूरी नहीं: कस्टम मेमोरी मेट्रिक को ज़्यादा बारीकी से ट्रैक करने के लिए, TRACE_DECLARE_MEMORY_COUNTER और 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 में Memory/EstimatedPhysicalMemory दिखाया गया है.
दूसरी इमेज. अनरियल इनसाइट की टाइमलाइन में कस्टम Memory/EstimatedPhysicalMemory काउंटर दिखाया गया है.

Perfetto का इस्तेमाल करके, मेमोरी के सटीक इस्तेमाल की पुष्टि करना

अनुमान के बजाय, Android OS की 'पहचान छिपाकर आरएसएस + स्वैप' वैल्यू की सटीक पुष्टि करने के लिए, Perfetto का इस्तेमाल करें. Perfetto, सिस्टम-लेवल की मेमोरी मेट्रिक कैप्चर करता है. इससे आपके गेम के सटीक फ़ुटप्रिंट का आकलन किया जा सकता है.

Perfetto यूज़र इंटरफ़ेस (यूआई) की इमेज में, बिना सोर्स फ़ाइल वाली आरएसएस मेमोरी, स्वैप मेमोरी, और उनकी कुल क्वेरी दिखाई गई है.
तीसरी इमेज. Perfetto यूज़र इंटरफ़ेस (यूआई) की इमेज. इसमें बिना सोर्स फ़ाइल वाली आरएसएस मेमोरी, स्वैप मेमोरी, और उनकी कुल क्वेरी दिखाई गई है.