Improved Upgrade Speeds Now Possible!

TL; DR - Change your /etc/ostree/remotes.d/fedora-workstation.conf file to match the following:

$ cat /etc/ostree/remotes.d/fedora-workstation.conf 
[remote "fedora-workstation"]
url=https://ostree.fedoraproject.org
gpg-verify=true
gpgkeypath=/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-29-primary
contenturl=mirrorlist=https://ostree.fedoraproject.org/mirrorlist

A common complaint from Silverblue users, especially those outside the United States, has been that the upgrade speeds have been terribly slow. This was ultimately due to how the mirroring of the ostree content was being done. The Fedora Infrastructure team knew of the problem, however there were always bigger fires to put out. Thankfully, a member of our community (and engineer on Fedora CoreOS) stepped up to the challenge and did an exhaustive investigation that resulted in changes around how mirroring was being done for the Fedora ostree content.

@sinnykumari led the effort to find the problems with the current mirroring scheme and helped come up with a new solution that resulted in exceptionally faster speeds for Silverblue upgrades.

You can read about the investigative work that Sinny did in the upstream ostree issue and see the kinds of speed improvements that we have seen.

Ultimately, we want to make the config mentioned above to be the default config for all ostree based hosts, so we are considering shipping a new RPM that owns the default ostree remote config. This would allow us to update the default remote configuration more easily in the future, if needed.

Additionally, we are considering shipping a systemd service that would modify the existing fedora-workstation config to match the newer, faster configuration. These kinds of discussions are occurring in two places:

https://pagure.io/teamsilverblue/issue/69

We would love to hear feedback from the community about how the config changes affects your upgrade experience. Additionally, please feel free to weigh in on the two issues regarding the default remote config file.

Thanks!

12 Likes

Tested and it worked great for me. rpm-ostree upgrade that resulted in no-op took < 10sec to complete.

Just tried it out, works perfectly!

Is this using the technique I read about where it downloads the normal RPMs from the normal mirrors, and then uses those to reconstruct the OSTree commit? Or is this something else?

No, this is using the traditional method of downloading the individual files from the ostree repo. The changes made were around how the certain files were being served up via CDN. There should be more details in the ostree issue that I linked in the original post.

I believe you are probably thinking of rojig, which hasn’t been fully implemented yet, but is being tracked by this upstream issue:

Tested, it works like a charm!

1 Like

Yeah! It works great!

thanks! works for me, seems to be faster

While people are testing things out, you can also enable HTTP2 by adding http2=true into the remote config.

e.g.:

[remote "fedora-workstation"]
url=https://ostree.fedoraproject.org
gpg-verify=true
gpgkeypath=/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-29-primary
contenturl=mirrorlist=https://ostree.fedoraproject.org/mirrorlist
http2=1

If you are running a recent version of Silverblue 29 or Silverblue 30, you should now be receiving the package fedora-repos-ostree as part of the compose.

This package includes the updated remote config that is discussed in this post, however the remote name is now fedora.

$ rpm -ql fedora-repos-ostree
/etc/ostree/remotes.d                                             
/etc/ostree/remotes.d/fedora.conf                                                           

$ cat /etc/ostree/remotes.d/fedora.conf  
[remote "fedora"]                                                                                                                                                                                                   
url=https://ostree.fedoraproject.org                 
gpg-verify=true
gpgkeypath=/etc/pki/rpm-gpg/                 
contenturl=mirrorlist=https://ostree.fedoraproject.org/mirrorlist 

The result of this is that if you have this package as part of your system, you can safely switch to using the fedora remote like this:

# rpm-ostree rebase fedora:

And you can stop using the fedora-workstation remote and remove it from /etc/ostree/remotes.d

4 Likes