mirror of
https://github.com/containers/podman.git
synced 2025-06-24 03:08:13 +08:00
Merge pull request #17188 from vrothberg/hack-perf
[CI:DOCS] add hack/perf for comparing two container engines
This commit is contained in:
12
hack/perf/README.md
Normal file
12
hack/perf/README.md
Normal file
@ -0,0 +1,12 @@
|
||||
# A set of scripts to compare the performance of two container engines
|
||||
|
||||
Run the scripts via `sudo sh $script.sh`.
|
||||
|
||||
WARNING: Running any script will run `systemd prune`.
|
||||
|
||||
Use the following environment variables to change the default behavior:
|
||||
* `ENGINE_A` to set container engine A (default `podman`)
|
||||
* `ENGINE_B` to set container engine B (default `docker`)
|
||||
* `RUNS` to change the runs/repetitions of each benchmarks (default `100`)
|
||||
* `NUM_CONTAINERS` to change the number of created containers for some benchmarks (e.g., `ps`) (default `100`)
|
||||
* `IMAGE` to change the default container image (default `docker.io/library/alpine:latest`)
|
8
hack/perf/create.sh
Executable file
8
hack/perf/create.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env sh
|
||||
source ./helpers.bash
|
||||
|
||||
setup
|
||||
echo_bold "Create $RUNS containers"
|
||||
hyperfine --warmup 10 --runs $RUNS \
|
||||
"$ENGINE_A create $IMAGE" \
|
||||
"$ENGINE_B create $IMAGE"
|
36
hack/perf/helpers.bash
Normal file
36
hack/perf/helpers.bash
Normal file
@ -0,0 +1,36 @@
|
||||
ENGINE_A=${ENGINE_A:-podman}
|
||||
ENGINE_B=${ENGINE_B:-docker}
|
||||
RUNS=${RUNS:-100}
|
||||
NUM_CONTAINERS=${NUM_CONTAINERS:-100}
|
||||
IMAGE=${IMAGE:-docker.io/library/alpine:latest}
|
||||
|
||||
BOLD="$(tput bold)"
|
||||
RESET="$(tput sgr0)"
|
||||
|
||||
function echo_bold() {
|
||||
echo "${BOLD}$1${RESET}"
|
||||
}
|
||||
|
||||
function pull_image() {
|
||||
echo_bold "... pulling $IMAGE"
|
||||
$ENGINE_A pull $IMAGE -q > /dev/null
|
||||
$ENGINE_B pull $IMAGE -q > /dev/null
|
||||
}
|
||||
|
||||
function setup() {
|
||||
echo_bold "---------------------------------------------------"
|
||||
echo_bold "... comparing $ENGINE_A with $ENGINE_B"
|
||||
echo_bold "... cleaning up previous containers and images"
|
||||
$ENGINE_A system prune -f > /dev/null
|
||||
$ENGINE_B system prune -f > /dev/null
|
||||
pull_image
|
||||
echo ""
|
||||
}
|
||||
|
||||
function create_containers() {
|
||||
echo_bold "... creating $NUM_CONTAINERS containers"
|
||||
for i in $(eval echo "{0..$NUM_CONTAINERS}"); do
|
||||
$ENGINE_A create $IMAGE >> /dev/null
|
||||
$ENGINE_B create $IMAGE >> /dev/null
|
||||
done
|
||||
}
|
9
hack/perf/ps.sh
Executable file
9
hack/perf/ps.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env sh
|
||||
source ./helpers.bash
|
||||
|
||||
setup
|
||||
echo_bold "List $NUM_CONTAINERS created containers"
|
||||
create_containers
|
||||
hyperfine --warmup 10 --runs $RUNS \
|
||||
"$ENGINE_A ps -a" \
|
||||
"$ENGINE_B ps -a"
|
10
hack/perf/rm.sh
Executable file
10
hack/perf/rm.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env sh
|
||||
source ./helpers.bash
|
||||
|
||||
setup
|
||||
echo_bold "Remove $RUNS containers in a row"
|
||||
hyperfine --warmup 10 --runs $RUNS \
|
||||
--prepare "$ENGINE_A create --name=123 $IMAGE" \
|
||||
--prepare "$ENGINE_B create --name=123 $IMAGE" \
|
||||
"$ENGINE_A rm 123" \
|
||||
"$ENGINE_B rm 123"
|
18
hack/perf/run.sh
Executable file
18
hack/perf/run.sh
Executable file
@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env sh
|
||||
source ./helpers.bash
|
||||
|
||||
setup
|
||||
echo_bold "Run $RUNS containers in a row"
|
||||
hyperfine --warmup 10 --runs $RUNS \
|
||||
--prepare "$ENGINE_A rm -f 123 || true" \
|
||||
--prepare "$ENGINE_B rm -f 123 || true" \
|
||||
"$ENGINE_A run --name=123 $IMAGE true" \
|
||||
"$ENGINE_B run --name=123 $IMAGE true"
|
||||
|
||||
setup
|
||||
echo_bold "Run and remove $RUNS containers in a row"
|
||||
hyperfine --warmup 10 --runs $RUNS \
|
||||
--prepare "$ENGINE_A rm -f 123 || true" \
|
||||
--prepare "$ENGINE_B rm -f 123 || true" \
|
||||
"$ENGINE_A run --rm --name=123 $IMAGE true" \
|
||||
"$ENGINE_B run --rm --name=123 $IMAGE true"
|
10
hack/perf/start.sh
Executable file
10
hack/perf/start.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env sh
|
||||
source ./helpers.bash
|
||||
|
||||
setup
|
||||
echo_bold "Start $RUNS containers in a row"
|
||||
hyperfine --warmup 10 --runs $RUNS \
|
||||
--prepare "$ENGINE_A rm -f 123 || true; $ENGINE_A create --name=123 $IMAGE true" \
|
||||
--prepare "$ENGINE_B rm -f 123 || true; $ENGINE_B create --name=123 $IMAGE true" \
|
||||
"$ENGINE_A start 123" \
|
||||
"$ENGINE_B start 123"
|
10
hack/perf/stop.sh
Executable file
10
hack/perf/stop.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env sh
|
||||
source ./helpers.bash
|
||||
|
||||
setup
|
||||
echo_bold "Stop $RUNS containers in a row"
|
||||
hyperfine --warmup 10 --runs $RUNS \
|
||||
--prepare "$ENGINE_A rm -f 123 || true; $ENGINE_A run -d --name=123 $IMAGE top" \
|
||||
--prepare "$ENGINE_B rm -f 123 || true; $ENGINE_B run -d --name=123 $IMAGE top" \
|
||||
"$ENGINE_A stop 123" \
|
||||
"$ENGINE_B stop 123"
|
Reference in New Issue
Block a user