Tuesday, May 18, 2021

QoS and Task Segregation Make M1 Macs Feel Faster

Howard Oakley (Hacker News):

Benchmarks are all very well, but one almost universal comment made about M1 Macs is how much faster they feel, even when performance measurements don’t show as big a difference as we might like. One very effective way of giving a good impression of speed is to segregate macOS and user software to use different cores in the way that the M1 does.

Few events give a worse impression to the user than the interface slowing down in the face of a problem in the operating system. We’ve all experienced it: this could be a rogue mdworker process which keeps crashing and restarting, or anything which causes macOS to choke. Because those processes are handed over to the Efficiency cores, all they do now is slow other macOS background tasks, to which we’re much less sensitive.

The Time Machine backup pictured above ran ridiculously slowly, taking over 15 minutes to back up less than 1 GB of files. Had I not been watching it in Activity Monitor, I would have been completely unaware of its poor performance. Because Macs with Intel processors can’t segregate their tasks onto different cores in the same way, when macOS starts to choke on something it affects user processes too.

I don’t think this is a result of having efficiency vs. performance cores. macOS could have designated several of the identical Intel cores to be used for lower priority system tasks, leaving the other cores free for user tasks. My guess is that Apple’s real aim was battery life, and so it made sense to add task segregation once Macs were available with efficiency cores. The improved responsiveness is more of a bonus.

Of course, “magic” features like this can sometimes do the user wrong. Most of the time, I don’t care how long Time Machine takes, so if it can use less power and make my other apps more responsive, that’s great. But Time Machine is already slow, and sometimes I have to wait for it when packing up to leave my office. In such cases, I would like it to use all the performance cores and go as fast as possible. Likewise with indexing-type tasks. Sometimes I want them in the background, not disturbing anything, but sometimes I’m importing a big batch of photos or PDFs and want to be able to work with them ASAP.

Joe Rossignol:

Apple plans to launch new 14-inch and 16-inch MacBook Pro models with an improved iteration of the M1 chip as early as this summer, according to Bloomberg’s Mark Gurman. The new chip is said to include a 10-core CPU with eight high-performance cores and two energy-efficient cores, with 16-core or 32-core GPU options.

If true, it will be interesting to see whether system tasks are now confined to only two cores, instead of four, which would make them slower than on the initial M1 Macs.

Previously:

Update (2021-05-24): See also: Howard Oakley.

5 Comments RSS · Twitter


> I don’t think this is a result of having efficiency vs. performance cores. macOS could have designated several of the identical Intel cores to be used for lower priority system tasks, leaving the other cores free for user tasks.

I was thinking the same thing. Thanks for putting my thoughts into words.


> macOS could have designated several of the identical Intel cores to be used for lower priority system tasks

That might have interfered with Turbo Boost, which wants to opportunistically disable cores to boost single-threaded tasks (and “over”clock the remaining cores). If there’s always background noise on certain cores, it might screw with Intel’s heuristics.

(This is moot on Lakefield and Alder Lake, but Apple isn’t going to ship those.)


I have to admit I don't know, but is the tasking onto the two types of 'Apple Silicon' cores so coarse as this? Do it fast or do it cheap?


@Paul There are multiple classes of quality of service, plus perhaps some that are private to Apple.


If I'm reading that correctly, you've been able to use `background` since 10.10 (six releases ago), so you now get automatic "code you've designated as background long, long ago runs on efficiency core" behavior for free. Neat.

Leave a Comment