5 ms·
The high-level pitch of P cores and E cores seems so elegant, but when it actually comes to scheduling, it gets messy fast. Even in a laptop running off a batte
by dehrmann 1y ago
The high-level pitch of P cores and E cores seems so elegant, but when it actually comes to scheduling, it gets messy fast. Even in a laptop running off a battery, you can't simply switch to E cores because some short-lived work might be latency-sensitive. You also can't assume long-running work should be on an E core because maybe you're anxious to get that video encoded. Even for lots of small work, different core can have different performance characteristics, and a P core might be more efficient for certain workloads.
- jcelerier 1y agoAs a user with a laptop, the last thing I want is the OS to decide for me. I want to tell it myself "this is sensitive, put all your energy into it because I'm five minutes away from pushing that important work and I have seven minutes of battery left" or "this won't work at all if run at less than 2 GHz" vs "I must drag what I'm doing along for as long as I can, save every bit of battery possible. The computer can't know about these cases.
- twoodfin 1y agoFWIW, Apple leaves it up to the app developer to specify a quality-of-service for a particular execution context: https://developer.apple.com/library/archive/documentation/Performance/Conceptual/EnergyGuide-iOS/PrioritizeWorkWithQoS.html https://developer.apple.com/library/archive/documentation/Pe...
- 01HNNWZ0MV43FF 1y agoI feel like cases 1, 2, and 3 broadly fit into "Battery Saver", "Performance", and "Battery Saver" modes?
- jcelerier 1y agoYes exactly - which I set myself depending on my current use case at hand. I definitely don't want the OS to try and guess
- bluGill 1y agoThe problem is you don't really think about those cases early enough to matter. 7 minutes of battery isn't even a knowable thing - that is current average (though often not calculated that well) and could be 10 minutes if nothing happens (no emails arrive, no web pages rendering in the background, don't touch anything on it....), but if you try to run that 5 minute task in reality you have 2 minutes of CPU using the P cores, or 5 minutes using the E cores - but on the E cores you need 7 minutes. The above times are all made up of course, but they give the idea. If when the battery is full you make the right decisions your battery can last longer. However this isn't something you can do. You don't want a pop-up when your email program spawns a thread to check for new email - programs do this all the time and the system doesn't know if the thread itself will run for a few ms or for hours. In most cases the battery consumed by the popup will be more than the thread itself uses. You want the system to make the right decisions - but the right decision depends on your system and someone else with a difference CPU may need different decisions.
- nine_k 1y agoFunny enough, Unix already has user-settable priorities, aka "nice level". ACPI gives us an idea how plentiful the power is. So, when powered by AC power, schedule everything on P cores when possible, schedule processes that eat a lot of CPU on P cores, same for any process with a negative nice value. When powered by a battery, schedule anything with non-negative nice value on E cores, keep one P core up for real-time tasks, and for nice-below-zero tasks. These are two extremes, but I suppose that the idea is understandable.
- mrheosuper 1y ago>when powered by AC power, schedule everything on P cores when possible Sometime I feel like that is undesirable. It may make system consume more power, thus more heat output and louder.
- nine_k 1y agoA laptop and a desktop certainly would balance P and E differently!
- wtallis 1y ago> So, when powered by AC power, schedule everything on P cores when possible, schedule processes that eat a lot of CPU on P cores, same for any process with a negative nice value. Even when plugged in, you may have thermal limitations. P cores will chew through your power budget more aggressively than E cores. For latency-sensitive workloads you do want to emphasize the P cores, but when throughput is the goal you'll usually be better off not ignoring the E cores, and not trying to run the P cores at high frequency where they're much less efficient. Intel started adding E cores to consumer chips in large part so they could score better on throughput-oriented multithreaded benchmarks like Cinebench; they're decent at compiling code, too, but you'll still want the P core for the linker.
- Melatonic 1y agoAlways personally disable turbo boost. Especially on laptops
- deleted 1y ago[deleted]