LWN.net Logo

Linux support for ARM big.LITTLE

Linux support for ARM big.LITTLE

Posted Feb 16, 2012 4:01 UTC (Thu) by ringerc (subscriber, #3071)
Parent article: Linux support for ARM big.LITTLE

This also complicates the "race to idle" issue even more than usual. Now, not only do we have the choice of variably clocking one CPU or set of CPUs, but a choice of an entirely different set to use!

Determining where the [time x watts-per-instruction ] optimum is is even harder when you have two *different* curves for (instructions,power) x clock speed, one for the A7s and one for the A15s. Which will use more power for a given task - an A7 at full power, an A7 at half power, an A15 at full power or an A15 at half power? Is the task going to be short lived or long-running? Is it time critical or background/non-interactive? What is the user's preference about responsiveness vs power use?

I can't help but think that apps are going to have to start giving the OS a lot more knowledge of what they're doing using hints to the scheduler. "This thread is doing periodic non-time-critical background work," "This thread is currently running a short job that must complete quickly," etc.

How to make that accessible to high level app developers in a way they won't screw up is another thing entirely, too.


(Log in to post comments)

Linux support for ARM big.LITTLE

Posted Feb 16, 2012 7:06 UTC (Thu) by fredrik (subscriber, #232) [Link]

In Android you already have a api that allows the application to indicate how important a background task is. You can tell the system to schedule background activities only when it is otherwise awake. And you can tell it to schedule activities inexactly, coordinated with being awake for other tasks.

See the documentation for the AlarmManager and compare the flags RTC_WAKEUP vs RTC and methods setRepeating vs setInexactRepeating.

http://developer.android.com/reference/android/app/AlarmM...

Now I don't know if these options are communicated all the way down to the kernel scheduler today. Though you could easily imagine a scheduler execute the inexact non-wakeup tasks on a low-power cpu, while executing tasks that are registered with the exact method and wakeup flag could be scheduled on a high-performance cpu.

Linux support for ARM big.LITTLE

Posted Feb 16, 2012 7:58 UTC (Thu) by dlang (✭ supporter ✭, #313) [Link]

the linux kernel already has the ability to relax timing for wakeups so that they can be combined with other events.

as for scheduling different types of tasks on different cores, unless the slow core is not fast enough to keep up with the running application, there's no reason to use the fast core at all.

I can guarantee you that you cannot trust the application to tell you what it's needs really are, the only sane way is to watch the application and if it's trying to do more than the slow core can keep up with (with the other tasks that are also running), then and only then should you migrate it to a faster core.

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds