Perforce Helix Server (p4d) Benchmarking with Docker

Overview

This set of scripts and results shows how benchmarks were run to compare native p4d performance with performance when p4d is run inside a Docker container.

Directory structure

Some of this was created manually, some by syncing the workspace in which this README is located.

~/benchmark$ find . -type d
./root
./root/branchsubmit [db.* files for both benchmarks]
./p4 [location of scripts (and results)]
./p4/root
./p4/root/branchsubmit
./p4/ckps [checkpoint downloaded as part of benchmark]
./p4/logs [p4d logs (subdirs per benchmark)]
./p4/logs/branchsubmit
./p4/logs/browse
./p4/bin [p4d and p4 under test (r16.1)]
./p4/clients [root for clients created (subdirs per benchmark)]
./p4/clients/branchsubmit
./p4/clients/branchsubmit/branchsubmit-client
./p4/clients/browse
./p4/journals [p4d journal (subdirs per benchmark)]
./p4/journals/branchsubmit
./p4/journals/browse
./p4/docker [Dockerfile and scripts]
./p4/bin.linux26x86_64 [client application for browse benchmark]
./p4/licenses [license required for browse benchmark]

Note that there is a symlink in ./root/browse so that it shares the db.* files with the other benchmark.

Links for benchmarks

You will not need browse.sh and branchsubmit.sh as the customised versions are in the p4 directory.

Instructions for Benchmarks

Creating Docker files

Assume current directory is ~/benchmark

Run the following: * ./build_docker.sh

Running the branchsubmit benchmark

Run the following: cd p4 ./branchsubmit.sh setup ./branchsubmit.sh runme ./branchsubmit.sh runme * ./branchsubmit.sh runme

This creates db.* (takes 10-20 minutes so you don't want to do it all the time). It then runs the native p4d benchmark several times (which warms up file system cache).

Run the Docker version:

Note that the script defaults to the "runme" action.