Monday, March 15, 2021

Larger and Slower Updates With Big Sur

Howard Oakley:

The first gigabyte or so of the update has to be downloaded direct from Apple’s servers[…] For M1 Macs these are marked out so that they can’t be obtained from the Content Caching Server. The size of this additional directly downloaded part of the update is essentially the same as the difference in total size of macOS updates between Intel and M1 Macs, around 1 GB.

Howard Oakley (tweet, Hacker News):

In macOS past, those two patches could have been small, whether installed by the system or using a downloadable Installer package. Several factors now conspire to turn a few kilobytes of changes into several gigabytes of update:

  • Firmware updates are only provided as part of a macOS update, and Apple deems it necessary for every macOS update to include a complete set of current firmware for Intel models. […]
  • The dyld cache, nine files occupying about 4 GB when compressed in /System/Library/dyld, which contains a dynamic linker cache of all the system-provided libraries. These fall within the SSV, and appear to have to be freshly provided in every macOS update.

[…]

As Jeff Johnson has reminded us, Apple still claims that Big Sur has “Faster updates. […]” Anyone who has been keeping Big Sur up to date over this last month knows that’s simply not true, and its reasoning is flawed.

[…]

Had Apple explained these costs and penalties of the SSV at last year’s WWDC, wouldn’t it have been booed from the virtual stage?

Howard Oakley:

With its change in version numbering system, macOS 11 has hopefully replaced the Supplemental Update with patch releases like 11.2.2. Although we haven’t yet reached 11.3, there have already been 6 updates to the initial 11.0 release, and there are marked differences between Intel and M1 Macs. The initial release for Intel Macs was 11.0.1, which was an update for early M1 models, which came with 11.0 pre-installed, and required immediate updating to 11.0.1. Sizes of updates are also different: for Intel Macs these have ranged from 2.3-3.27 GB, for M1s 3.1-4.2 GB. Total update size delivered so far has been 13.86 GB in 5 updates for Intel Macs, and 22.27 GB in 6 updates for M1 models.

Previously:

3 Comments RSS · Twitter

This entire SSV architecture seems like a mess.

Firmware updates are only provided as part of a macOS update, and Apple deems it necessary for every macOS update to include a complete set of current firmware for Intel models. This contributes around 600 MB to every update, perhaps more now to cater for T2 and M1 models too.

Painful, and seems unnecessary. Just have each Mac individually fetch its most recent firmware.

The dyld cache, nine files occupying about 4 GB when compressed in /System/Library/dyld, which contains a dynamic linker cache of all the system-provided libraries. These fall within the SSV, and appear to have to be freshly provided in every macOS update.

I don’t understand the benefit over generating the cache locally (as before), then verifying its checksum against Apple’s server.

@Sören I wonder if there’s a reason that the shared cache can’t be built locally, or if it’s just a matter of saving processor time and disk space.

The shared cache can definitely be built locally if you have all the pieces, but it's possible that

1) not all the components are present locally, because they're not needed if they're already in the cache or
2) it is hard to make it build *deterministically*, which is required if it's going to pass the Apple signature check to live on the SSV

or probably other reasons that make it hard.

Leave a Comment