I thought someone better might answer but seemingly everyone has avoided this question because it is a large and difficult topic. You'd really need to google big little scheduling to get anywhere and look up the various Linux discussions. It wouldn't be so bad if one could foresee the future and knew exactly what work everything would do and how much would be saved by doing things in different ways, but the best one can do is get statistics and flags and suchlike.
But anyway I think I can summarize: Firstly the required quality of service of each process must be maintained. And secondly it should use up the least amount of energy. For instance if a number of interrupts can be batched up and dealt with in one go instead of waking and sleeping for each that can save energy - but delaying an interrupt has the potential to cause something to take too long and so degrade a quality of service. Plus of course one has to decide what is an acceptable service. Having the sound not stutter is clear enough - but is there really a point in having a web page render in a tenth of a second or is it okay to go a bit slower at first and then only speed up if the rendering is taking more than half a second?
ARM Energy Awareness Scheduling (EAS) technology is for that.
For task load tracking, there are two popular methods:
See https://developer.arm.com/open-source/energy-aware-scheduling for an overview.- Zhifei