Visualisation tools for memreport output

Hi Everyone,

Does UE5 have any sort of visualisation tool(s) for the output of a memreport?

For example, Unity has an in-engine tool called Memory Profile which allows you to analyse memory snapshots with a variety of interfaces

If not, are there any third party tools that can be used? For example, a tool that can visualise memory like the summary view in Unity’s Memory Profiler:

[Image Removed]

I also couldn’t find any documentation for memreport in the UE5 docs - in fact the only Epic source I could find was this blog post for UE4 here, which makes me think that you’re planning on deprecating it, or it hasn’t been actively developed for a while… If that is the case then I would assume that we should be using Unreal Insights, though I can’t see any way to get detailed text output similar to what memreport outputs.

Steps to Reproduce
Launch with the “-llm” flag, and then run the “memreport -full” command while running.

Hi there,

There isn’t a visualisation tool for memreport, and it does provide some additional information regarding how much an individual asset is using over over using unreal inisghts.

If you are in editor and depending on the information you are after you can also use [Tools]->[Audit]->[Statistics] to get some information aswell, memory uasge, primitive counts, mip levels etc.

If you are planning an upgrade to 5.6 there are some new features comming for insights aswell. Road Map 5.6

If you would like I can reassign this to an epic staff member to provide insight on the future plans (if any) of memreport?

Kind Regards

Keegan Gibson

Sure thing, I’ll reassign this to a subject matter expert and they will be in touch shortly.

Hey James,

Memreport is a tool that runs a bunch of console commands and groups their output together.

This makes it very hard to parse and use it’s output in a machine readable way.

As such we don’t have any visualization tools available and I would not recommend memreport as a primary tool to get memory usage going forward. Memory Insights is our primary tooling for this use-case and is actively developed and maintained.

Memory Insights right now provides mostly a per allocation view, or a per category (with LLM enabled) view of the memory usage, but we’re in the process of improving the instrumentation so individual allocations can be better associated with individual assets, too.

As for memreport, it’s not maintained as one single tool, instead each of the individual commands is owned by their respective teams. Many of those commands are legacy and not actively maintained itself.

There is a -csv parameter that will be forwarded to each of the commands run by memreport, but it is not handled by all commands.

Some of them will format their output in a csv compatible way if that option is given, but only some.

There’s also the option of creating a [MemReportCsvCommands] section in your Engine.ini to specify a list of commands that should each be written to their own .csv by memreport. That section is not present by default, but you could create it with the commands from the regular list that actually support csv output to get something more usable and machine readable (but still no nice visualization).

There is also the MemReportHelper command in UAT, which tries to extract some of the csv outputs from the combined memreport into individual csv. It was written for an internal project and is likely not maintained either (plus memreport can generate separate csvs by itself).

Hopefully this clears things up a bit, overall memreport can be useful for getting lots of low level information, but it’s not intended as a replacement for something like Unity’s memory profiler, the equivalent tools here would be the Asset Audit in the Editor or Memory Insights with asset tags at runtime.

Kind Regards,

Sebastian

Hi Keegan,

Got it - thanks for clarifying.

Please go ahead and assign this to an epic staff member as well, it would be nice to know about the future of memreport given its current state.

Hi Sebastian,

Thanks for the update.

What would be your recommended workflow for getting memory usage stats on a per-asset basis in a packaged build? It doesn’t need to be exactly like that screenshot from Unity’s tool but it would be nice to be able to have some sort of visual top level overview, rather than having to grok a huge text file each time.

The Statistics tool works pretty well in the Editor, and while we would prefer to use Memory Insights there doesn’t seem to be any way of gathering or visualizing this.

I guess I could create some basic tools to visualize memreport data but I’m a bit hesitant to do so considering that it looks like its a legacy feature that doesn’t seem to be actively maintained.

Edit: I also couldnt find anything in the Unreal Insight documentation related to asset tags, apart from changing the alloc table hierarchy to “Path Breakdown - Asset”. What flags should I launch with, and what do I need to do to display them? I Tried a few different presets as well but none of them seem to show the assets, and I also wasn’t sure which query to use as you can only query allocs, and not “assets that are currently loaded” or something.

[Image Removed]

Hey James,

apologies for the wait, I’ve collected a bit more info from the Insights team.

> What would be your recommended workflow for getting memory usage stats on a per-asset basis in a packaged build?

You can either use the Asset Audit tool in the Editor (it allows loading of an DevelopmentAssetRegistry.bin from a cook), memreport at runtime (which relieas on manually implemented “self-reporting” of most classes) or Memory Insights (which tracks individual allocations and then tries to map those to assets based on metadata/context).

Each solution will give you a slightly different report and we don’t have a nice breakdown view for them (other than the “size map” in editor when right-clicking on assets, but this is editor data, not the actual game values).

Memory Insights is the most actively developed approach, but we’re still missing the asset name metadata for many allocations, as seen in your screenshot.

> I also couldnt find anything in the Unreal Insight documentation related to asset tags, apart from changing the alloc table hierarchy to “Path Breakdown - Asset”. What flags should I launch with, and what do I need to do to display them? I Tried a few different presets as well but none of them seem to show the assets, and I also wasn’t sure which query to use as you can only query allocs, and not “assets that are currently loaded” or something.

You can get basic grouping by asset tags with the following parameters:

-tracefile -trace=memory_light,memtags -llmtagsets=assets,assetclassesThis should allow you to group by package name and yield something like this view in the Allocs Table windows:

[Image Removed]

To get more detailed asset tag instrumentation you’ll need a custom build, since the detailed asset tags are not enabled by default (they have a per thread overhead even if not enabled).

To enable them you’ll need to define LLM_ALLOW_ASSETS_TAGS as 1, either by editing LowLevelMemTracker.h or by adding the define to your Game’s *.target.cs file.

The parameters stay the same, but this will give you the most detail in memory insights, especially by adding per asset metadata to allocations. The UI part here is only released in 5.6 unfortunately so the new view will not be available in Insights for 5.5:

[Image Removed]

All of those have in common that they don’t provide the size map view, but you’ll get lists that you can sort, group and filter in Insights.

Kind Regards,

Sebastian

Hi Sebastian,

I tried this out and I think it allows us to do most of what we need to do.

We’ll eventually be upgrading to 5.6 so I’ll revisit this once we do that, and try out some of the new features.

Thanks for your help!