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?
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.