Drone 0.8 performance


We migrated our Drone instance from a 0.5 version to latest 0.8 version. However, our builds are nearly doubling in execution time. We made a few changes to the configuration (services using custom hostnames instead of sharing ip, and a few syntax changes). For the rest, everything stays exactly the same.

Our build times went from 2 min 50, 3 minutes to about 10 minutes.
Services are starting up a little slower than before and globally everything takes more time.

Ok, so I narrowed down the bottleneck to the testing phase of the pipeline. Our test time went from 3 minutes to 10 on same machine. What is quite curious is the same test build runs in less then 2 minutes on a 2014 MBP. Now on the server hosting (only) the drone instance, (Xeon 12 cores, 32Go Ram, 500Go SSD), it takes over 10 minutes ! And I repeat myself but everyhing worked okay on a previous 0.5 version of Drone.

Is there any debug/logging level we can fine-tune in order to achieve same performance as before?

This post implies that Drone is responsible for the performance of a command running inside a Docker container, however, Drone really has no influence over how fast a command runs inside a Docker container. When Drone runs your build, it is essentially is doing this:

docker network create foo
docker run --network=foo <image> /bin/sh -c <commands>

Once Docker starts, it is out of Drone’s control. Drone streams the logs and waits for the container results, neither of which impact container performance.

Services are starting up a little slower

Drone is running docker create and docker start and does not have any control over how quickly Docker executes these commands. In 0.5 services were started before the clone step, and in 0.8 services are started after the clone step. Perhaps the change in ordering makes it feel slower?

Is there any debug/logging level

There is not. What would Drone log and how? Your commands are running inside a process managed by Docker. So you would need to triage this at the Docker level, operating system level, or individual process level.

we can fine-tune in order to achieve same performance as before?

This assumes there is a problem with Drone, however, it is more likely to be a problem with the host machine configuration. If your commands are running slow in Docker, this is something we need to troubleshoot in Docker or at the host-machine level.

I think, however, we need to take a step back to understand what changed when you upgraded:

  • did you install 0.8 on the same exact machine?
  • is it the same operating system?
  • is it the same Docker version?
  • is it the same host machine network configuration? network driver configuration?
  • is it the same disk configuration? volume driver configuration?
  • what is your exact yaml and logs? can anyone else repeat these issues?

My guess is that something changed with your host machine configuration that is impacting overall docker performance, thus causing your build to run slow, because builds run in Docker.

1 Like