I’ve recently come across case where the editor in PIE will consume extreme amount of memory. We had a case recently where some level instances were converted from using ISMs to individual actors. We noticed that suddenly PIE would take up extremely large amounts of ram. This caused the editor to become unresponsive on dev machines with lower amounts of ram installed. This is an editor only problem, as the code only seems to be active in editor builds, and no issues have been experienced in a cooked client build. It appears to stem from line 728 in `WorldPartitionLevelHelper.cpp`, specifically the use of `FLinkerInstancingContext::DuplicateContext`.
I’ve added a screenshot of a memory profile capture in Insights of the attached repro project.
I also found that if a level instance level does not have world partition streaming support, there is no memory consumption.
You do want to use ISMs to help with the runtime performances. You can use the UWorldPartitionRuntimeCellTransformerISM to have the ISMs created automatically when the cell generation runs (PIE and Cook).
Yes and no, The instances that are aggregated would only have 1 actor per StaticMesh which should reduce the number of required LinkerContext
Also, using LevelInstance without OFPA should help. If your LIs contains lots of actors or are large, you could consider Sub-word partition. Those don’t allow for per instance modification out of the box but could be useful depending on the needs of the project.
Yes, you can do it from the World Settings panel. You need to disable ‘Use External Actors’ and save the level. If the level uses World Partition, it needs to be disabled as a first step.