Weird CPU layout and frequency policy?

Hi,

Got my Orion O6 board, and I was exploring the CPU core layout so that I can pin all my VM workloads to the BIG/medium cores.

However the sysfs shows a very weird cpu layout (although it’s consistent through boots):

cpu0: 2.6G (BIG)
cpu1-4: 1.8G (little)
cpu5-6: 2.3G ?
cpu7-8: 2.2G ?
cpu9-10: 2.5G ?
cpu11: 2.6G (BIG)

I know I only need to avoid cpu1-4 to avoid little cores, but what the heck is all those 2.2G, 2.3G and 2.5G cpus?

And why the little cores are at cpu1-4?

Can you guys put a more consistent and easier to understand layout?

2 Likes

Many of us have been complaining about this crap in several other threads, and it seems that CIX is not in a hurry to fix that. Apparently the main problem is that the hardware boots on CPU 10, and since it’s the first one detected by the kernel, it’s identified as CPU0. Then the hardware enumerates remaining cores: 0 becomes 1, 1 becomes 2, etc… 9 becomes 10, 10 is already assigned to 0 and 11 becomes 11.

I’m seeing only two solutions to this: either they enumerate the CPUs differently in the ACPI/DT so that big cores all appear becore little ones (I tried but failed, it looks like some parts in the BIOS rely on the hardcoded numbers), or the make the hardware boot from the first little core so that it gets properly assigned CPU0. I personally don’t think it would hurt the boot time to boot from CPU0. However, whether the hardware is capable of this is a different question. Also it seems that windows doesn’t work on the little cores, so it might even be possible that they purposely force to boot on a big one for this reason. But in this case they should definitely reorder the cores so that big ones appear before little ones. I understand the arguments of keeping CPU0 a little one for low-power devices but we’re not in this situation here, and the resulting layout is horrible. I’m used to manually setting my tasks with “taskset -c 0,5-11” and that’s really really annoying.