GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — powertools-lambda-python/benchmark/benchmark.sh at develop · step-security-bot/powertools-lambda-python Expand file tree/ Copy pathbenchmark.shMore file actions executable file ·83 lines (70 loc) · 3.35 KB / Copy pathbenchmark.shFile metadata and controlsexecutable file ·83 lines (70 loc) · 3.35 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 #!/bin/bash set -e trap cleanup EXIT if [ -z "S3_BUCKET" ]; then echo "Missing S3_BUCKET environment variabe" exit 1 fi export BENCHMARK_STACK_NAME=${BENCHMARK_STACK_NAME:-"powertools-benchmark"} function cleanup { echo "Cleaning up stack..." aws cloudformation delete-stack --stack-name $BENCHMARK_STACK_NAME } function run_function { # Update function to force a cold start aws lambda update-function-configuration --function-name $1 --memory-size 256 >/dev/null aws lambda update-function-configuration --function-name $1 --memory-size 128 >/dev/null # Cold-start invoke aws lambda invoke --function-name $1 --payload '{}' /dev/null >/dev/null && echo -n . || echo -n e } # Retrieve statistics function get_stats { # Gather results from CloudWatch Logs Insights query_id=$(aws logs start-query --log-group-name $1 --query-string 'filter @type = "REPORT" | stats pct(@initDuration, 50) as init_duration, pct(@duration, 50) as duration' --start-time $(expr $(date +%s) - 86400) --end-time $(expr $(date +%s) + 0) --query 'queryId' --output text) while true; do result=$(aws logs get-query-results --query-id $query_id --query 'status' --output text) if [ $result == "Complete" ]; then break fi sleep 1 done # Check if greater than threshold and print result init_duration=$(aws logs get-query-results --query-id $query_id --query 'results[0][?field==`init_duration`].value' --output text) duration=$(aws logs get-query-results --query-id $query_id --query 'results[0][?field==`duration`].value' --output text) echo "$init_duration,$duration" } # Build and deploy the benchmark stack echo "Building and deploying..." sam build sam deploy --stack-name $BENCHMARK_STACK_NAME --s3-bucket $S3_BUCKET --capabilities CAPABILITY_IAM # Retrieve output values echo "Retrieve values..." export INSTRUMENTED_FUNCTION=$(aws cloudformation describe-stacks --stack-name $BENCHMARK_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`InstrumentedFunction`].OutputValue' --output text) export REFERENCE_FUNCTION=$(aws cloudformation describe-stacks --stack-name $BENCHMARK_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`ReferenceFunction`].OutputValue' --output text) export INSTRUMENTED_LOG_GROUP=$(aws cloudformation describe-stacks --stack-name $BENCHMARK_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`InstrumentedLogGroup`].OutputValue' --output text) export REFERENCE_LOG_GROUP=$(aws cloudformation describe-stacks --stack-name $BENCHMARK_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`ReferenceLogGroup`].OutputValue' --output text) echo INSTRUMENTED_FUNCTION=$INSTRUMENTED_FUNCTION echo REFERENCE_FUNCTION=$REFERENCE_FUNCTION echo INSTRUMENTED_LOG_GROUP=$INSTRUMENTED_LOG_GROUP echo REFERENCE_LOG_GROUP=$REFERENCE_LOG_GROUP # Running cold starts echo "Running functions..." for i in {0..20}; do run_function $INSTRUMENTED_FUNCTION done & process_id=$! for i in {0..20}; do run_function $REFERENCE_FUNCTION done & wait $process_id wait $! echo # Gather statistics # Waiting 2.5 minutes to make sure the data propagates from CloudWatch Logs # into CloudWatch Logs Insights. echo "Waiting for data to propagate in CloudWatch Logs Insights..." sleep 150 return_code=0 echo "INSTRUMENTED=$(get_stats $INSTRUMENTED_LOG_GROUP)" echo "REFERENCE=$(get_stats $REFERENCE_LOG_GROUP)" exit $return_code |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |