One of the companies that Valve fund for improvements across Linux, SteamOS and Steam Deck is Collabora and a developer has gone into more detail on the upgrades to the update system in SteamOS 3.6 that's now in Preview.
The Collabora blog post from Ludovico de Nittis gives a refresher on how the update system works, which in simple terms has two partitions one for the live system and one for updates which then replaces the live system. One part of this process uses a tool called casync, a tool for distributing file system images.
However, they identified a number of points that could be improved for example: how it uses a single thread for calculating the current image seed which "On the Steam Deck this usually means that when you press the "apply update" button, nearly the full first minute is spent to chunk and hash the entire image that is currently in use, with one CPU core at 100% usage." amongst other issues affecting the time it takes to actually do a SteamOS update.
They ended up finding the tool desync which is pretty much a drop-in replacement, has proper active development on it, along with various other enhancements they wanted like multiple parallel HTTP(S) requests support and multi-threaded chunking. But some work was still needed and they sent multiple patches to the desync project (which have been merged).
By now you're probably wanting to know the benefits which are:
It is now significantly faster to apply system updates. How much "faster" heavily depends on the size of the update and the Internet connection speed. From our testings, usually the overall update process was consistently at least 30%-50% faster.
If the download of an update fails midway, e.g. if there is a connection error, the second download attempt will be able to quickly resume from the point previously reached.
The download progress percentage is more precise and refreshed more frequently.
It allows us to quickly check if the current image is pristine or has been altered. Useful for example during the factory reset operation to avoid having to download an image from the Internet unless necessary.
Lays out the base to allow in the future the ability for the clients to quickly estimate the download size of system updates.
This is just another reason why I love the Steam Deck and SteamOS, the majority of it is all based on open source and Valve fund contributions to so many projects I've lost count that improve things for everyone.
Quoting: tfkSo, in layman terms, it does Bleep bloop Bleep instead of Bleep bloop bloop bloop Bleep, and that makes it faster?
That’s bleep-oulutley corr-bloop 🤖
Last edited by Woodlandor on 10 May 2024 at 5:11 pm UTC
Quoting: WoodlandorMore like bloopity blip bloopQuoting: tfkSo, in layman terms, it does Bleep bloop Bleep instead of Bleep bloop bloop bloop Bleep, and that makes it faster?
That’s bleep-oulutley corr-bloop 🤖
Quoting: jams3223Man, I can never understand these technical discussions.Quoting: WoodlandorMore like bloopity blip bloopQuoting: tfkSo, in layman terms, it does Bleep bloop Bleep instead of Bleep bloop bloop bloop Bleep, and that makes it faster?
That’s bleep-oulutley corr-bloop 🤖
Stuff like this is why I will forever be unapologetic in supporting Valve and adore the Steam Deck and everything it is, but also everything that has gone into it. Even if Valve were to vanish into a puff of smoke tomorrow, their contributions up to this point alone would have a lasting impact for years to come and have genuinely made the world of tech a better place for it.
Keep on being you Valve, you made me into a loyal customer.
One snapshot is the running one and then a new snapshots is used for the update and also just flipped over. As the SteamDeck already uses BtrFS for their root filesystem.
No need for two partitions, less space requirements as you do not need a full copy of the OS and bootloader (there are actually 5 partitions on Steam Deck 2x Boot loader, 2x The root filesystem and 1x the home partition) and no need for hashing the os image. What ever this is used for. Also using the BtrFS snapshot changes made by a user would keep persistent across updates too.
I would appreciate if someone could explain this to me? 😅
Last edited by Vortex_Acherontic on 11 May 2024 at 6:59 am UTC
Quoting: tfkSo, in layman terms, it does Bleep bloop Bleep instead of Bleep bloop bloop bloop Bleep, and that makes it faster?
Meh, more like:
it does Bleep Bleep Bleep Bleep instead of Bleep bloop bloop Bleep and that makes it faster.
See more from me