-
Notifications
You must be signed in to change notification settings - Fork 130
Puller Slowness #23
Comments
There are two pullers, which were you using? The version that spits out a The version that spits out the more proprietary form we consume here should be fast, but one exception to this is if it needs to convert a v2 image to v2.2 here. Can you share a little more about how you are invoking this, so I can help diagnose? |
Hey @mattmoor thanks for the quick reply. So I have been hoping to use it as part of bazelbuild/rules_docker so the proprietary form would be fine, but was getting timeouts after 600s so I started debugging with the underlying I think we might be falling into the "if it needs to convert a v2 image to v2.2" use case, I am doing some benchmarking locally:
But for our private registry (same image pushed up to it):
We are running |
If you are able to The |
Logging patch:
Looks like that could be it, thanks @mattmoor. |
Yeah, this is an unfortunate consequence of some strange choices Docker made about the v2.2 manifest format and extremely poor Python gzip performance**. :( Our new intermediate format can be so fast on the happy path because it's basically designed to avoid Python g[un]zip and random accesses within a tarball. There are other nuances that enable Bazel to prune other optional work depending on the result the user is looking for. ** - With fresh eyes, we could probably |
@mattmoor, so we have upgraded our registry to
When observing the network pane of Actibity monitor in OSX, I am pulling much slower from our private registry in comparison to the public one. We are not running anything fancy for our registry, any tips on speeding up the pulls? Is there any additional logging I can add to try to isolate where the slow-downs are? |
That's interesting. These should be following nearly identical code paths, so I'm wondering if this is just registry slowness? Hard to say without further instrumentation. e.g. the major registries I've played with (or built) serve blobs by redirecting to the underlying storage (e.g. GCS, S3) because those stacks are optimized for delivering large data very fast. For the registry to serve the data directly, it would have to read the data itself and then proxy it to the client. Knowing nothing about your private stack, I'm left to wonder about this :) I'd probably instrument this code to find out how much time is spent in |
Has this been resolved? I think I'm having similar issues. |
It took my local machine 24 minutes to pull a 1.3GB image from our private docker registry. Is this expected behavior?
The text was updated successfully, but these errors were encountered: