PINE64
RK3399 - big.LITTLE core choice optimization - Printable Version

+- PINE64 (https://forum.pine64.org)
+-- Forum: Pinebook Pro (https://forum.pine64.org/forumdisplay.php?fid=111)
+--- Forum: Pinebook Pro Hardware and Accessories (https://forum.pine64.org/forumdisplay.php?fid=116)
+--- Thread: RK3399 - big.LITTLE core choice optimization (/showthread.php?tid=10489)



RK3399 - big.LITTLE core choice optimization - lucserre - 06-29-2020

The A72 and A53 core are each (according to Rockchip) optimized for, respectively, high-performance and low power.
How does our system (linux kernel maybe?) choose which processes to put into which core?

For example, if I'm running a single thread process that occupies 100% of one single core, I would like the system to choose the high-performance core in order to complete the task faster, rather than choosing the low power core to save power.

Do we (end users) have any control over this? Should we?


RE: RK3399 - big.LITTLE core choice optimization - Syonyk - 06-29-2020

If you're running a new enough kernel, the scheduler should be big.LITTLE aware and should generally do the right thing. I've been perfectly happy with the 5.7 kernel and it's behavior.

On a normal Linux kernel, CPUs 0-3 are the little cores, CPUs 4-5 are the big cores. You should generally see a CPU bound task eventually migrate over to CPU 4 or 5 for the most part.

If you want to toggle cores online/offline, I've got a handful of little utility scripts I wrote that make it easier: https://github.com/syonyk/pinebookpro

But after playing around for a while, I just let the kernel do it's thing.

However, if you really, really want to force a task to run only on the big cores, taskset should do it for you. Just pin it to cores 4 and 5 (the big cores).

Code:
taskset -c 4,5 [your task]

More trouble than it's worth, though. The modern schedulers really do generally get the job done properly.


RE: RK3399 - big.LITTLE core choice optimization - lucserre - 06-29-2020

Thanks for that very clear answer.
-Luc

(06-29-2020, 08:54 AM)Syonyk Wrote: If you're running a new enough kernel, the scheduler should be big.LITTLE aware and should generally do the right thing.  I've been perfectly happy with the 5.7 kernel and it's behavior.

On a normal Linux kernel, CPUs 0-3 are the little cores, CPUs 4-5 are the big cores.  You should generally see a CPU bound task eventually migrate over to CPU 4 or 5 for the most part.

If you want to toggle cores online/offline, I've got a handful of little utility scripts I wrote that make it easier: https://github.com/syonyk/pinebookpro

But after playing around for a while, I just let the kernel do it's thing.

However, if you really, really want to force a task to run only on the big cores, taskset should do it for you.  Just pin it to cores 4 and 5 (the big cores).

Code:
taskset -c 4,5 [your task]

More trouble than it's worth, though.  The modern schedulers really do generally get the job done properly.



RE: RK3399 - big.LITTLE core choice optimization - xmixahlx - 06-29-2020

we do have control as above, but i have never found it necessary. the scheduler does its thing.