This is in reply to the conversation I had with @nadenislamarre on discord. For some reason, I am unable to use my login credentials on discord again. Regardless, I had offered to research the development of the kernel’s scheduler on big.LITTLE systems since the last time that you guys had attempted using all 6 cores on the rockpro64. From that conversation, it seems that the last time using all 6 cores on the RP64 was tested was on an early 4.X kernel. Assuming that is true, the most important development since then was the patching of how “misfit” tasks were handled in kernel 4.20 (very late in the 4.X releases). In essence, the exact behaviour that was described by @nadenislamarre , that processes were assigned to a random core instead of to the most powerful core, was fixed. This was achieved by ignoring the scheduler’s normal behaviour of examining average load and group capacity, and instead assigning a greater than normal imbalancing of the task to ensure assignment to a larger core (at least, from my understanding).
Source here: Misfit tasks
Further, in kernel 4.21, Energy Aware Scheduling was mainlined. This was a completely new scheduling scheme instead of a fix for the current scheduler like the “misfit” patch. EAS specifically works with big.LITTLE systems to further optimize process scheduling. I’m not going to claim that I completely understand how it operates, but from what I do understand, it uses energy consumption estimates that are coded into drivers to determine the optimal core and frequency to be used for every process.
Sources here: EAS added , Energy Model Explanation
In kernel 5.3, EAS was extended to support “utilization clamping,” but I think that that would depend on every emulator programmer to include extra code for it to work correctly, although I may be wrong.
Source: EAS extended
Later, in kernel 5.9, the default ARM governor was changed to “schedutil,” to allow EAS “out of the box.”
Source: schedutil default
Lastly, this article from phoronix reinforces the claim that big.LITTLE scheduling has seen significant improvements all throughout the 5.X kernels, including disparate treatment of 32bit or 64bit tasks for greater efficiency.
Source: 5.15 developments
I hope this information is helpful to you.