Scheduling Compile tasks on CPUs with Efficiency cores

Modern Intel CPUS have a mix of real and cheap cores.

We notice that heavy tasks like Shader compilation during a cook, take x5 as long on the ‘Efficient’ cores, and the proper cores are sat idle and waiting. We can disable these cores in the computer bios, & overall we’re sometimes faster for not scheduling anything on them at all and only using the faster cores.

Is there anything Unreal / XGe / Shader compiler could do when it’s figuring out worker threads, to a identify and ideally signal to the OS that it wants real cores to do the work?

Steps to Reproduce
Cook a large project on a cpu with E cores, observe task manger.

Hi Sam,

The Intel thread director is supposed to work with the Windows Scheduler to take care of such things according to Intel’s resources:

They do mention that Windows 11 is required to get the most of it.

Martin

We’re on win11.

We also utilise incredibuild, so I see this happening at scale where I’m waiting on someone else’s efficient cores.

Process Lasso is a great app that can do automatic rules to force process affinity (but only on a local machine),

but this isn’t perfect as Unreal sees 16 cores, starts 16 workers, if I limit them all onto my 8 perf cores, I now have 2 jobs per cpu thread in contention.

A mechanism for unreal to determine the number of perf:cheap cores, and have an optional -LimitThreadCountToPerformanceCores would be great.

I’ll pass the feedback to the engine team.