diff options
author | Diana Picus <diana.picus@linaro.org> | 2019-09-04 10:57:26 +0200 |
---|---|---|
committer | Diana Picus <diana.picus@linaro.org> | 2019-09-13 07:33:39 +0000 |
commit | a905835722c59613e0ec70384462895147beaa5b (patch) | |
tree | 028889a032ba37941bc0e988fac1aa1322b2ffcc /start-container-docker.sh | |
parent | 2f63352849c22f3b2616b41dc19659ee50d4c9ad (diff) |
Run benchmarks inside containers
This creates a new task ('bench') and starts a docker container to run
the benchmarks in. It uses the same image as the 'build' task.
Switching between aarch64 and aarch32 benchmarking breaks unless force
install is requested because we only keep one version of the spec tools
on the board. This will be fixed in a subsequent patch to bmk-scripts.
Change-Id: Ie98cdf47aa3ed456e6349bac40d88bd7acaa7acd
Diffstat (limited to 'start-container-docker.sh')
-rwxr-xr-x | start-container-docker.sh | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/start-container-docker.sh b/start-container-docker.sh index 3a214425..4cf58796 100755 --- a/start-container-docker.sh +++ b/start-container-docker.sh @@ -15,7 +15,7 @@ set -e -o pipefail # - definition of ${session_host} and ${session_port}, can be used for # a remote connexion to the container usage() { - echo "Usage: $0 [--arch container-arch] --distro flavour [--docker_opts opts] [--dryrun true/false] [--label label] [--newuser username:[uid]] [--node node] [--prefix prefix] [--session-host host] [--session-name name] [--ssh_info true/false] [--task {build|test}] [--user user] [--weight weight] [--verbose true/false]" + echo "Usage: $0 [--arch container-arch] --distro flavour [--docker_opts opts] [--dryrun true/false] [--label label] [--newuser username:[uid]] [--node node] [--prefix prefix] [--session-host host] [--session-name name] [--ssh_info true/false] [--task {build|test|bench}] [--user user] [--weight weight] [--verbose true/false]" echo echo " container-arch: architecture (eg: amd64, i386, arm64, armhf)" echo " distro: distribution (eg: trusty)" @@ -28,7 +28,7 @@ usage() { echo " useful if the name resolution does not work correctly" echo " session-name: session, in case the default '$BUILD_NUMBER-$JOB_NAME' is not suitable" echo " ssh_info: set $ssh_host and $ssh_port env variables in the container" - echo " task: type of container (build or test, default=build)" + echo " task: type of container (build, test or bench, default=build)" echo " user: remote user to use in the container." echo " weight: container weight, reserves resources. Default=1" echo " verbose: whether enable verbose output. Default=false" @@ -157,7 +157,7 @@ if $dryrun; then dryruncmd="echo" fi -if [ x"$node" = x"" -a x"$label" != x"" ]; then +if [ x"$node" = x"" -a x"$session_host" = x"" -a x"$label" != x"" ]; then node=$(print_node_with_least_containers "$label") if [ x"$node" = x"" ]; then echo "ERROR: Cannot find node for $label" @@ -208,7 +208,7 @@ if [ x"$distro" = x"default" ]; then distro="trusty-tcwg-tested" fi -image=linaro/ci-${container_arch}-tcwg-${task}-ubuntu:${distro} +image=linaro/ci-${container_arch}-tcwg-build-ubuntu:${distro} # Avoid connexion sharing because of race conditions with parallel # builds @@ -228,10 +228,15 @@ SECURITY="${SECURITY} --security-opt seccomp:unconfined" # Reserve resources according to weight and task nproc=$($SSH $session_host nproc --all) -memory=$(print_memory_limit "$task" "$weight" "$nproc") pids=$(print_pids_limit "$task" "$weight") cpus=$(print_cpu_shares "$task" "$weight") +memory=$(print_memory_limit "$task" "$weight" "$nproc") +memory_opt="--memory=${memory}M" +if [ x"$memory" = x"unlimited" ]; then + memory_opt="" +fi + if [ x"${JOB_NAME:+set}" = x"set" ]; then job_name="$JOB_NAME" fi @@ -290,7 +295,7 @@ echo "DEBUG: starting docker on $session_host from $(hostname), date $(date)" docker_run=($DOCKER run --name $session_name -dtP \ "${bind_mounts_opt[@]}" \ ${SECURITY} \ - --memory=${memory}M \ + ${memory_opt} \ --pids-limit=${pids} \ --cpu-shares=${cpus} \ $cpuset_opt \ |