3 ms·
"Efficient cores for low power tasks and performance cores for demanding applications" is a catchphrase I've seen hundreds of times but I've never once seen som
by causality0 3y ago
"Efficient cores for low power tasks and performance cores for demanding applications" is a catchphrase I've seen hundreds of times but I've never once seen someone actually demonstrate it or test it, or even really explain how my phone decides which is which. Does WhatsApp run on an efficiency core most of the time but swap to a performance core when it's converting a video to send?
- jffry 3y agoI found this [1] which says: "Generally, when the game is in the foreground, persistent threads such as the game thread and render thread should run on the high-performance large cores, whereas other process and worker threads may be scheduled on smaller cores." There's also a Wikipedia article [2] which talks a little about scheduling. I imagine Android probably has more specific context it can use as hints to its scheduler about where a thread should be run. [1] https://developer.android.com/agi/sys-trace/threads-scheduling https://developer.android.com/agi/sys-trace/threads-scheduli... [2] https://en.wikipedia.org/wiki/ARM_big.LITTLE#Scheduling https://en.wikipedia.org/wiki/ARM_big.LITTLE#Scheduling
- masklinn 3y agohttps://eclecticlight.co/ https://eclecticlight.co/ Has multiple articles characterising the M1 (and M2) and how the MacOS scheduler uses it. I’m sure Android’s scheduled does things differently but it’s at least an idea of the sort of things which can happen. For macs (and I assume iOS) the basics are that background processes get scheduled on E cores exclusively, and higher priority processes get scheduled on P cores preferentially but may be scheduled on E cores if the P cores are at full occupancy.
- charcircuit 3y agoIt's mostly the Linux scheduler https://www.kernel.org/doc/html/latest/scheduler/sched-capacity.html https://www.kernel.org/doc/html/latest/scheduler/sched-capac... Android does set niceness for processes. See the THREAD_PRIORITY_* constants https://developer.android.com/reference/android/os/Process https://developer.android.com/reference/android/os/Process and it uses cgroups too. Process.THREAD_GROUP_* has some Android ones, but different vendors sometimes write their own to try and be clever to increase performance. https://source.android.com/docs/core/perf/cgroups https://source.android.com/docs/core/perf/cgroups
- pm215 3y agoIt's also worth bearing in mind that there's been a lot of work put into that scheduler over the years so it will make better decisions about what to run where when the cores aren't all the same.
- Yoofie 3y agoSomeone else posted a really compelling video where they test the power efficiency of Android and Apple phones. https://youtu.be/s0ukXDnWlTY https://youtu.be/s0ukXDnWlTY Its really quite informative.