Lightmass only uses 6 threads on my 72 core rig.

As the title states, I’m vastly underutilizing my rig as is. Where can I change this setting?

It looks like the first 2-3 seconds uses all cores then it drops down to these 6. I wonder why this is the case?

How many static meshes are in the scene?
It will only use 1 thread per mesh, so if you don’t have 72 meshes, or if you have a bunch of meshes with low resolution lightmaps, and a few with large light maps, it might finish the small ones quickly and hang on those few large ones.

There are hundreds of static meshes, though it appears most are small. I didn’t design this and am not a 3D artist. I’m the tech wizard in a startup exploring new options for our services while artist comes up with more assets to display on our site. This may be the case. I can imagine most meshes representing small objects within the building, and the building itself comprising large walls, ceiling… perhaps those are the few rendering for a few minutes, while the many small objects are being rendered simultaneously in the beginning within a few seconds of time.

On second thought, I really don’t think this is correct. There are many meshes which are large in size both physically and in data. The system will peg all cores for a few seconds then drop down to just 6 cores. Something must be off here. Even after lightmass is complete it says “encoding textures” and the same cores are being used while the remaining stay dormant. This must be a global constant of some sort.

Check out the Lighting Build stats after the lighting has finished. You can see how long each object has taken to calculate. I will often times find objects that eat up most of the calculation time while others are finished quickly. It wont matter if you have 72 cores if all of them except one have finished and the last one takes another 10 minutes to finish one mesh.
By the way, they should really change the documentation to explain how Swarm works. Everyone expects it to work like any other distributed renderer when in fact it’s not. The way it distributes work is not very optimal.

I mean seriously it’s like 2-3 seconds at full CPU, then it’s down to either 6 or 8 threads for the remainder of the process. It never goes down to 5, 4, 3, 2, 1… it’s the exact same the whole way through. This must be something else.

The swarm appears to work more like a network renderer vs a distributed renderer. I’m using 3DS terms here. The network renderer in 3DS will take a frame to each node, where as DR will distribute small chunks of each frame to nodes. This works more like the network renderer in that it doesn’t break up the data equitably rather it appears to take individual tasks to be performed on each object and give that a thread to process. It is agnostic to the tasks specifics, and does not weigh them against each other for high efficiency of the overall job.

I’m used to dealing with network rendering and DR (and the ramp-up and ramp-down), but this must be a different limitation. I see these same threads being used when using unreal 4, and it’s always the same number capping out.

When Swarm has been run at least once, it will leave its icon in your task tray. If you double click on this icon you can open up the SwarmAgent and adjust settings. You’ll have to enable the Developer Settings and then go into that tab. Here you can change the number of cores used by the machine, which I believe defaults to 6.

P.S. I’m jealous of your 72 cores :stuck_out_tongue:

Confirming, StephaBon had the correct solution.

It appears swarm agent caps out at 64 threads.

Production build of scene has decreased from 32m30s to 4m46s.