diff --git a/benchmark/README.md b/benchmark/README.md index 81b00a5..eaf8201 100644 --- a/benchmark/README.md +++ b/benchmark/README.md @@ -82,7 +82,7 @@ mkdir examples/certs && openssl req -x509 -newkey rsa:2048 -keyout examples/cert # build monolake cd $MONOLAKE_HOME -cargo build +cargo build --release ``` #### proxy/nginx/setup-once.sh @@ -216,11 +216,11 @@ Some steps are manual steps. * Update server-ip in the configuration files: running benchmark/proxy/update-server-ip.sh and follow the sed commands ```bash -export client_url=3.133.229.116 -export proxy_url=18.217.152.113 -export server_url=3.22.140.218 -export proxy_private_url=172.31.2.253 -export server_private_url=172.31.22.170 +export client_url= +export proxy_url= +export server_url= +export proxy_private_url= +export server_private_url= ``` Then user can use benchmark-pipeline.sh to run all test in one script. User may need type "exit" to quit some finished jobs and go to the next step. User can early input "exit" when "Writing data to CSV file wrk-performance.csv..." prompts. Finally, user will get the results and visualized images. @@ -231,11 +231,11 @@ Pipeline scripts contain plot scripts, so it is better to run on a host machine # new_terminal=`osascript -e 'tell app "Terminal" to do script $1'` # new_terminal='gnome-terminal -- $1' -export client_url=3.133.229.116 -export proxy_url=18.217.152.113 -export server_url=3.22.140.218 -export proxy_private_url=172.31.2.253 -export server_private_url=172.31.22.170 +export client_url= +export proxy_url= +export server_url= +export proxy_private_url= +export server_private_url= # manual update proxy configurations echo "make sure proxy configurations are updated manually" @@ -302,6 +302,24 @@ echo "stop proxy monolake" ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url} -t 'cd ~/monolake/benchmark/proxy; ./stop-monolake.sh' sleep 2 +# then start proxy envoy +echo "start proxy envoy" +osascript -e 'tell app "Terminal" to do script "~/code/monolake/benchmark/pipeline-proxy-envoy.sh"' +sleep 5 + +# start client +echo "start client" +osascript -e 'tell app "Terminal" to do script "~/code/monolake/benchmark/pipeline-client-envoy.sh"' +sleep 2 + +echo "start client-metrics-collect" +ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${client_url} -t 'cd monolake/benchmark; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; echo "Please type exit to continue"; bash -l' + +#stop proxy envoy +echo "stop proxy envoy" +ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url} -t 'cd ~/monolake/benchmark/proxy; ./stop-envoy.sh' +sleep 2 + #stop server echo "stop server" ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${server_url} -t 'sudo service nginx stop' @@ -324,22 +342,27 @@ echo "copy collected data from proxy" scp -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url}:nginx-performance.csv . scp -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url}:traefik-performance.csv . scp -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url}:monolake-performance.csv . +scp -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url}:envoy-performance.csv . #plot data echo "plot data" ./performance-plot.sh nginx ./performance-plot.sh traefik ./performance-plot.sh monolake +./performance-plot.sh envoy ./performance-plot.sh server ./performance-plot.sh wrk ./nginx-http-latency-plot.sh ./traefik-http-latency-plot.sh ./monolake-http-latency-plot.sh +./envoy-http-latency-plot.sh ./all-http-latency-plot.sh ./nginx-https-latency-plot.sh ./traefik-https-latency-plot.sh ./monolake-https-latency-plot.sh +./envoy-https-latency-plot.sh ./all-https-latency-plot.sh +./proxies-performance-plot.sh ``` The visualized result example: @@ -361,30 +384,38 @@ Throughput and requests per second compare: | Case | Requests/sec | Transfer/sec | Server Error | Timeout | |---------------------------------|--------------|---------------|--------------|---------| -| http-result-4c-monolake-tiny | 160969.16 | 54892953.60 | 0 | 0 | -| http-result-4c-monolake-small | 154858.08 | 539523809.28 | 0 | 0 | -| http-result-4c-monolake-medium | 90215.55 | 1030792151.04 | 0 | 0 | -| http-result-4c-monolake-large | 9190.98 | 1524713390.08 | 0 | 374 | -| http-result-4c-nginx-tiny | 190923.94 | 69688360.96 | 0 | 0 | -| http-result-4c-nginx-small | 179160.28 | 628495482.88 | 0 | 0 | -| http-result-4c-nginx-medium | 114646.49 | 1320702443.52 | 0 | 0 | -| http-result-4c-nginx-large | 9306.86 | 1546188226.56 | 0 | 29 | -| http-result-4c-traefik-tiny | 9985.18 | 3407872.00 | 0 | 0 | -| http-result-4c-traefik-small | 5133.71 | 17720934.40 | 3016 | 326 | -| http-result-4c-traefik-medium | 11988.72 | 137688514.56 | 0 | 0 | -| http-result-4c-traefik-large | 9078.24 | 1503238553.60 | 0 | 117 | -| https-result-4c-monolake-tiny | 143351.22 | 48884613.12 | 0 | 0 | -| https-result-4c-monolake-small | 121503.00 | 423320616.96 | 0 | 0 | -| https-result-4c-monolake-medium | 67396.11 | 774048317.44 | 0 | 0 | -| https-result-4c-monolake-large | 8023.95 | 1331439861.76 | 0 | 0 | -| https-result-4c-nginx-tiny | 130013.41 | 47458549.76 | 0 | 0 | -| https-result-4c-nginx-small | 117888.48 | 413547888.64 | 0 | 0 | -| https-result-4c-nginx-medium | 66158.46 | 761412976.64 | 0 | 0 | -| https-result-4c-nginx-large | 8040.46 | 1331439861.76 | 0 | 0 | -| https-result-4c-traefik-tiny | 9927.86 | 3386900.48 | 0 | 0 | -| https-result-4c-traefik-small | 11931.26 | 41565552.64 | 0 | 0 | -| https-result-4c-traefik-medium | 13899.86 | 159645696.00 | 0 | 0 | -| https-result-4c-traefik-large | 7787.11 | 1288490188.80 | 0 | 0 | +| http-result-4c-monolake-tiny | 154431.05 | 52659486.72 | 0 | 0 | +| http-result-4c-monolake-small | 145974.68 | 508580331.52 | 0 | 0 | +| http-result-4c-monolake-medium | 85856.89 | 987842478.08 | 0 | 0 | +| http-result-4c-monolake-large | 9185.21 | 1524713390.08 | 0 | 381 | +| http-result-4c-nginx-tiny | 183684.88 | 67045949.44 | 0 | 0 | +| http-result-4c-nginx-small | 176493.90 | 619142184.96 | 0 | 0 | +| http-result-4c-nginx-medium | 110590.35 | 1277752770.56 | 0 | 0 | +| http-result-4c-nginx-large | 9300.72 | 1546188226.56 | 0 | 24 | +| http-result-4c-traefik-tiny | 9984.86 | 3407872.00 | 0 | 0 | +| http-result-4c-traefik-small | 10992.20 | 38293995.52 | 0 | 0 | +| http-result-4c-traefik-medium | 11981.44 | 137604628.48 | 0 | 0 | +| http-result-4c-traefik-large | 9068.24 | 1503238553.60 | 0 | 7 | +| http-result-4c-envoy-tiny | 37543.33 | 13820231.68 | 0 | 0 | +| http-result-4c-envoy-small | 36367.61 | 127685099.52 | 0 | 0 | +| http-result-4c-envoy-medium | 31010.91 | 357008670.72 | 0 | 0 | +| http-result-4c-envoy-large | 9307.30 | 1546188226.56 | 0 | 0 | +| https-result-4c-monolake-tiny | 140520.84 | 47919923.20 | 0 | 0 | +| https-result-4c-monolake-small | 115614.24 | 402799984.64 | 0 | 0 | +| https-result-4c-monolake-medium | 63085.81 | 724545044.48 | 0 | 0 | +| https-result-4c-monolake-large | 8051.51 | 1342177280.00 | 0 | 2 | +| https-result-4c-nginx-tiny | 126128.05 | 46032486.40 | 0 | 0 | +| https-result-4c-nginx-small | 115107.62 | 403796131.84 | 0 | 0 | +| https-result-4c-nginx-medium | 63612.32 | 732115763.20 | 0 | 0 | +| https-result-4c-nginx-large | 8020.73 | 1331439861.76 | 0 | 3 | +| https-result-4c-traefik-tiny | 9938.96 | 3386900.48 | 0 | 0 | +| https-result-4c-traefik-small | 11888.26 | 41418752.00 | 0 | 0 | +| https-result-4c-traefik-medium | 13911.54 | 159771525.12 | 0 | 0 | +| https-result-4c-traefik-large | 7960.72 | 1320702443.52 | 0 | 0 | +| https-result-4c-envoy-tiny | 34888.23 | 12845056.00 | 0 | 0 | +| https-result-4c-envoy-small | 33313.77 | 116968652.80 | 0 | 0 | +| https-result-4c-envoy-medium | 27510.93 | 316722380.80 | 0 | 0 | +| https-result-4c-envoy-large | 8453.53 | 1406601789.44 | 0 | 0 | ![proxies-performance](images/README/proxies-performance.png) @@ -393,11 +424,13 @@ Throughput and requests per second compare by payload size: | Case | Tiny Requests/sec | Small Requests/sec | Medium Requests/sec | Large Requests/sec | Tiny Transfer/sec | Small Transfer/sec | Medium Transfer/sec | Large Transfer/sec | |--------------------------|-------------------|--------------------|---------------------|--------------------|-------------------|--------------------|---------------------|--------------------| -| http-result-4c-monolake | 160969.16 | 154858.08 | 90215.55 | 9190.98 | 54892953.60 | 539523809.28 | 1030792151.04 | 1524713390.08 | -| http-result-4c-nginx | 190923.94 | 179160.28 | 114646.49 | 9306.86 | 69688360.96 | 628495482.88 | 1320702443.52 | 1546188226.56 | -| http-result-4c-traefik | 9985.18 | 5133.71 | 11988.72 | 9078.24 | 3407872.00 | 17720934.40 | 137688514.56 | 1503238553.60 | -| https-result-4c-monolake | 143351.22 | 121503.00 | 67396.11 | 8023.95 | 48884613.12 | 423320616.96 | 774048317.44 | 1331439861.76 | -| https-result-4c-nginx | 130013.41 | 117888.48 | 66158.46 | 8040.46 | 47458549.76 | 413547888.64 | 761412976.64 | 1331439861.76 | -| https-result-4c-traefik | 9927.86 | 11931.26 | 13899.86 | 7787.11 | 3386900.48 | 41565552.64 | 159645696.00 | 1288490188.80 | +| http-result-4c-monolake | 154431.05 | 145974.68 | 85856.89 | 9185.21 | 52659486.72 | 508580331.52 | 987842478.08 | 1524713390.08 | +| http-result-4c-nginx | 183684.88 | 176493.90 | 110590.35 | 9300.72 | 67045949.44 | 619142184.96 | 1277752770.56 | 1546188226.56 | +| http-result-4c-traefik | 9984.86 | 10992.20 | 11981.44 | 9068.24 | 3407872.00 | 38293995.52 | 137604628.48 | 1503238553.60 | +| http-result-4c-envoy | 37543.33 | 36367.61 | 31010.91 | 9307.30 | 13820231.68 | 127685099.52 | 357008670.72 | 1546188226.56 | +| https-result-4c-monolake | 140520.84 | 115614.24 | 63085.81 | 8051.51 | 47919923.20 | 402799984.64 | 724545044.48 | 1342177280.00 | +| https-result-4c-nginx | 126128.05 | 115107.62 | 63612.32 | 8020.73 | 46032486.40 | 403796131.84 | 732115763.20 | 1331439861.76 | +| https-result-4c-traefik | 9938.96 | 11888.26 | 13911.54 | 7960.72 | 3386900.48 | 41418752.00 | 159771525.12 | 1320702443.52 | +| https-result-4c-envoy | 34888.23 | 33313.77 | 27510.93 | 8453.53 | 12845056.00 | 116968652.80 | 316722380.80 | 1406601789.44 | ![proxies-performance-rotated](images/README/proxies-performance-rotated.png) diff --git a/benchmark/benchmark-pipeline.sh b/benchmark/benchmark-pipeline.sh index bf2af64..510c137 100755 --- a/benchmark/benchmark-pipeline.sh +++ b/benchmark/benchmark-pipeline.sh @@ -2,9 +2,9 @@ # new_terminal='gnome-terminal -- $1' export client_url=3.133.229.116 -export proxy_url=3.19.41.190 +export proxy_url=18.217.152.113 export server_url=3.22.140.218 -export proxy_private_url=172.31.7.16 +export proxy_private_url=172.31.2.253 export server_private_url=172.31.22.170 # manual update proxy configurations @@ -72,6 +72,24 @@ echo "stop proxy monolake" ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url} -t 'cd ~/monolake/benchmark/proxy; ./stop-monolake.sh' sleep 2 +# then start proxy envoy +echo "start proxy envoy" +osascript -e 'tell app "Terminal" to do script "~/code/monolake/benchmark/pipeline-proxy-envoy.sh"' +sleep 5 + +# start client +echo "start client" +osascript -e 'tell app "Terminal" to do script "~/code/monolake/benchmark/pipeline-client-envoy.sh"' +sleep 2 + +echo "start client-metrics-collect" +ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${client_url} -t 'cd monolake/benchmark; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; ~/monolake/benchmark/performance-collect.sh wrk; echo "Please type exit to continue"; bash -l' + +#stop proxy envoy +echo "stop proxy envoy" +ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url} -t 'cd ~/monolake/benchmark/proxy; ./stop-envoy.sh' +sleep 2 + #stop server echo "stop server" ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${server_url} -t 'sudo service nginx stop' @@ -94,20 +112,24 @@ echo "copy collected data from proxy" scp -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url}:nginx-performance.csv . scp -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url}:traefik-performance.csv . scp -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url}:monolake-performance.csv . +scp -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url}:envoy-performance.csv . #plot data echo "plot data" ./performance-plot.sh nginx ./performance-plot.sh traefik ./performance-plot.sh monolake +./performance-plot.sh envoy ./performance-plot.sh server ./performance-plot.sh wrk ./nginx-http-latency-plot.sh ./traefik-http-latency-plot.sh ./monolake-http-latency-plot.sh +./envoy-http-latency-plot.sh ./all-http-latency-plot.sh ./nginx-https-latency-plot.sh ./traefik-https-latency-plot.sh ./monolake-https-latency-plot.sh +./envoy-https-latency-plot.sh ./all-https-latency-plot.sh ./proxies-performance-plot.sh diff --git a/benchmark/client/benchmark-envoy-http.sh b/benchmark/client/benchmark-envoy-http.sh new file mode 100755 index 0000000..5eb6558 --- /dev/null +++ b/benchmark/client/benchmark-envoy-http.sh @@ -0,0 +1,20 @@ +# run benchmark: make sure proxy and server all are running; run this script from client +if [ -z "${MONOLAKE_HOME+set}" ]; then + export MONOLAKE_HOME=$HOME/monolake +fi + +if [ -z "${MONOLAKE_BENCHMARK_PROXY_IP+set}" ]; then + export MONOLAKE_BENCHMARK_PROXY_IP=localhost +fi + +if [ -z "${MONOLAKE_BENCHMARK_SERVER_IP+set}" ]; then + export MONOLAKE_BENCHMARK_SERVER_IP=localhost +fi + +cd $HOME/wrk2 + +# http proxy for envoy +./wrk -d 1m -c 640 -t 64 -R 210000 --latency http://$MONOLAKE_BENCHMARK_PROXY_IP:8500/server2/ > http-result-4c-envoy-tiny.txt +./wrk -d 1m -c 640 -t 64 -R 200000 --latency http://$MONOLAKE_BENCHMARK_PROXY_IP:8500/server3/ > http-result-4c-envoy-small.txt +./wrk -d 1m -c 640 -t 64 -R 120000 --latency http://$MONOLAKE_BENCHMARK_PROXY_IP:8500/server4/ > http-result-4c-envoy-medium.txt +./wrk -d 1m -c 640 -t 64 -R 10000 --latency http://$MONOLAKE_BENCHMARK_PROXY_IP:8500/server5/ > http-result-4c-envoy-large.txt diff --git a/benchmark/client/benchmark-envoy-https.sh b/benchmark/client/benchmark-envoy-https.sh new file mode 100755 index 0000000..4900e92 --- /dev/null +++ b/benchmark/client/benchmark-envoy-https.sh @@ -0,0 +1,20 @@ +# run benchmark: make sure proxy and server all are running; run this script from client +if [ -z "${MONOLAKE_HOME+set}" ]; then + export MONOLAKE_HOME=$HOME/monolake +fi + +if [ -z "${MONOLAKE_BENCHMARK_PROXY_IP+set}" ]; then + export MONOLAKE_BENCHMARK_PROXY_IP=localhost +fi + +if [ -z "${MONOLAKE_BENCHMARK_SERVER_IP+set}" ]; then + export MONOLAKE_BENCHMARK_SERVER_IP=localhost +fi + +cd $HOME/wrk2 + +# https proxy for envoy +./wrk -d 1m -c 640 -t 64 -R 150000 --latency https://$MONOLAKE_BENCHMARK_PROXY_IP:5443/server2/ > https-result-4c-envoy-tiny.txt +./wrk -d 1m -c 640 -t 64 -R 140000 --latency https://$MONOLAKE_BENCHMARK_PROXY_IP:5443/server3/ > https-result-4c-envoy-small.txt +./wrk -d 1m -c 640 -t 64 -R 80000 --latency https://$MONOLAKE_BENCHMARK_PROXY_IP:5443/server4/ > https-result-4c-envoy-medium.txt +./wrk -d 1m -c 640 -t 64 -R 10000 --latency https://$MONOLAKE_BENCHMARK_PROXY_IP:5443/server5/ > https-result-4c-envoy-large.txt diff --git a/benchmark/client/verify-setup.sh b/benchmark/client/verify-setup.sh index ef22d5f..3710f8c 100755 --- a/benchmark/client/verify-setup.sh +++ b/benchmark/client/verify-setup.sh @@ -21,6 +21,8 @@ curl -k http://$MONOLAKE_BENCHMARK_PROXY_IP:8100/server2 curl -k http://$MONOLAKE_BENCHMARK_PROXY_IP:8300/server2 # verify (monolake) proxy is ready curl -k http://$MONOLAKE_BENCHMARK_PROXY_IP:8402 +# verify (envoy) proxy is ready +curl -k http://$MONOLAKE_BENCHMARK_PROXY_IP:8500/server2/ # verify (nginx) tls proxy is ready curl -k https://$MONOLAKE_BENCHMARK_PROXY_IP:8443/server2 @@ -29,3 +31,5 @@ curl -k https://$MONOLAKE_BENCHMARK_PROXY_IP:8443/server2 curl -k https://$MONOLAKE_BENCHMARK_PROXY_IP:9443/server2 # verify (monolake) tls proxy is ready curl -k https://$MONOLAKE_BENCHMARK_PROXY_IP:6442 +# verify (envoy) tls proxy is ready +curl -k https://$MONOLAKE_BENCHMARK_PROXY_IP:5443/server2/ diff --git a/benchmark/images/README/all-http-latency.png b/benchmark/images/README/all-http-latency.png index 45d26e5..75286a8 100644 Binary files a/benchmark/images/README/all-http-latency.png and b/benchmark/images/README/all-http-latency.png differ diff --git a/benchmark/images/README/all-latency-https.png b/benchmark/images/README/all-latency-https.png index f0a248c..99b4a06 100644 Binary files a/benchmark/images/README/all-latency-https.png and b/benchmark/images/README/all-latency-https.png differ diff --git a/benchmark/images/README/network-topology.png b/benchmark/images/README/network-topology.png index 97deea3..b898e7a 100644 Binary files a/benchmark/images/README/network-topology.png and b/benchmark/images/README/network-topology.png differ diff --git a/benchmark/images/README/proxies-performance-rotated.png b/benchmark/images/README/proxies-performance-rotated.png index 11833ad..0eb8194 100644 Binary files a/benchmark/images/README/proxies-performance-rotated.png and b/benchmark/images/README/proxies-performance-rotated.png differ diff --git a/benchmark/images/README/proxies-performance.png b/benchmark/images/README/proxies-performance.png index 9a77889..3cd45bc 100644 Binary files a/benchmark/images/README/proxies-performance.png and b/benchmark/images/README/proxies-performance.png differ diff --git a/benchmark/images/README/proxies-setup.drawio b/benchmark/images/README/proxies-setup.drawio index b7a0a22..e41a9aa 100644 --- a/benchmark/images/README/proxies-setup.drawio +++ b/benchmark/images/README/proxies-setup.drawio @@ -1,6 +1,6 @@ - + @@ -62,7 +62,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -114,12 +114,12 @@ - + - + @@ -132,7 +132,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -191,7 +191,7 @@ - + @@ -221,69 +221,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/benchmark/images/README/proxy-security-group.png b/benchmark/images/README/proxy-security-group.png index e59e871..fee822c 100644 Binary files a/benchmark/images/README/proxy-security-group.png and b/benchmark/images/README/proxy-security-group.png differ diff --git a/benchmark/images/README/server-security-group.png b/benchmark/images/README/server-security-group.png index d718fb8..4eabb2e 100644 Binary files a/benchmark/images/README/server-security-group.png and b/benchmark/images/README/server-security-group.png differ diff --git a/benchmark/pipeline-client-envoy.sh b/benchmark/pipeline-client-envoy.sh new file mode 100755 index 0000000..fc5491d --- /dev/null +++ b/benchmark/pipeline-client-envoy.sh @@ -0,0 +1,13 @@ +export client_url=3.133.229.116 +export proxy_url=18.217.152.113 +export server_url=3.22.140.218 +export proxy_private_url=172.31.2.253 +export server_private_url=172.31.22.170 + +# start client +client_cmd='cd ~/monolake/benchmark/client; export MONOLAKE_BENCHMARK_PROXY_IP=' +client_cmd+=$proxy_private_url +client_cmd+='; export MONOLAKE_BENCHMARK_SERVER_IP=' +client_cmd+=$server_private_url +client_cmd+='; ./benchmark-envoy-http.sh; ./benchmark-envoy-https.sh; echo "Please type exit to continue"; bash -l' +ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${client_url} -t $client_cmd diff --git a/benchmark/pipeline-client-monolake.sh b/benchmark/pipeline-client-monolake.sh index b40bf43..5c1118c 100755 --- a/benchmark/pipeline-client-monolake.sh +++ b/benchmark/pipeline-client-monolake.sh @@ -1,7 +1,7 @@ export client_url=3.133.229.116 -export proxy_url=3.19.41.190 +export proxy_url=18.217.152.113 export server_url=3.22.140.218 -export proxy_private_url=172.31.7.16 +export proxy_private_url=172.31.2.253 export server_private_url=172.31.22.170 # start client diff --git a/benchmark/pipeline-client-nginx.sh b/benchmark/pipeline-client-nginx.sh index 36421eb..5049337 100755 --- a/benchmark/pipeline-client-nginx.sh +++ b/benchmark/pipeline-client-nginx.sh @@ -1,7 +1,7 @@ export client_url=3.133.229.116 -export proxy_url=3.19.41.190 +export proxy_url=18.217.152.113 export server_url=3.22.140.218 -export proxy_private_url=172.31.7.16 +export proxy_private_url=172.31.2.253 export server_private_url=172.31.22.170 # start client diff --git a/benchmark/pipeline-client-traefik.sh b/benchmark/pipeline-client-traefik.sh index 33062a0..00537b3 100755 --- a/benchmark/pipeline-client-traefik.sh +++ b/benchmark/pipeline-client-traefik.sh @@ -1,7 +1,7 @@ export client_url=3.133.229.116 -export proxy_url=3.19.41.190 +export proxy_url=18.217.152.113 export server_url=3.22.140.218 -export proxy_private_url=172.31.7.16 +export proxy_private_url=172.31.2.253 export server_private_url=172.31.22.170 # start client diff --git a/benchmark/pipeline-proxy-envoy.sh b/benchmark/pipeline-proxy-envoy.sh new file mode 100755 index 0000000..770be31 --- /dev/null +++ b/benchmark/pipeline-proxy-envoy.sh @@ -0,0 +1,16 @@ +export client_url=3.133.229.116 +export proxy_url=18.217.152.113 +export server_url=3.22.140.218 +export proxy_private_url=172.31.2.253 +export server_private_url=172.31.22.170 + +#manual update proxy configurations +#ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url} -t 'cd ~/monolake/benchmark/proxy; MONOLAKE_BENCHMARK_SERVER_IP=${server_url} ./update-server-ip.sh; bash -l' + +#then start proxy +proxy_cmd='export MONOLAKE_BENCHMARK_PROXY_IP=' +proxy_cmd+=$proxy_private_url +proxy_cmd+='; export MONOLAKE_BENCHMARK_SERVER_IP=' +proxy_cmd+=$server_private_url +proxy_cmd+='; ~/monolake/benchmark/proxy/start-envoy.sh; sleep 3; rm -f ~/envoy-performance.csv; sudo ~/monolake/benchmark/performance-collect.sh envoy; echo "Please type exit to continue"; bash -l' +ssh -i $HOME/ssh/monolake-benchmark.pem ec2-user@${proxy_url} -t $proxy_cmd diff --git a/benchmark/pipeline-proxy-monolake.sh b/benchmark/pipeline-proxy-monolake.sh index f3027f0..aa3ac6b 100755 --- a/benchmark/pipeline-proxy-monolake.sh +++ b/benchmark/pipeline-proxy-monolake.sh @@ -1,7 +1,7 @@ export client_url=3.133.229.116 -export proxy_url=3.19.41.190 +export proxy_url=18.217.152.113 export server_url=3.22.140.218 -export proxy_private_url=172.31.7.16 +export proxy_private_url=172.31.2.253 export server_private_url=172.31.22.170 #manual update proxy configurations diff --git a/benchmark/pipeline-proxy-nginx.sh b/benchmark/pipeline-proxy-nginx.sh index 574a5d0..972cbd5 100755 --- a/benchmark/pipeline-proxy-nginx.sh +++ b/benchmark/pipeline-proxy-nginx.sh @@ -1,7 +1,7 @@ export client_url=3.133.229.116 -export proxy_url=3.19.41.190 +export proxy_url=18.217.152.113 export server_url=3.22.140.218 -export proxy_private_url=172.31.7.16 +export proxy_private_url=172.31.2.253 export server_private_url=172.31.22.170 #manual update proxy configurations diff --git a/benchmark/pipeline-proxy-traefik.sh b/benchmark/pipeline-proxy-traefik.sh index 835caab..2a46655 100755 --- a/benchmark/pipeline-proxy-traefik.sh +++ b/benchmark/pipeline-proxy-traefik.sh @@ -1,7 +1,7 @@ export client_url=3.133.229.116 -export proxy_url=3.19.41.190 +export proxy_url=18.217.152.113 export server_url=3.22.140.218 -export proxy_private_url=172.31.7.16 +export proxy_private_url=172.31.2.253 export server_private_url=172.31.22.170 #manual update proxy configurations diff --git a/benchmark/pipeline-server.sh b/benchmark/pipeline-server.sh index d3d51d8..852c957 100755 --- a/benchmark/pipeline-server.sh +++ b/benchmark/pipeline-server.sh @@ -1,7 +1,7 @@ export client_url=3.133.229.116 -export proxy_url=3.19.41.190 +export proxy_url=18.217.152.113 export server_url=3.22.140.218 -export proxy_private_url=172.31.7.16 +export proxy_private_url=172.31.2.253 export server_private_url=172.31.22.170 # start server diff --git a/benchmark/proxy/envoy/envoy.yaml b/benchmark/proxy/envoy/envoy.yaml new file mode 100644 index 0000000..39771d6 --- /dev/null +++ b/benchmark/proxy/envoy/envoy.yaml @@ -0,0 +1,89 @@ +static_resources: + listeners: + - address: + socket_address: { protocol: TCP, address: 0.0.0.0, port_value: 8500 } + filter_chains: + - filters: + - name: envoy.filters.network.http_connection_manager + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + stat_prefix: ingress_http + codec_type: AUTO + generate_request_id: false + http_filters: + - name: envoy.filters.http.router + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router + route_config: + name: local_route + virtual_hosts: + - name: local_service + domains: ["*"] + routes: + - match: + prefix: "/" + route: + cluster: some_service + - address: + socket_address: { protocol: TCP, address: 0.0.0.0, port_value: 5443 } + filter_chains: + - filters: + - name: envoy.filters.network.http_connection_manager + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + stat_prefix: ingress_http + codec_type: AUTO + generate_request_id: false + http_filters: + - name: envoy.filters.http.router + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router + route_config: + name: local_route + virtual_hosts: + - name: local_service + domains: ["*"] + routes: + - match: + prefix: "/" + route: + cluster: some_service + transport_socket: + name: envoy.transport_sockets.tls + typed_config: + "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext + common_tls_context: + tls_certificates: + - certificate_chain: + filename: "cert.pem" + private_key: + filename: "cert.key" + clusters: + - name: some_service + connect_timeout: 30s + type: STATIC + lb_policy: ROUND_ROBIN + circuit_breakers: + thresholds: + - priority: DEFAULT + max_connections: 1000000000 + max_pending_requests: 1000000000 + max_requests: 1000000000 + max_retries: 1000000000 + - priority: HIGH + max_connections: 1000000000 + max_pending_requests: 1000000000 + max_requests: 1000000000 + max_retries: 1000000000 + load_assignment: + cluster_name: service_envoyproxy_io + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: 172.31.22.170 + port_value: 10080 +stats_config: + stats_matcher: + reject_all: true diff --git a/benchmark/proxy/envoy/setup-once.sh b/benchmark/proxy/envoy/setup-once.sh new file mode 100755 index 0000000..21b1e10 --- /dev/null +++ b/benchmark/proxy/envoy/setup-once.sh @@ -0,0 +1,12 @@ +# setup envoy proxy + +if [ -z "${MONOLAKE_HOME+set}" ]; then + export MONOLAKE_HOME=$HOME/monolake +fi + +cd $MONOLAKE_HOME/benchmark/proxy/envoy +wget https://github.com/envoyproxy/envoy/releases/download/v1.31.0/envoy-1.31.0-linux-x86_64 +chmod +x envoy-1.31.0-linux-x86_64 +mv envoy-1.31.0-linux-x86_64 envoy +echo "Please fill all fields when generating OpenSSL certs." +sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout $MONOLAKE_HOME/benchmark/proxy/envoy/cert.key -out $MONOLAKE_HOME/benchmark/proxy/envoy/cert.pem diff --git a/benchmark/proxy/setup-once.sh b/benchmark/proxy/setup-once.sh index cbf406b..b1dcbe7 100755 --- a/benchmark/proxy/setup-once.sh +++ b/benchmark/proxy/setup-once.sh @@ -8,3 +8,4 @@ cd $MONOLAKE_HOME/benchmark/proxy ./monolake/setup-once.sh ./nginx/setup-once.sh ./traefik/setup-once.sh +./envoy/setup-once.sh diff --git a/benchmark/proxy/start-envoy.sh b/benchmark/proxy/start-envoy.sh new file mode 100755 index 0000000..890ca35 --- /dev/null +++ b/benchmark/proxy/start-envoy.sh @@ -0,0 +1,7 @@ +# start envoy proxy service +if [ -z "${MONOLAKE_HOME+set}" ]; then + export MONOLAKE_HOME=$HOME/monolake +fi + +cd $MONOLAKE_HOME/benchmark/proxy/envoy +sudo $MONOLAKE_HOME/benchmark/proxy/envoy/envoy -c $MONOLAKE_HOME/benchmark/proxy/envoy/envoy.yaml & diff --git a/benchmark/proxy/stop-envoy.sh b/benchmark/proxy/stop-envoy.sh new file mode 100755 index 0000000..698e1d3 --- /dev/null +++ b/benchmark/proxy/stop-envoy.sh @@ -0,0 +1,2 @@ +# stop envoy proxy service +sudo kill -15 $(ps aux | grep 'envoy' | awk '{print $2}') diff --git a/benchmark/proxy/update-server-ip.sh b/benchmark/proxy/update-server-ip.sh index 0c10203..70f3ae2 100755 --- a/benchmark/proxy/update-server-ip.sh +++ b/benchmark/proxy/update-server-ip.sh @@ -17,3 +17,4 @@ echo "please copy and paste following commands and run manually to replace serve echo "sed -i -e 's/127.0.0.1/${MONOLAKE_BENCHMARK_SERVER_IP}/g' nginx/nginx.conf" echo "sed -i -e 's/127.0.0.1/${MONOLAKE_BENCHMARK_SERVER_IP}/g' monolake/monolake.toml" echo "sed -i -e 's/127.0.0.1/${MONOLAKE_BENCHMARK_SERVER_IP}/g' traefik/traefik-dynamic.toml" +echo "sed -i -e 's/127.0.0.1/${MONOLAKE_BENCHMARK_SERVER_IP}/g' envoy/envoy.yaml" diff --git a/benchmark/visualization/all-http-latency-plot.sh b/benchmark/visualization/all-http-latency-plot.sh index d0386ab..0372049 100755 --- a/benchmark/visualization/all-http-latency-plot.sh +++ b/benchmark/visualization/all-http-latency-plot.sh @@ -1 +1 @@ -./latency-plot.sh -m 40000 -o all-http-latency.png http-result-4c-monolake-tiny.txt http-result-4c-monolake-small.txt http-result-4c-monolake-medium.txt http-result-4c-monolake-large.txt http-result-4c-nginx-tiny.txt http-result-4c-nginx-small.txt http-result-4c-nginx-medium.txt http-result-4c-nginx-large.txt http-result-4c-traefik-tiny.txt http-result-4c-traefik-small.txt http-result-4c-traefik-medium.txt http-result-4c-traefik-large.txt +./latency-plot.sh -m 40000 -o all-http-latency.png http-result-4c-monolake-tiny.txt http-result-4c-monolake-small.txt http-result-4c-monolake-medium.txt http-result-4c-monolake-large.txt http-result-4c-nginx-tiny.txt http-result-4c-nginx-small.txt http-result-4c-nginx-medium.txt http-result-4c-nginx-large.txt http-result-4c-traefik-tiny.txt http-result-4c-traefik-small.txt http-result-4c-traefik-medium.txt http-result-4c-traefik-large.txt http-result-4c-envoy-tiny.txt http-result-4c-envoy-small.txt http-result-4c-envoy-medium.txt http-result-4c-envoy-large.txt diff --git a/benchmark/visualization/all-https-latency-plot.sh b/benchmark/visualization/all-https-latency-plot.sh index f87ce5c..a58d45c 100755 --- a/benchmark/visualization/all-https-latency-plot.sh +++ b/benchmark/visualization/all-https-latency-plot.sh @@ -1 +1 @@ -./latency-plot.sh -m 40000 -o all-latency-https.png https-result-4c-monolake-tiny.txt https-result-4c-monolake-small.txt https-result-4c-monolake-medium.txt https-result-4c-monolake-large.txt https-result-4c-nginx-tiny.txt https-result-4c-nginx-small.txt https-result-4c-nginx-medium.txt https-result-4c-nginx-large.txt https-result-4c-traefik-tiny.txt https-result-4c-traefik-small.txt https-result-4c-traefik-medium.txt https-result-4c-traefik-large.txt +./latency-plot.sh -m 40000 -o all-latency-https.png https-result-4c-monolake-tiny.txt https-result-4c-monolake-small.txt https-result-4c-monolake-medium.txt https-result-4c-monolake-large.txt https-result-4c-nginx-tiny.txt https-result-4c-nginx-small.txt https-result-4c-nginx-medium.txt https-result-4c-nginx-large.txt https-result-4c-traefik-tiny.txt https-result-4c-traefik-small.txt https-result-4c-traefik-medium.txt https-result-4c-traefik-large.txt https-result-4c-envoy-tiny.txt https-result-4c-envoy-small.txt https-result-4c-envoy-medium.txt https-result-4c-envoy-large.txt diff --git a/benchmark/visualization/envoy-http-latency-plot.sh b/benchmark/visualization/envoy-http-latency-plot.sh new file mode 100755 index 0000000..34f352c --- /dev/null +++ b/benchmark/visualization/envoy-http-latency-plot.sh @@ -0,0 +1 @@ +./latency-plot.sh -m 40000 -o envoy-http-latency.png http-result-4c-envoy-tiny.txt http-result-4c-envoy-small.txt http-result-4c-envoy-medium.txt http-result-4c-envoy-large.txt diff --git a/benchmark/visualization/envoy-https-latency-plot.sh b/benchmark/visualization/envoy-https-latency-plot.sh new file mode 100755 index 0000000..9b695fe --- /dev/null +++ b/benchmark/visualization/envoy-https-latency-plot.sh @@ -0,0 +1 @@ +./latency-plot.sh -m 40000 -o envoy-https-latency.png https-result-4c-envoy-tiny.txt https-result-4c-envoy-small.txt https-result-4c-envoy-medium.txt https-result-4c-envoy-large.txt diff --git a/benchmark/visualization/performance-csv-convert.py b/benchmark/visualization/performance-csv-convert.py index 2490a40..08bad1a 100644 --- a/benchmark/visualization/performance-csv-convert.py +++ b/benchmark/visualization/performance-csv-convert.py @@ -26,9 +26,11 @@ o_csv["http-result-4c-monolake"] = list() o_csv["http-result-4c-nginx"] = list() o_csv["http-result-4c-traefik"] = list() +o_csv["http-result-4c-envoy"] = list() o_csv["https-result-4c-monolake"] = list() o_csv["https-result-4c-nginx"] = list() o_csv["https-result-4c-traefik"] = list() +o_csv["https-result-4c-envoy"] = list() o_csv["http-result-4c-monolake"].append("http-result-4c-monolake") o_csv["http-result-4c-monolake"].append(d_csv[0][0]) @@ -60,35 +62,55 @@ o_csv["http-result-4c-traefik"].append(d_csv[10][1]) o_csv["http-result-4c-traefik"].append(d_csv[11][1]) +o_csv["http-result-4c-envoy"].append("http-result-4c-envoy") +o_csv["http-result-4c-envoy"].append(d_csv[12][0]) +o_csv["http-result-4c-envoy"].append(d_csv[13][0]) +o_csv["http-result-4c-envoy"].append(d_csv[14][0]) +o_csv["http-result-4c-envoy"].append(d_csv[15][0]) +o_csv["http-result-4c-envoy"].append(d_csv[12][1]) +o_csv["http-result-4c-envoy"].append(d_csv[13][1]) +o_csv["http-result-4c-envoy"].append(d_csv[14][1]) +o_csv["http-result-4c-envoy"].append(d_csv[15][1]) + o_csv["https-result-4c-monolake"].append("https-result-4c-monolake") -o_csv["https-result-4c-monolake"].append(d_csv[12][0]) -o_csv["https-result-4c-monolake"].append(d_csv[13][0]) -o_csv["https-result-4c-monolake"].append(d_csv[14][0]) -o_csv["https-result-4c-monolake"].append(d_csv[15][0]) -o_csv["https-result-4c-monolake"].append(d_csv[12][1]) -o_csv["https-result-4c-monolake"].append(d_csv[13][1]) -o_csv["https-result-4c-monolake"].append(d_csv[14][1]) -o_csv["https-result-4c-monolake"].append(d_csv[15][1]) +o_csv["https-result-4c-monolake"].append(d_csv[16][0]) +o_csv["https-result-4c-monolake"].append(d_csv[17][0]) +o_csv["https-result-4c-monolake"].append(d_csv[18][0]) +o_csv["https-result-4c-monolake"].append(d_csv[19][0]) +o_csv["https-result-4c-monolake"].append(d_csv[16][1]) +o_csv["https-result-4c-monolake"].append(d_csv[17][1]) +o_csv["https-result-4c-monolake"].append(d_csv[18][1]) +o_csv["https-result-4c-monolake"].append(d_csv[19][1]) o_csv["https-result-4c-nginx"].append("https-result-4c-nginx") -o_csv["https-result-4c-nginx"].append(d_csv[16][0]) -o_csv["https-result-4c-nginx"].append(d_csv[17][0]) -o_csv["https-result-4c-nginx"].append(d_csv[18][0]) -o_csv["https-result-4c-nginx"].append(d_csv[19][0]) -o_csv["https-result-4c-nginx"].append(d_csv[16][1]) -o_csv["https-result-4c-nginx"].append(d_csv[17][1]) -o_csv["https-result-4c-nginx"].append(d_csv[18][1]) -o_csv["https-result-4c-nginx"].append(d_csv[19][1]) +o_csv["https-result-4c-nginx"].append(d_csv[20][0]) +o_csv["https-result-4c-nginx"].append(d_csv[21][0]) +o_csv["https-result-4c-nginx"].append(d_csv[22][0]) +o_csv["https-result-4c-nginx"].append(d_csv[23][0]) +o_csv["https-result-4c-nginx"].append(d_csv[20][1]) +o_csv["https-result-4c-nginx"].append(d_csv[21][1]) +o_csv["https-result-4c-nginx"].append(d_csv[22][1]) +o_csv["https-result-4c-nginx"].append(d_csv[23][1]) o_csv["https-result-4c-traefik"].append("https-result-4c-traefik") -o_csv["https-result-4c-traefik"].append(d_csv[20][0]) -o_csv["https-result-4c-traefik"].append(d_csv[21][0]) -o_csv["https-result-4c-traefik"].append(d_csv[22][0]) -o_csv["https-result-4c-traefik"].append(d_csv[23][0]) -o_csv["https-result-4c-traefik"].append(d_csv[20][1]) -o_csv["https-result-4c-traefik"].append(d_csv[21][1]) -o_csv["https-result-4c-traefik"].append(d_csv[22][1]) -o_csv["https-result-4c-traefik"].append(d_csv[23][1]) +o_csv["https-result-4c-traefik"].append(d_csv[24][0]) +o_csv["https-result-4c-traefik"].append(d_csv[25][0]) +o_csv["https-result-4c-traefik"].append(d_csv[26][0]) +o_csv["https-result-4c-traefik"].append(d_csv[27][0]) +o_csv["https-result-4c-traefik"].append(d_csv[24][1]) +o_csv["https-result-4c-traefik"].append(d_csv[25][1]) +o_csv["https-result-4c-traefik"].append(d_csv[26][1]) +o_csv["https-result-4c-traefik"].append(d_csv[27][1]) + +o_csv["https-result-4c-envoy"].append("https-result-4c-envoy") +o_csv["https-result-4c-envoy"].append(d_csv[28][0]) +o_csv["https-result-4c-envoy"].append(d_csv[29][0]) +o_csv["https-result-4c-envoy"].append(d_csv[30][0]) +o_csv["https-result-4c-envoy"].append(d_csv[31][0]) +o_csv["https-result-4c-envoy"].append(d_csv[28][1]) +o_csv["https-result-4c-envoy"].append(d_csv[29][1]) +o_csv["https-result-4c-envoy"].append(d_csv[30][1]) +o_csv["https-result-4c-envoy"].append(d_csv[31][1]) # print("o_csv:") # print(o_csv) @@ -101,6 +123,8 @@ writer.writerow(o_csv["http-result-4c-monolake"]) writer.writerow(o_csv["http-result-4c-nginx"]) writer.writerow(o_csv["http-result-4c-traefik"]) + writer.writerow(o_csv["http-result-4c-envoy"]) writer.writerow(o_csv["https-result-4c-monolake"]) writer.writerow(o_csv["https-result-4c-nginx"]) writer.writerow(o_csv["https-result-4c-traefik"]) + writer.writerow(o_csv["https-result-4c-envoy"]) diff --git a/benchmark/visualization/proxies-performance-plot.sh b/benchmark/visualization/proxies-performance-plot.sh index cbad39c..f6a2f31 100755 --- a/benchmark/visualization/proxies-performance-plot.sh +++ b/benchmark/visualization/proxies-performance-plot.sh @@ -1,10 +1,10 @@ -FILES="http-result-4c-monolake-tiny.txt http-result-4c-monolake-small.txt http-result-4c-monolake-medium.txt http-result-4c-monolake-large.txt http-result-4c-nginx-tiny.txt http-result-4c-nginx-small.txt http-result-4c-nginx-medium.txt http-result-4c-nginx-large.txt http-result-4c-traefik-tiny.txt http-result-4c-traefik-small.txt http-result-4c-traefik-medium.txt http-result-4c-traefik-large.txt https-result-4c-monolake-tiny.txt https-result-4c-monolake-small.txt https-result-4c-monolake-medium.txt https-result-4c-monolake-large.txt https-result-4c-nginx-tiny.txt https-result-4c-nginx-small.txt https-result-4c-nginx-medium.txt https-result-4c-nginx-large.txt https-result-4c-traefik-tiny.txt https-result-4c-traefik-small.txt https-result-4c-traefik-medium.txt https-result-4c-traefik-large.txt" +FILES="http-result-4c-monolake-tiny.txt http-result-4c-monolake-small.txt http-result-4c-monolake-medium.txt http-result-4c-monolake-large.txt http-result-4c-nginx-tiny.txt http-result-4c-nginx-small.txt http-result-4c-nginx-medium.txt http-result-4c-nginx-large.txt http-result-4c-traefik-tiny.txt http-result-4c-traefik-small.txt http-result-4c-traefik-medium.txt http-result-4c-traefik-large.txt http-result-4c-envoy-tiny.txt http-result-4c-envoy-small.txt http-result-4c-envoy-medium.txt http-result-4c-envoy-large.txt https-result-4c-monolake-tiny.txt https-result-4c-monolake-small.txt https-result-4c-monolake-medium.txt https-result-4c-monolake-large.txt https-result-4c-nginx-tiny.txt https-result-4c-nginx-small.txt https-result-4c-nginx-medium.txt https-result-4c-nginx-large.txt https-result-4c-traefik-tiny.txt https-result-4c-traefik-small.txt https-result-4c-traefik-medium.txt https-result-4c-traefik-large.txt https-result-4c-envoy-tiny.txt https-result-4c-envoy-small.txt https-result-4c-envoy-medium.txt https-result-4c-envoy-large.txt" csv_filename="proxies-performance.csv" -output_filename0="proxies-performance-boxes.png" +# output_filename0="proxies-performance-boxes.png" output_filename1="proxies-performance.png" csv_filename2="proxies-performance-rotated.csv" output_filename2="proxies-performance-rotated.png" -output_filename3="proxies-performance-rotated-boxes.png" +# output_filename3="proxies-performance-rotated-boxes.png" echo "Case,Requests/sec,Transfer/sec,Server Error,Timeout" > $csv_filename @@ -85,14 +85,15 @@ gnuplot <<- EOF # "t " - legend labels # # Proxy Services Performance + # set output "$output_filename1" + # set title "Proxy Services Performance" + # plot "$csv_filename" using 2:xticlabels(1) with lines smooth unique lw 2 lt rgb "#4848d6" t "Requests/sec",\ + # "$csv_filename" using 3:xticlabels(1) with lines smooth unique lw 2 lt rgb "#b40000" t "Transfer 10KB/sec", \ + # "$csv_filename" using 4:xticlabels(1) with lines smooth unique lw 2 lt rgb "#ed8004" t "Server Error", \ + # "$csv_filename" using 5:xticlabels(1) with lines smooth unique lw 2 lt rgb "#48d65b" t "Timeout", + + # set output "$output_filename0" set output "$output_filename1" - set title "Proxy Services Performance" - plot "$csv_filename" using 2:xticlabels(1) with lines smooth unique lw 2 lt rgb "#4848d6" t "Requests/sec",\ - "$csv_filename" using 3:xticlabels(1) with lines smooth unique lw 2 lt rgb "#b40000" t "Transfer 10KB/sec", \ - "$csv_filename" using 4:xticlabels(1) with lines smooth unique lw 2 lt rgb "#ed8004" t "Server Error", \ - "$csv_filename" using 5:xticlabels(1) with lines smooth unique lw 2 lt rgb "#48d65b" t "Timeout", - - set output "$output_filename0" set yrange [1000:*] set logscale y set ytics format "%.0s%c" @@ -150,19 +151,20 @@ gnuplot <<- EOF # "t " - legend labels # # Proxy Services Performance + # set output "$output_filename2" + # set title "Proxy Services Performance By Payload" + + # plot "$csv_filename2" using 2:xticlabels(1) with lines smooth unique lw 2 lt rgb "#ff0000" t "Tiny Requests/sec",\ + # "$csv_filename2" using 3:xticlabels(1) with lines smooth unique lw 2 lt rgb "#00ff00" t "Small Requests/sec", \ + # "$csv_filename2" using 4:xticlabels(1) with lines smooth unique lw 2 lt rgb "#0000ff" t "Medium Requests/sec", \ + # "$csv_filename2" using 5:xticlabels(1) with lines smooth unique lw 2 lt rgb "#000000" t "Large Requests/sec", \ + # "$csv_filename2" using 6:xticlabels(1) with lines smooth unique lw 2 lt rgb "#800000" t "Tiny Transfer 10KB/sec",\ + # "$csv_filename2" using 7:xticlabels(1) with lines smooth unique lw 2 lt rgb "#008000" t "Small Transfer 10KB/sec", \ + # "$csv_filename2" using 8:xticlabels(1) with lines smooth unique lw 2 lt rgb "#000080" t "Medium Transfer 10KB/sec", \ + # "$csv_filename2" using 9:xticlabels(1) with lines smooth unique lw 2 lt rgb "#808080" t "Large Transfer 10KB/sec", + + # set output "$output_filename3" set output "$output_filename2" - set title "Proxy Services Performance By Payload" - - plot "$csv_filename2" using 2:xticlabels(1) with lines smooth unique lw 2 lt rgb "#ff0000" t "Tiny Requests/sec",\ - "$csv_filename2" using 3:xticlabels(1) with lines smooth unique lw 2 lt rgb "#00ff00" t "Small Requests/sec", \ - "$csv_filename2" using 4:xticlabels(1) with lines smooth unique lw 2 lt rgb "#0000ff" t "Medium Requests/sec", \ - "$csv_filename2" using 5:xticlabels(1) with lines smooth unique lw 2 lt rgb "#000000" t "Large Requests/sec", \ - "$csv_filename2" using 6:xticlabels(1) with lines smooth unique lw 2 lt rgb "#800000" t "Tiny Transfer 10KB/sec",\ - "$csv_filename2" using 7:xticlabels(1) with lines smooth unique lw 2 lt rgb "#008000" t "Small Transfer 10KB/sec", \ - "$csv_filename2" using 8:xticlabels(1) with lines smooth unique lw 2 lt rgb "#000080" t "Medium Transfer 10KB/sec", \ - "$csv_filename2" using 9:xticlabels(1) with lines smooth unique lw 2 lt rgb "#808080" t "Large Transfer 10KB/sec", - - set output "$output_filename3" set title "Proxy Services Performance By Proxy" set yrange [1000:*]