#!/usr/bin/env bash set -e ################################################## # create compute instances gcloud compute instances create \ bench-agent-1 \ --custom-cpu=16 \ --custom-memory=60 \ --image-family=ubuntu-1710 \ --image-project=ubuntu-os-cloud \ --boot-disk-size=300 \ --boot-disk-type="pd-ssd" \ --network dbtester \ --zone us-west1-a \ --maintenance-policy=MIGRATE \ --restart-on-failure gcloud compute instances create \ bench-agent-2 \ --custom-cpu=16 \ --custom-memory=60 \ --image-family=ubuntu-1710 \ --image-project=ubuntu-os-cloud \ --boot-disk-size=300 \ --boot-disk-type="pd-ssd" \ --network dbtester \ --zone us-west1-a \ --maintenance-policy=MIGRATE \ --restart-on-failure gcloud compute instances create \ bench-agent-3 \ --custom-cpu=16 \ --custom-memory=60 \ --image-family=ubuntu-1710 \ --image-project=ubuntu-os-cloud \ --boot-disk-size=300 \ --boot-disk-type="pd-ssd" \ --network dbtester \ --zone us-west1-a \ --maintenance-policy=MIGRATE \ --restart-on-failure export GCP_KEY_PATH=/etc/gcp-key-etcd-development.json gcloud compute instances create \ bench-tester \ --custom-cpu=16 \ --custom-memory=60 \ --image-family=ubuntu-1710 \ --image-project=ubuntu-os-cloud \ --boot-disk-size=300 \ --boot-disk-type="pd-ssd" \ --network dbtester \ --zone us-west1-a \ --maintenance-policy=MIGRATE \ --restart-on-failure \ --metadata-from-file gcp-key-etcd=${GCP_KEY_PATH} ################################################## ################################################## gcloud compute ssh --zone=us-west1-a bench-agent-1 gcloud compute ssh --zone=us-west1-a bench-agent-2 gcloud compute ssh --zone=us-west1-a bench-agent-3 gcloud compute ssh --zone=us-west1-a bench-tester gcloud compute instances list <> ${HOME}/.bashrc; PATH_VAR=$PATH":/usr/local/go/bin:$(echo $HOME)/go/bin"; echo "export PATH=$(echo $PATH_VAR)" >> ${HOME}/.bashrc; source ${HOME}/.bashrc; fi mkdir -p ${GOPATH}/bin/ source ${HOME}/.bashrc go version ################################################## ################################################## GIT_PATH=github.com/coreos/etcd USER_NAME=coreos # BRANCH_NAME=release-3.2 BRANCH_NAME=master rm -rf ${GOPATH}/src/${GIT_PATH} mkdir -p ${GOPATH}/src/github.com/coreos git clone https://github.com/${USER_NAME}/etcd \ --branch ${BRANCH_NAME} \ ${GOPATH}/src/${GIT_PATH} cd ${GOPATH}/src/${GIT_PATH} # v3.2.0 # git reset --hard 66722b1ada68fcd5227db853ee92003169a975c8 # v3.3.0 RC+ # git reset --hard 58c402a47bc5ad46fa748ce666257b45b06b1444 GO_BUILD_FLAGS="-v" ./build ${GOPATH}/src/${GIT_PATH}/bin/etcd --version ${GOPATH}/src/${GIT_PATH}/bin/etcdctl --version cp ${GOPATH}/src/${GIT_PATH}/bin/etcd ${GOPATH}/bin/etcd sudo cp ${GOPATH}/src/${GIT_PATH}/bin/etcd /etcd cp ${GOPATH}/src/${GIT_PATH}/bin/etcdctl ${GOPATH}/bin/etcdctl sudo cp ${GOPATH}/src/${GIT_PATH}/bin/etcdctl /etcdctl ${GOPATH}/bin/etcd --version ETCDCTL_API=3 ${GOPATH}/bin/etcdctl version etcd --version ETCDCTL_API=3 etcdctl version ################################################## # reinstall Go 1.9+ for context imports ################################################## USER_NAME=coreos BRANCH_NAME=master cd ${HOME} rm -rf ${HOME}/go/src/github.com/coreos/dbtester git clone https://github.com/$USER_NAME/dbtester --branch $BRANCH_NAME ${HOME}/go/src/github.com/coreos/dbtester cd ${HOME} go install -v ./go/src/github.com/coreos/dbtester/cmd/dbtester dbtester -h dbtester agent -h dbtester control -h ################################################## ################################################## # agent on each machine # specify network interface, disk device of host machine, # this starts the database on host machine, when 'control' signals sudo service ntp stop sudo ntpdate time.google.com sudo service ntp start rm -f ${HOME}/agent.log nohup dbtester agent \ --agent-log ${HOME}/agent.log \ --network-interface ens4 \ --disk-device sda \ --agent-port :3500 & sleep 7s cat ${HOME}/agent.log ################################################## ################################################## # control on tester machine # specify 'control' configuration file # (client number, key number, key-value size) # starts/shuts down database agents, send stress requests through RPCs curl -L http://metadata.google.internal/computeMetadata/v1/instance/attributes/gcp-key-etcd -H 'Metadata-Flavor:Google' > /tmp/gcp-key-etcd-development.json sudo mv /tmp/gcp-key-etcd-development.json /etc/gcp-key-etcd-development.json head -10 /etc/gcp-key-etcd-development.json # copy the tester configuration from git repository cp ${HOME}/go/src/github.com/coreos/dbtester/test-configs/write-100K-keys-1-client.yaml ${HOME}/config.yaml cat ${HOME}/config.yaml sudo service ntp stop sudo ntpdate time.google.com sudo service ntp start nohup dbtester control \ --database-id etcd__v3_3 \ --config config.yaml > ${HOME}/client-control.log 2>&1 & sleep 7s tail -f ${HOME}/client-control.log < ${HOME}/client-control.log 2>&1 & nohup dbtester control \ --database-id etcd__v3_3 \ --config config.yaml > ${HOME}/client-control.log 2>&1 & nohup dbtester control \ --database-id zookeeper__r3_5_3_beta \ --config config.yaml > ${HOME}/client-control.log 2>&1 & nohup dbtester control \ --database-id consul__v1_0_2 \ --config config.yaml > ${HOME}/client-control.log 2>&1 & COMMENT ################################################## ################################################## # analyze; get all data from remote machines # and specify 'analyze' configuration file, # this aggregates data, generates all graphs, texts cd ${HOME}/go/src/github.com/coreos/dbtester go install -v ./cmd/dbtester gsutil -m cp -R gs://dbtester-results/2018Q1-04-etcd-zookeeper . cp ./test-configs/write-100K-keys-1-client.yaml ./2018Q1-04-etcd-zookeeper/read-3M-same-keys-best-throughput/ dbtester analyze --config 2018Q1-04-etcd-zookeeper/read-3M-same-keys-best-throughput/write-100K-keys-1-client.yaml gsutil -m cp -R 2018Q1-04-etcd-zookeeper gs://dbtester-results/ gsutil -m acl ch -u allUsers:R -r gs://dbtester-results/2018Q1-04-etcd-zookeeper ################################################## <0 Layout->Title and Fonts Write 2M 256-byte key-value pairs, Latency Write 500K 256-byte key-value pairs, Latency (1-connection) font 30 Axes->Title->X empty Axes->Titles->Y Latency (millisecond) font 18 Axes->Tick Labels->X Axes->Tick Labels->Y font 17 Axes->Range Auto Range, Log Legend font 22 Layout->Margins Top 200px ######################## COMMENT