You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add an async version of `Repository::ensure_object()` and wire it
through `SplitStreamWriter::write_external()`. Call that when we're
splitting OCI layer tarballs to offload the writing of external objects
(and the `fdatasync()` that goes with it) to a separate thread. This is
something like some prep work for something we've been trying to
accomplish for a while in containers#62 but it doesn't come close to the complete
picture (since it still writes the objects sequentially).
Modify the (already) async code in oci::ImageOp to download layers in
parallel. This is a big deal for images with many layers (as is often
the case for bootc images, due to the splitting heuristics). This takes
a pull of the Fedora Silverblue 42 container image (when pulled from a
local `oci-dir`) from ~90s to ~8.5s time to complete on my laptop.
Unfortunately, container images made from large single layers are not
substantially improved.
In order to make this change we need to depend on a pre-release version
of containers-image-proxy-rs which makes ImageProxy: Send + Sync. See
bootc-dev/containers-image-proxy-rs#78 for
that. This prevents us from publishing ourselves for now, so make our
check for that non-fatal.
Signed-off-by: Allison Karlitskaya <[email protected]>
0 commit comments