আনরিয়েল ইঞ্জিন দিয়ে মেমরি ব্যবহার পরীক্ষা করুন

একটি প্রসেসের মেমোরি প্রেসারকে নির্দেশ করে, ‘ অ্যানোনিমাস আরএসএস + সোয়াপ ’ হলো গেমের স্থিতিশীলতা বজায় রাখার জন্য একটি অত্যন্ত গুরুত্বপূর্ণ মেট্রিক। এটি মেমোরি লিমিটারের (অ্যান্ড্রয়েড ১৭ এবং তার পরবর্তী সংস্করণ) জন্য মেমোরি লিমিট থ্রেশহোল্ড এবং গুগল প্লে কনসোলের মেমোরি ভাইটালসের জন্য স্ট্যান্ডার্ড বেঞ্চমার্ক উভয় হিসেবেই কাজ করে।

আনরিয়েল ইঞ্জিনের মধ্যে রানটাইমে অথবা স্ট্যাটিক্যালি, 'অ্যানোনিমাস আরএসএস + সোয়াপ'-এর সাথে হুবহু মিলে যায় এমন মেমরি ব্যবহার পরিমাপ করা কঠিন।

মেমরি ব্যবহারের হিসাব রাখার জন্য, আনরিয়েল ইঞ্জিন VmRSS + VmSwap মেট্রিকটি প্রদান করে। যদিও এটি 'অ্যানোনিমাস RSS + সোয়াপ'-এর চেয়ে ব্যাপক, কারণ VmRSS মধ্যে rssFile এবং rssShmem অন্তর্ভুক্ত থাকে, তবুও এটি একটি নির্ভরযোগ্য আনুমানিক হিসাব হিসেবে কাজ করে।

আপনার গেমের মেমরি ফুটপ্রিন্ট বিশ্লেষণ করতে এই নির্দেশিকা অনুসরণ করুন:

C++ API ব্যবহার করে মেমরি কোয়েরি করুন

মেমরি মেট্রিক্স জানতে নিম্নলিখিত C++ API গুলি ব্যবহার করুন:

হালকা মেমরি কোয়েরি

একটি লাইটওয়েট মেমোরি কোয়েরির জন্য GetMemoryUsedFast ব্যবহার করুন। অ্যান্ড্রয়েডে, এই মেথডটি সম্পূর্ণ ফাইলটি পড়ার পরিবর্তে, /proc/self/status থেকে শুধুমাত্র প্রয়োজনীয় মেমোরি ফিল্ডগুলো পার্স করে আনুমানিক ফুটপ্রিন্ট রিটার্ন করে।

বিস্তারিত স্মৃতি পরিসংখ্যান

প্ল্যাটফর্মের বিস্তারিত মেমরি পরিসংখ্যান জানতে GetStats ব্যবহার করুন। এই মেথডটি প্ল্যাটফর্মের ব্যাপক মেমরি পরিসংখ্যান প্রদান করে এবং FPlatformMemoryStats.UsedPhysicalFPlatformMemoryStats.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 সারিতে গড় এবং সেশনের সর্বোচ্চ মোট ফিজিক্যাল ও ভার্চুয়াল মেমরি ব্যবহারের পরিমাণ প্রদর্শন করে।

আনরিয়েল ইঞ্জিনের স্ট্যাট ইউনিট ওভারলে, যেখানে মেম সারিটি দেখানো হচ্ছে।
চিত্র ১. Mem সারি প্রদর্শনকারী stat unit ওভারলে।

আনরিয়েল ইনসাইটস-এর মাধ্যমে স্মৃতিকে দৃশ্যমান করুন

আনরিয়েল ইনসাইটস আপনাকে ফ্রেম-সঠিক টাইমলাইন গ্রাফ ব্যবহার করে সময়ের সাথে সাথে প্ল্যাটফর্ম মেমরি স্ট্যাটস এবং কাস্টম কাউন্টারের মতো মেমরি মেট্রিকগুলো নিরীক্ষণ ও ভিজ্যুয়ালাইজ করতে দেয়।

  1. ফ্রেম টাইমলাইনের পাশাপাশি PlatformMemory/UsedPhysical ( VmRSS + VmSwap ) গ্রাফটি দেখতে, আপনার ডিভাইসটিকে default,counters সহ ফ্ল্যাগ ব্যবহার করে মেমরি ট্রেস চ্যানেলের সাথে সংযুক্ত করুন।
  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());
}

অবাস্তব অন্তর্দৃষ্টি যা স্মৃতি/আনুমানিক শারীরিক স্মৃতি প্রদর্শন করে।
চিত্র ২. আনরিয়েল ইনসাইটস টাইমলাইন, যেখানে কাস্টম Memory/EstimatedPhysicalMemory কাউন্টারটি দেখানো হচ্ছে।

পারফেটটো ব্যবহার করে মেমরির সঠিক ব্যবহার যাচাই করুন।

আনুমানিক মানের পরিবর্তে অ্যান্ড্রয়েড ওএস-এর সঠিক ' অ্যানোনিমাস আরএসএস + সোয়াপ ' মান যাচাই করতে পারফেটটো ব্যবহার করুন। পারফেটটো আপনার গেমের সঠিক মেমরি ফুটপ্রিন্ট মূল্যায়ন করার জন্য সিস্টেম-স্তরের মেমরি মেট্রিক্স সংগ্রহ করে।

পারফেটটো UI অ্যানোনিমাস RSS, সোয়াপ এবং তাদের সাম কোয়েরি দেখাচ্ছে।
চিত্র ৩. পারফেটটো ইউআই, যেখানে অ্যানোনিমাস আরএসএস, সোয়াপ এবং তাদের সাম কোয়েরি দেখানো হচ্ছে।