Closed bogdando closed 6 years ago
Part of me wonders if Docker isn't hiding some latency in the daemon - you don't need to keep the CLI frontend process around as long as we do, it can exit once you're confident the start request has been sent without error.
Also, if you need performance here, you can run Podman in parallel easily, which should significantly speed things up.
More concerning to me is that it's seemingly eating containers for you - are you seeing any errors?
To clarify further: We have done some tests on parallelizing some container operations (stop, for example, happens in parallel in 0.10.1 by default, running a number of worker threads to stop in parallel). We're seeing good speedups, even on code that seems to make heavy use of locking as run does, but we don't have any solid results for run yet.
We're also not opposed to improving our speed in general, but right now we've been getting a lot of mileage our of running operations in parallel instead of serially
Do people really feel detached vs non-detached is a part of the equation?
It's mostly relevant in that it force Docker/Podman to remain alive for the duration the container is alive. Could be relevant if Docker is returning earlier than we are, could be nothing but the extra bit of latency from attaching to the container
@mheon
Part of me wonders if Docker isn't hiding some latency in the daemon
it totally might be, that's why I did not report the equal times as expected but 1.5 times slower or so :)
But even visually one can note the reaction time is longer, especially if the container operations are interleaved with podman ps
command, the latter may hang quite for a while before returning something. So if there is some deployment tools, which idempotency is relying on the ps
results, it becomes an issue. For example, while the script is running, I can see podman ps
hangs for 10s sometimes.
you can run Podman in parallel easily
could you please elaborate on that?
it's seemingly eating containers for you - are you seeing any errors?
The stderr redirection for the benchmark script needs some fixes as it seems got broken in the last revisions of my gist indeed. And I didn't find errors logged to console (for earlier script revisions/podman versions) in journalctl... Perhaps it would be nice to just try it for yourself.
@baude
Do people really feel detached vs non-detached is a part of the equation?
My benchmark is far from ideal, just noticed that for non-detached containers the time command reports a function of the sleep argument used for the container entry command :)
specifically, for OpenStack, this issue is a deal breaker, see https://bugs.launchpad.net/tripleo/+bug/1797525/comments/12
To provide a bit of an update here, @baude has begun identifying the worst offenders in create and start performance, and we'll start looking at those in the coming weeks
we have made significant progress with run stuff, mind trying master?
indeed, the same tests repeated with podman version 0.10.2-dev
shows very good results for performance at least. thanks!
I think this one can be closed now.
kind bug
Description
Concurrent starting of containers with podman takes longer, sometimes up to 5x times, than docker.
Steps to reproduce the issue:
Fedora 28, 4.18.7-200.fc28.x86_64 docker version 1.13.1, build 1556cce-unsupported podman version 0.10.1
Example results https://pastebin.com/vEJGkHFu
Note the time it takes for each container to get started (ignore the summary time shown at the end of each of the full podman / docker run as it shows something different than what is expected)
Compare individual results for podman vs docker containers
Describe the results you received:
Podman looks 2x-5x times slower, probably because of the strict locking used on its state DB? And it also eats some of the containers, like:
Describe the results you expected:
Would be nice to have it not more than 1.5x times slower or equal
Additional information you deem important (e.g. issue happens only occasionally):
Output of
podman version
:Output of
podman info
:Additional environment details (AWS, VirtualBox, physical, etc.):
docker info: