Dedicated Server Memory Usage

So i’ve compiled a standalone server for my project. At runtime, idle, its using 1.2gb of ram. memReport -full shows me the right figures in used memory, but in its actual breakdown only accounts for around 200/300mb’s of what is actually being used up.

Is there any other way to see what is using up such a huge chunk of resources for a standalone server? Could it be that i’ve somehow packaged it incorrectly?

The steps i’m using to package:
UnrealFrontEnd -> ProjectLauncher->CustomLaunchProfile -> run
this profile points to our project, on development configuration. Cook by the book for WindowsServer with 3 maps. one actual map, 1 almost empty map and an empty transition map. Do not package, do not deploy.

  Unreal Editor -> Package Game -> Development win64.

  Visual Studio -> compile Development Server.

  Move server.exe to the binaries of the packaged game and run using "server.exe -log"

bump i’m still at a standstill with this, any ideas?

https://answers.unrealengine.com/questions/338970/how-do-we-use-the-memory-profiler-to-track-memory.html might help, that has some basic instructions to enable the use of the Memory Profiler, which tracks memory at a lower level than memreport. There currently isn’t much documentation on the system, but if you enable it, then quit the game, it will output a memory profile file that you can load with the MemoryProfiler2 C# application in Source/Programs/MemoryProfiler2

Another tool that is useful is VMMap (VMMap - Windows Sysinternals | Microsoft Docs), as it may be that much of your memory is being spent on DLLs or other windows things, and not on anything UE4 has control over.

1 Like

“using” RAM is a very squishy metric in modern operating systems.
If you memory map a file into an address range, and the file is not yet in RAM, is it “using” that RAM? The address space is reserved, but the data is not in DRAM.
Once that file faults in and the pages are actually loaded, is it “using” that RAM? Even if any other allocation could steal those pages?
If you load the code of some big DLL (like User32.dll?) are you “using” that RAM? Even if the same mapped image is shared across 31 other processes, and only one copy exists in RAM?
If you do some file I/O, and some file buffer cache gets allocated to your process, are you “using” that RAM?

The questions go on and on. You have to be really specific about what kind of memory you’re talking about. For example, “memory allocated on the C/C++ heap of your executable” might be a good thing to track, and that’s approximately what built-in Unreal memory tracking tracks. That’s memory your code has full control over.
All the other things do require some RAM, and if you don’t have enough RAM in the system, your program will run slower (or not at all,) but there is no 1:1 relation between “amount of DRAM” and any particular point of success or failure.