diff --git a/tools/docker/Dockerfile.test_performance b/tools/docker/Dockerfile.test_performance
new file mode 100644
index 0000000000..848ce7b168
--- /dev/null
+++ b/tools/docker/Dockerfile.test_performance
@@ -0,0 +1,21 @@
+ARG TOOLCHAIN=cp2k/toolchain:latest
+FROM ${TOOLCHAIN}
+
+# author: Ole Schuett
+
+WORKDIR /workspace
+
+COPY ./scripts/install_basics.sh .
+RUN ./install_basics.sh
+
+COPY ./scripts/install_performance.sh .
+RUN ./install_performance.sh
+
+COPY ./scripts/ci_entrypoint.sh \
+ ./scripts/test_performance.sh \
+ ./scripts/plot_performance.py \
+ ./
+
+CMD ["./ci_entrypoint.sh", "./test_performance.sh"]
+
+#EOF
diff --git a/tools/docker/run_test.sh b/tools/docker/run_test.sh
index cb06067a9a..a42ae9c53a 100755
--- a/tools/docker/run_test.sh
+++ b/tools/docker/run_test.sh
@@ -17,7 +17,7 @@ CP2K_LOCAL=$(realpath ../../)
set -x
# SYS_PTRACE needed by LeakSanitizer.
-${DOCKER:-docker} run -i --init --rm --cap-add=SYS_PTRACE \
+${DOCKER:-docker} run -i --init --rm --cap-add=SYS_PTRACE --shm-size=1g \
--volume "${CP2K_LOCAL}:/mnt/cp2k/:ro" \
"$@" "img_cp2k_test_${TESTNAME}"
diff --git a/tools/docker/run_test_master.sh b/tools/docker/run_test_master.sh
index 60851b019d..03540639c5 100755
--- a/tools/docker/run_test_master.sh
+++ b/tools/docker/run_test_master.sh
@@ -19,7 +19,7 @@ echo "Running ${TESTNAME} on Branch ${GIT_BRANCH} (ref: ${GIT_REF})..."
set -x
# SYS_PTRACE needed by LeakSanitizer.
-${DOCKER:-docker} run -i --init --rm --cap-add=SYS_PTRACE \
+${DOCKER:-docker} run -i --init --rm --cap-add=SYS_PTRACE --shm-size=1g \
-e "GIT_BRANCH=${GIT_BRANCH}" -e "GIT_REF=${GIT_REF}" \
"$@" "img_cp2k_test_${TESTNAME}"
diff --git a/tools/docker/scripts/install_performance.sh b/tools/docker/scripts/install_performance.sh
new file mode 100755
index 0000000000..834b08135f
--- /dev/null
+++ b/tools/docker/scripts/install_performance.sh
@@ -0,0 +1,23 @@
+#!/bin/bash -e
+
+# author: Ole Schuett
+
+# setup arch files
+cd /workspace/cp2k/arch
+ln -vs /opt/cp2k-toolchain/install/arch/local* .
+
+# shellcheck disable=SC1091
+source /opt/cp2k-toolchain/install/setup
+
+# pre-build cp2k
+cd /workspace/cp2k
+echo -n "Warming cache by trying to compile cp2k... "
+if make -j VERSION="psmp" &> /dev/null; then
+ echo 'done.'
+else
+ echo 'failed.'
+fi
+
+rm -rf lib exe
+
+#EOF
diff --git a/tools/docker/scripts/plot_performance.py b/tools/docker/scripts/plot_performance.py
new file mode 100755
index 0000000000..896ee0267b
--- /dev/null
+++ b/tools/docker/scripts/plot_performance.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python3
+
+# author: Ole Schuett
+
+import re
+import sys
+from collections import OrderedDict
+
+# ======================================================================================
+def main():
+ if len(sys.argv) != 5:
+ print("Usage: plot_performance.py