From e172e1ac50f6b9071af3744f4022c0269d83b5ec Mon Sep 17 00:00:00 2001 From: Hiroya Onoe Date: Fri, 6 Dec 2024 02:03:10 +0900 Subject: [PATCH] Refactor scripts and remove unused YAML files --- consumption/README.md | 9 +-- consumption/benchmark.sh | 66 +++++++++++++------ consumption/collect/main.go | 6 +- consumption/exec-cmd.sh | 26 -------- .../kubernetes/manifests/proxy-http.yaml | 51 -------------- .../kubernetes/manifests/proxy-picop.yaml | 51 -------------- consumption/restart.sh | 24 +++---- 7 files changed, 62 insertions(+), 171 deletions(-) delete mode 100755 consumption/exec-cmd.sh delete mode 100644 consumption/kubernetes/manifests/proxy-http.yaml delete mode 100644 consumption/kubernetes/manifests/proxy-picop.yaml diff --git a/consumption/README.md b/consumption/README.md index 236f739..bb0af8b 100644 --- a/consumption/README.md +++ b/consumption/README.md @@ -5,17 +5,12 @@ You can measure proxy resource consumption (vCPU and memory). [Common Steps](../docs/common.md) ```bash -cd kubernetes/manifests -kubectl apply -f namespace.yaml -kubectl apply -f proxy-http.yaml -kubectl apply -f service.yaml +./restart.sh ``` # Measurements -Please change --req-per-sec from 1~10000 ```bash -cd script -go run --url http://:32001 --env-id main --req-per-sec 1000 --duration 90 --client-num 1 --payload 1000 --picop +./benchmark.sh ``` # Outputs diff --git a/consumption/benchmark.sh b/consumption/benchmark.sh index 87d0666..afc8602 100755 --- a/consumption/benchmark.sh +++ b/consumption/benchmark.sh @@ -1,34 +1,55 @@ #!/bin/bash -eux -if [ "$#" -ne 1 ]; then - echo "Usage: $0 " +if [ "$#" -ne 3 ]; then + echo "Usage: $0 " exit 1 fi -PREFIX=$1 +TYPE=$1 +PREFIX=$2 +RPS=#3 -URL="http://10.229.71.125:32001" -ENVID=main -DURATION=300 -CONN=1 -RPS=1000 -PAYLOAD=1000 +# TYPE=base +# TYPE=base+picop +# TYPE=base+gw+istio +# TYPE=base+gw+picop -INTERVAL=10 +DURATION=300 +CLIENT=1 -NAME="$PREFIX/$ENVID-$CONN-$RPS-$DURATION-$PAYLOAD-$INTERVAL" TIMESTAMP=$(date +%s) +NAME="$PREFIX/$TYPE/$CLIENT-$RPS-$DURATION/$TIMESTAMP" -CMD="/usr/local/go/bin/go run ./script/main.go --url $URL --env-id $ENVID --req-per-sec $RPS --duration $DURATION --client-num $CONN --payload $PAYLOAD --picop" +if [ "$TYPE" = "base" ]; then + echo "Invalid type: $TYPE" + exit 1 + # URL="http://service-istio.service-istio.svc.cluster.local:32001" + # OPTION="" + # NS="service" +elif [ "$TYPE" = "base+picop" ]; then + echo "Invalid type: $TYPE" + exit 1 + # URL="http://service-istio.service-istio.svc.cluster.local:31002" + # OPTION="--picop" + # NS="service" +elif [ "$TYPE" = "base+gw+istio" ]; then + URL="http://service-istio.service-istio.svc.cluster.local:30001" + OPTION="" + NS="service-istio" +elif [ "$TYPE" = "base+gw+picop" ]; then + URL="http://proxy-both.service.svc.cluster.local:30002" + OPTION="--picop" + NS="service" +else + echo "Invalid type: $TYPE" + exit 1 +fi -echo "NAME: $NAME" -echo "TIMESTAMP: $TIMESTAMP" +CMD="/usr/local/go/bin/go run script/main.go --url $URL --env-id main --req-per-sec $RPS --duration $DURATION --client-num $CLIENT --payload 1000 $OPTION" cleanup() { echo "SIGINT received, cleaning up..." - ssh onoe-benchmark "pkill -2 --echo 'go'" - ssh onoe-benchmark "pkill -2 --echo 'tee'" - ssh onoe-benchmark "pkill -2 --echo 'exec-cmd.sh'" + ssh onoe-benchmark-1 "pkill -2 --echo 'go'" kill $(jobs -p) exit 1 @@ -36,12 +57,15 @@ cleanup() { trap 'cleanup' SIGINT -ssh onoe-benchmark "cd benchmark/consumption && ./exec-cmd.sh '$CMD' ./data/cmd/$NAME $TIMESTAMP" & +ssh onoe-benchmark-1 "cd benchmark/delay && $CMD" & -go run ./collect/main.go -name $NAME -timestamp $TIMESTAMP -dir ./data/input -interval $INTERVAL -duration $DURATION kubectl top pod -n service-proxy & +go run ./collect/main.go -name ./data/input/$NAME -timestamp $TIMESTAMP -interval $INTERVAL -duration $DURATION kubectl top pod -n $NS --containers & wait -mkdir -p ./data/cmd/$NAME -scp onoe-benchmark:benchmark/consumption/data/cmd/$NAME/$TIMESTAMP.txt ./data/cmd/$NAME/$TIMESTAMP.txt +mkdir -p ./data/$PREFIX/$TYPE/$CLIENT-$RPS-$DURATION go run ./parse/main.go -name $NAME -timestamp $TIMESTAMP -input ./data/input -output ./data/output + +echo "NAME: $NAME" +echo "CMD: $CMD" +echo "TIMESTAMP: $TIMESTAMP" diff --git a/consumption/collect/main.go b/consumption/collect/main.go index daacb52..39f3f2a 100644 --- a/consumption/collect/main.go +++ b/consumption/collect/main.go @@ -15,7 +15,6 @@ import ( ) func main() { - dir := flag.String("dir", "", "directory to save data") name := flag.String("name", "", "project name") timestamp := flag.String("timestamp", "", "timestamp to exec command (RFC3339)") interval := flag.Int("interval", 10, "interval to exec command (second)") @@ -23,14 +22,13 @@ func main() { flag.Parse() cmd := flag.Args() - fmt.Printf("dir: %s\n", *dir) fmt.Printf("name: %s\n", *name) fmt.Printf("timestamp: %s\n", *timestamp) fmt.Printf("interval: %d\n", *interval) fmt.Printf("duration: %d\n", *duration) fmt.Printf("cmd: %s\n", strings.Join(cmd, " ")) - if len(*dir) == 0 || len(*name) == 0 || *interval == 0 || *duration == 0 || len(cmd) < 2 || len(*timestamp) == 0 { + if len(*name) == 0 || *interval == 0 || *duration == 0 || len(cmd) < 2 || len(*timestamp) == 0 { flag.Usage() return } @@ -44,7 +42,7 @@ func main() { cancel() }() - dirname := filepath.Join(*dir, *name, *timestamp) + dirname := filepath.Join(*name, *timestamp) if _, err := os.Stat(dirname); err == nil { fmt.Printf("duplicated timestamp: %s\n", dirname) return diff --git a/consumption/exec-cmd.sh b/consumption/exec-cmd.sh deleted file mode 100755 index 4c899c8..0000000 --- a/consumption/exec-cmd.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -eux - -# 引数のチェック -if [ "$#" -ne 3 ]; then - echo "Usage: $0 " - exit 1 -fi - -cmd=$1 -dir=$2 -timestamp=$3 - -# ディレクトリを必要に応じて作成 -mkdir -p "$dir" - -filename="${dir}/${timestamp}.txt" - -if [ -e $filename ]; then - echo "duplicated timestamp: $filename" - exit 1 -fi - -echo "\$ ${cmd}" > $filename - -# コマンドの実行と出力の保存 -eval $cmd | tee -a $filename diff --git a/consumption/kubernetes/manifests/proxy-http.yaml b/consumption/kubernetes/manifests/proxy-http.yaml deleted file mode 100644 index a219913..0000000 --- a/consumption/kubernetes/manifests/proxy-http.yaml +++ /dev/null @@ -1,51 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: proxy-http - namespace: service -spec: - selector: - matchLabels: - app: proxy-http - template: - metadata: - labels: - app: proxy-http - spec: - containers: - - name: proxy - image: "ghcr.io/picop-rd/proxy:latest" - command: ['/bin/proxy', '--proxy-port', '80', '--admin-port', '9000', '--default-addr', 'service-http-main.service.svc.cluster.local:80', '--propagate=false', '--controller-url', 'http://proxy-controller.picop-system.svc.cluster.local:8080', '--id', 'service-http'] - imagePullPolicy: Always - ports: - - name: proxy - containerPort: 80 - - name: admin - containerPort: 9000 - resources: - limits: - cpu: "2" - memory: 1Gi - requests: - cpu: 100m - memory: 128Mi - ---- -apiVersion: v1 -kind: Service -metadata: - name: proxy-http - namespace: service -spec: - type: NodePort - selector: - app: proxy-http - ports: - - name: proxy - protocol: TCP - port: 80 - targetPort: 80 - - name: admin - protocol: TCP - port: 9000 - targetPort: 9000 diff --git a/consumption/kubernetes/manifests/proxy-picop.yaml b/consumption/kubernetes/manifests/proxy-picop.yaml deleted file mode 100644 index 22b7978..0000000 --- a/consumption/kubernetes/manifests/proxy-picop.yaml +++ /dev/null @@ -1,51 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: proxy-picop - namespace: service -spec: - selector: - matchLabels: - app: proxy-picop - template: - metadata: - labels: - app: proxy-picop - spec: - containers: - - name: proxy - image: "ghcr.io/picop-rd/proxy:latest" - command: ['/bin/proxy', '--proxy-port', '80', '--admin-port', '9000', '--default-addr', 'service-picop-main.service.svc.cluster.local:80', '--propagate=true', '--controller-url', 'http://proxy-controller.picop-system.svc.cluster.local:8080', '--id', 'service-picop'] - imagePullPolicy: Always - ports: - - name: proxy - containerPort: 80 - - name: admin - containerPort: 9000 - resources: - limits: - cpu: "2" - memory: 1Gi - requests: - cpu: 100m - memory: 128Mi - ---- -apiVersion: v1 -kind: Service -metadata: - name: proxy-picop - namespace: service -spec: - type: NodePort - selector: - app: proxy-picop - ports: - - name: proxy - protocol: TCP - port: 80 - targetPort: 80 - - name: admin - protocol: TCP - port: 9000 - targetPort: 9000 diff --git a/consumption/restart.sh b/consumption/restart.sh index b50ad30..8125a64 100755 --- a/consumption/restart.sh +++ b/consumption/restart.sh @@ -1,14 +1,16 @@ -#!/bin/bash -eux +#!/bin/bash -ux -# # dsb-hr namespaceのdeploymentのname一覧を取得 -# deployments=$(kubectl get deployments -n dsb-hr -o jsonpath='{.items[*].metadata.name}') +cd istio +kubectl delete -f namespace.yaml +kubectl apply -f namespace.yaml +kubectl apply -f gateway.yaml +kubectl apply -f vs.yaml +kubectl apply -f ingressgateway-svc.yaml -# # 取得したdeploymentそれぞれでkubectl rollout restartコマンドを実行 -# for deployment in $deployments -# do -# kubectl rollout restart deployment/$deployment -n dsb-hr -# echo "Restarted deployment: $deployment" -# done +cd ../kubernetes/manifests -kubectl delete -Rf ./kubernetes/manifests -kubectl apply -Rf ./kubernetes/manifests +kubectl delete -f namespace.yaml +kubectl apply -f namespace.yaml +kubectl apply -f proxy-both.yaml +./script/create-service.sh http main 32001 | kubectl -n service apply -f - +./script/create-service.sh http main 32002 | kubectl -n service-istio apply -f -