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 --- * [KB Article](http://answers.perforce.com/articles/KB/5358) You will not need browse.sh and branchsubmit.sh as the customised versions are in the p4 directory. Instructions for Benchmarks == * Sync the workspace containing this README! * Download p4 & p4d and put into ./p4/bin * Download the zipped checkpoint and put into ./p4/ckps * Create Docker container * Run benchmarks (see below) 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: * cd ~/benchmark * ./run_branchsubmit_in_docker.sh * ./run_branchsubmit_in_docker.sh * ./run_branchsubmit_in_docker.sh Note that the script defaults to the "runme" action.