From 1cca288f50a56626a83c43de82f8620c61733888 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 3 Jan 2024 14:20:41 -0500 Subject: [PATCH 001/129] create py spy pipeline --- .../dockerfiles/py_spy_profiling.Dockerfile | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .ci/profiling/dockerfiles/py_spy_profiling.Dockerfile diff --git a/.ci/profiling/dockerfiles/py_spy_profiling.Dockerfile b/.ci/profiling/dockerfiles/py_spy_profiling.Dockerfile new file mode 100644 index 000000000..1952f2f4d --- /dev/null +++ b/.ci/profiling/dockerfiles/py_spy_profiling.Dockerfile @@ -0,0 +1,27 @@ +ARG PYTHON_VERSION=3.8 + +FROM mcr.microsoft.com/azure-functions/python:4-python$PYTHON_VERSION + +# Mounting local machines azure-functions-python-worker and azure-functions-python-library onto it +RUN rm -rf /azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker + +# Use the following command to run the docker image with customizible worker and library +VOLUME ["/azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker"] + +ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ + AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ + FUNCTIONS_WORKER_PROCESS_COUNT=1 \ + AZURE_FUNCTIONS_ENVIRONMENT=Development \ + FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED=1 + +RUN apt-get --quiet update && \ + apt-get install --quiet -y git && \ + cd /home && \ + git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ + mkdir -p /home/site/wwwroot/ && \ + cp -r AzFunctionsPythonPerformance/* /home/site/wwwroot/ && \ + pip install -q -r /home/site/wwwroot/requirements.txt && \ + pip install py-spy + +# CMD [ "/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost" ] +CMD [ "sh", "-c", "/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost & py-spy top -- python /azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost" ] From 515def19a6edbe3d8b4b25bd4e64d57e62df041d Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 3 Jan 2024 20:58:55 +0000 Subject: [PATCH 002/129] fix --- .../dockerfiles/py_spy_profiling.Dockerfile | 27 ---------- .github/workflows/profiling.yml | 51 +++++++++++++++++++ 2 files changed, 51 insertions(+), 27 deletions(-) delete mode 100644 .ci/profiling/dockerfiles/py_spy_profiling.Dockerfile create mode 100644 .github/workflows/profiling.yml diff --git a/.ci/profiling/dockerfiles/py_spy_profiling.Dockerfile b/.ci/profiling/dockerfiles/py_spy_profiling.Dockerfile deleted file mode 100644 index 1952f2f4d..000000000 --- a/.ci/profiling/dockerfiles/py_spy_profiling.Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -ARG PYTHON_VERSION=3.8 - -FROM mcr.microsoft.com/azure-functions/python:4-python$PYTHON_VERSION - -# Mounting local machines azure-functions-python-worker and azure-functions-python-library onto it -RUN rm -rf /azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker - -# Use the following command to run the docker image with customizible worker and library -VOLUME ["/azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker"] - -ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ - AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ - FUNCTIONS_WORKER_PROCESS_COUNT=1 \ - AZURE_FUNCTIONS_ENVIRONMENT=Development \ - FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED=1 - -RUN apt-get --quiet update && \ - apt-get install --quiet -y git && \ - cd /home && \ - git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ - mkdir -p /home/site/wwwroot/ && \ - cp -r AzFunctionsPythonPerformance/* /home/site/wwwroot/ && \ - pip install -q -r /home/site/wwwroot/requirements.txt && \ - pip install py-spy - -# CMD [ "/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost" ] -CMD [ "sh", "-c", "/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost & py-spy top -- python /azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost" ] diff --git a/.github/workflows/profiling.yml b/.github/workflows/profiling.yml new file mode 100644 index 000000000..f42e04cfc --- /dev/null +++ b/.github/workflows/profiling.yml @@ -0,0 +1,51 @@ +name: Throughput testing workflow + +on: + workflow_dispatch: + pull_request: + branches: [ dev ] + +env: + TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" + PYTHON_VERSION: "3.8" + PORT: 8000 + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + test_to_run: [ SyncHttpTriggerHelloWorld ] + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ env.PYTHON_VERSION }} + uses: actions/setup-python@v2 + with: + python-version: ${{ env.PYTHON_VERSION }} + - name: Set up Dotnet 2.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '3.1.405' + - name: Set up Dotnet 6.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '6.x' + - name: Install dependencies and the worker + run: | + python -m pip install -q --upgrade pip + python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U -e .[dev] + python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U azure-functions --pre + python setup.py build + python setup.py webhost --branch-name=dev + python setup.py extension + python install py-spy + - name: Build and Run the Docker image + run: | + docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . + docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest + sleep 10 # host needs some time to start. + - name: Generate Worker Performance Summary + run: | + chmod 755 .ci/perf_tests/run-perftests.sh + .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} From 402da157d8181cf9e822e2acf7b5f4aab4861794 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 03:42:12 +0000 Subject: [PATCH 003/129] setup profiling pipeline --- .github/workflows/profiling.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/profiling.yml b/.github/workflows/profiling.yml index f42e04cfc..2fc19c4b7 100644 --- a/.github/workflows/profiling.yml +++ b/.github/workflows/profiling.yml @@ -43,9 +43,12 @@ jobs: - name: Build and Run the Docker image run: | docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . - docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest + container_id=$(docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) sleep 10 # host needs some time to start. - - name: Generate Worker Performance Summary - run: | - chmod 755 .ci/perf_tests/run-perftests.sh - .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} + echo "Listing Python processes in the Docker container..." + docker exec $container_id ps aux | grep python + + # - name: Generate Worker Performance Summary + # run: | + + # py-spy record -o profile.svg -- python From 292daa8283af75672dca74cae53d358d9903acc6 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:00:03 +0000 Subject: [PATCH 004/129] update pipeline name --- .github/workflows/profiling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/profiling.yml b/.github/workflows/profiling.yml index 2fc19c4b7..92f25ef95 100644 --- a/.github/workflows/profiling.yml +++ b/.github/workflows/profiling.yml @@ -1,4 +1,4 @@ -name: Throughput testing workflow +name: Profiling on: workflow_dispatch: From 490848c2e20e6756e37d5ae384d18a9ddeef251e Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:58:55 +0000 Subject: [PATCH 005/129] fix --- .github/workflows/profiling.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/profiling.yml b/.github/workflows/profiling.yml index 92f25ef95..aef6a3227 100644 --- a/.github/workflows/profiling.yml +++ b/.github/workflows/profiling.yml @@ -33,6 +33,7 @@ jobs: dotnet-version: '6.x' - name: Install dependencies and the worker run: | + cd $GITHUB_WORKSPACE python -m pip install -q --upgrade pip python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U -e .[dev] python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U azure-functions --pre From b55e1f079a0ebe84111e7d35bb0827b18e783575 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 18:12:21 +0000 Subject: [PATCH 006/129] fix --- .github/workflows/profiling.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/profiling.yml b/.github/workflows/profiling.yml index aef6a3227..7ea9dde43 100644 --- a/.github/workflows/profiling.yml +++ b/.github/workflows/profiling.yml @@ -40,7 +40,7 @@ jobs: python setup.py build python setup.py webhost --branch-name=dev python setup.py extension - python install py-spy + pip install py-spy - name: Build and Run the Docker image run: | docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . From 9a6743f986c1fdc52b1fb578d0a90dccebcc9e33 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 13:20:57 -0500 Subject: [PATCH 007/129] Update profiling.yml --- .github/workflows/profiling.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/profiling.yml b/.github/workflows/profiling.yml index 7ea9dde43..52da2a9d6 100644 --- a/.github/workflows/profiling.yml +++ b/.github/workflows/profiling.yml @@ -45,9 +45,12 @@ jobs: run: | docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . container_id=$(docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) + echo "Container ID is: $container_id" sleep 10 # host needs some time to start. echo "Listing Python processes in the Docker container..." - docker exec $container_id ps aux | grep python + docker ps + docker exec $container_id ps aux | grep '[p]ython' || true + # - name: Generate Worker Performance Summary # run: | From 6724dbe43e245e30f11a8133f30c1733ca11326e Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:26:50 -0500 Subject: [PATCH 008/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index c78e2f17b..5df4b9659 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -47,7 +47,7 @@ jobs: python setup.py extension - name: Build and Run the Docker image run: | - docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . + docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} -e AzureWebJobsStorage={{ secrets.PERFTESTSTORAGE }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest sleep 10 # host needs some time to start. - name: Validate if the functions are now running From 3563fb3dcf948d273e1c06b8fcd36395749a9da5 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:30:47 -0500 Subject: [PATCH 009/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 5df4b9659..fd953b8e8 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -47,7 +47,7 @@ jobs: python setup.py extension - name: Build and Run the Docker image run: | - docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} -e AzureWebJobsStorage={{ secrets.PERFTESTSTORAGE }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . + docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage={{ secrets.PERFTESTSTORAGE }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest sleep 10 # host needs some time to start. - name: Validate if the functions are now running From aa3cbcd66ae9e02f0a8f85468c931cb39a138ba1 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:34:59 -0500 Subject: [PATCH 010/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index fd953b8e8..4b62f64ed 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -47,8 +47,8 @@ jobs: python setup.py extension - name: Build and Run the Docker image run: | - docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage={{ secrets.PERFTESTSTORAGE }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . - docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest + docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . + docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage={{ secrets.PERFTESTSTORAGE }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest sleep 10 # host needs some time to start. - name: Validate if the functions are now running run: | From 6095eb43cd5e089ab66e7726f138214ba238c925 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:40:33 -0500 Subject: [PATCH 011/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 4b62f64ed..886c90053 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -48,7 +48,12 @@ jobs: - name: Build and Run the Docker image run: | docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . - docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage={{ secrets.PERFTESTSTORAGE }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest + docker run -d --shm-size="2g" \ + --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} \ + --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} \ + -p ${{ env.PORT }}:80 \ + -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker \ + perfimage:latest sleep 10 # host needs some time to start. - name: Validate if the functions are now running run: | From dc27bd419d430c5f2ebe74d4563e3c8837521796 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:52:54 -0500 Subject: [PATCH 012/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 886c90053..d0410854c 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -47,14 +47,30 @@ jobs: python setup.py extension - name: Build and Run the Docker image run: | + echo "Building Docker image with Python version ${{ env.PYTHON_VERSION }}" docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . + + echo "Checking environment variables..." + echo "PYTHON_VERSION: ${{ env.PYTHON_VERSION }}" + echo "PERFTESTSTORAGE: ${{ secrets.PERFTESTSTORAGE }}" + echo "PORT: ${{ env.PORT }}" + echo "GITHUB_WORKSPACE: $GITHUB_WORKSPACE" + + if [ -z "${{ env.PYTHON_VERSION }}" ] || [ -z "${{ secrets.PERFTESTSTORAGE }}" ] || [ -z "${{ env.PORT }}" ]; then + echo "One or more environment variables are not set. Exiting..." + exit 1 + fi + + echo "Running Docker container..." docker run -d --shm-size="2g" \ --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} \ --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} \ -p ${{ env.PORT }}:80 \ -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker \ perfimage:latest + sleep 10 # host needs some time to start. + - name: Validate if the functions are now running run: | curl --get http://localhost:${PORT}/api/${{ matrix.test_to_run }} From 3b7ee0e83a3a1025fbc24f9f8cf926ee32df996f Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:57:11 -0500 Subject: [PATCH 013/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index d0410854c..afe90f612 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -62,12 +62,7 @@ jobs: fi echo "Running Docker container..." - docker run -d --shm-size="2g" \ - --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} \ - --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} \ - -p ${{ env.PORT }}:80 \ - -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker \ - perfimage:latest + docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} -p ${{ env.PORT }}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest sleep 10 # host needs some time to start. From b04112af7069fc1442f4ed72c69e0ec9b3a73a3f Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 18:04:49 -0500 Subject: [PATCH 014/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index afe90f612..4ee8080de 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -62,8 +62,8 @@ jobs: fi echo "Running Docker container..." - docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} -p ${{ env.PORT }}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest - + # docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} -p ${{ env.PORT }}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest + docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest sleep 10 # host needs some time to start. - name: Validate if the functions are now running From 9a3b35c83087a2f8dbd023e0689ad0bb9ee255da Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 18:10:18 -0500 Subject: [PATCH 015/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 4ee8080de..ac5bc4576 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -9,6 +9,7 @@ env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" PYTHON_VERSION: "3.8" PORT: 8000 + AzureWebJobsStorage: ${{ secrets.PERFTESTSTORAGE }} jobs: build: @@ -63,7 +64,7 @@ jobs: echo "Running Docker container..." # docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} -p ${{ env.PORT }}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest - docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest + docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${AzureWebJobsStorage} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest sleep 10 # host needs some time to start. - name: Validate if the functions are now running From f4292664be9c0170a692b6094be7efb425973516 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 18:17:58 -0500 Subject: [PATCH 016/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index ac5bc4576..2f6e491ed 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -66,7 +66,10 @@ jobs: # docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} -p ${{ env.PORT }}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${AzureWebJobsStorage} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest sleep 10 # host needs some time to start. - + echo "Container ID is $container_id" + echo "Fetching Docker container logs..." + docker logs $container_id + - name: Validate if the functions are now running run: | curl --get http://localhost:${PORT}/api/${{ matrix.test_to_run }} From 5d42f6e4a878d64b30035c53fb62c5e2005d6ada Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 18:24:24 -0500 Subject: [PATCH 017/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 2f6e491ed..8870abc21 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -64,7 +64,7 @@ jobs: echo "Running Docker container..." # docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} -p ${{ env.PORT }}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest - docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${AzureWebJobsStorage} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest + container_id=$(docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${AzureWebJobsStorage} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) sleep 10 # host needs some time to start. echo "Container ID is $container_id" echo "Fetching Docker container logs..." From 0475bf8cc90577014aef5a1745beb9474b56229b Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 18:31:24 -0500 Subject: [PATCH 018/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 8870abc21..9b69c6fdd 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -53,7 +53,7 @@ jobs: echo "Checking environment variables..." echo "PYTHON_VERSION: ${{ env.PYTHON_VERSION }}" - echo "PERFTESTSTORAGE: ${{ secrets.PERFTESTSTORAGE }}" + echo "PERFTESTSTORAGE: ${AzureWebJobsStorage}" echo "PORT: ${{ env.PORT }}" echo "GITHUB_WORKSPACE: $GITHUB_WORKSPACE" From 8088a0d8af2e9fc587cd4a67da767c4631099a44 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 18:37:35 -0500 Subject: [PATCH 019/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 9b69c6fdd..5f9dd79fc 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -63,8 +63,9 @@ jobs: fi echo "Running Docker container..." + storage=${AzureWebJobsStorage} # docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} -p ${{ env.PORT }}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest - container_id=$(docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${AzureWebJobsStorage} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) + container_id=$(docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=storage -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) sleep 10 # host needs some time to start. echo "Container ID is $container_id" echo "Fetching Docker container logs..." From 3f3472389b6e9fb4dfaaeb61f31ca5d611f5efe6 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 18:56:28 -0500 Subject: [PATCH 020/129] Update perf_tests.Dockerfile --- .ci/perf_tests/dockerfiles/perf_tests.Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index a134aadd5..4c5561cf4 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -3,10 +3,10 @@ ARG PYTHON_VERSION=3.8 FROM mcr.microsoft.com/azure-functions/python:4-python$PYTHON_VERSION # Mounting local machines azure-functions-python-worker and azure-functions-python-library onto it -RUN rm -rf /azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker +# RUN rm -rf /azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker # Use the following command to run the docker image with customizible worker and library -VOLUME ["/azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker"] +# VOLUME ["/azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker"] ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ From 13bb394acae08572f5074e650f4200480555fd9e Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 19:14:20 -0500 Subject: [PATCH 021/129] Update perf_tests.Dockerfile --- .ci/perf_tests/dockerfiles/perf_tests.Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index 4c5561cf4..8dddd21b6 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -3,10 +3,10 @@ ARG PYTHON_VERSION=3.8 FROM mcr.microsoft.com/azure-functions/python:4-python$PYTHON_VERSION # Mounting local machines azure-functions-python-worker and azure-functions-python-library onto it -# RUN rm -rf /azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker +RUN rm -rf /azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker # Use the following command to run the docker image with customizible worker and library -# VOLUME ["/azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker"] +VOLUME ["/azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_functions_worker"] ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ @@ -20,6 +20,7 @@ RUN apt-get --quiet update && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ cp -r AzFunctionsPythonPerformance/* /home/site/wwwroot/ && \ - pip install -q -r /home/site/wwwroot/requirements.txt + pip install -q -r /home/site/wwwroot/requirements.txt && \ + echo $AzureWebJobsStorage CMD [ "/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost" ] From d8882d93e4818ff6d603249ab7730c73782e5de3 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 19:19:13 -0500 Subject: [PATCH 022/129] Update perf_tests.Dockerfile --- .ci/perf_tests/dockerfiles/perf_tests.Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index 8dddd21b6..78387c3d4 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -12,7 +12,8 @@ ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ FUNCTIONS_WORKER_PROCESS_COUNT=1 \ AZURE_FUNCTIONS_ENVIRONMENT=Development \ - FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED=1 + FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED=1 \ + AzureWebJobsStorage=None RUN apt-get --quiet update && \ apt-get install --quiet -y git && \ @@ -20,7 +21,6 @@ RUN apt-get --quiet update && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ cp -r AzFunctionsPythonPerformance/* /home/site/wwwroot/ && \ - pip install -q -r /home/site/wwwroot/requirements.txt && \ - echo $AzureWebJobsStorage + pip install -q -r /home/site/wwwroot/requirements.txt CMD [ "/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost" ] From edfe0b91d24790f37201401c68f98a056cde4ec7 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 19:22:23 -0500 Subject: [PATCH 023/129] Update perf_tests.Dockerfile --- .ci/perf_tests/dockerfiles/perf_tests.Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index 78387c3d4..a6989418a 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -15,6 +15,14 @@ ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED=1 \ AzureWebJobsStorage=None +# Validate and print out AzureWebJobsStorage +RUN if [ "$AzureWebJobsStorage" = "None" ]; then \ + echo "Error: AzureWebJobsStorage is not set properly."; \ + exit 1; \ + else \ + echo "AzureWebJobsStorage is set to $AzureWebJobsStorage."; \ + fi + RUN apt-get --quiet update && \ apt-get install --quiet -y git && \ cd /home && \ From 7e0fb2ba43e7ab15cd5ccac25e9ab3a00723efb7 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 19:30:32 -0500 Subject: [PATCH 024/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 5f9dd79fc..04518df56 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -9,11 +9,12 @@ env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" PYTHON_VERSION: "3.8" PORT: 8000 - AzureWebJobsStorage: ${{ secrets.PERFTESTSTORAGE }} + # AzureWebJobsStorage: ${{ secrets.PERFTESTSTORAGE }} jobs: build: runs-on: ubuntu-latest + environment: dev strategy: fail-fast: false matrix: From c74ec1d34d5b15052fa5364f387c2106fb396e22 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 20:00:57 -0500 Subject: [PATCH 025/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 04518df56..059bccab3 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -14,7 +14,7 @@ env: jobs: build: runs-on: ubuntu-latest - environment: dev + environment: test strategy: fail-fast: false matrix: From 9b67694ac83890b26937a3f57ec234cd8be4dac5 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 20:17:11 -0500 Subject: [PATCH 026/129] Update perf_tests.Dockerfile --- .ci/perf_tests/dockerfiles/perf_tests.Dockerfile | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index a6989418a..a134aadd5 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -12,16 +12,7 @@ ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ FUNCTIONS_WORKER_PROCESS_COUNT=1 \ AZURE_FUNCTIONS_ENVIRONMENT=Development \ - FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED=1 \ - AzureWebJobsStorage=None - -# Validate and print out AzureWebJobsStorage -RUN if [ "$AzureWebJobsStorage" = "None" ]; then \ - echo "Error: AzureWebJobsStorage is not set properly."; \ - exit 1; \ - else \ - echo "AzureWebJobsStorage is set to $AzureWebJobsStorage."; \ - fi + FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED=1 RUN apt-get --quiet update && \ apt-get install --quiet -y git && \ From 5b0bddf4d239fef432c67158ad69b2db137d1756 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 20:37:22 -0500 Subject: [PATCH 027/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 059bccab3..77a42a6f8 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -65,6 +65,7 @@ jobs: echo "Running Docker container..." storage=${AzureWebJobsStorage} + echo storage | sed -e 's/\(.\)/\1 /g' # docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} -p ${{ env.PORT }}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest container_id=$(docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=storage -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) sleep 10 # host needs some time to start. From a370113042a7454f3ccbe52198eed5c0c388a14f Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Thu, 4 Jan 2024 20:41:55 -0500 Subject: [PATCH 028/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 77a42a6f8..b876825cd 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -54,7 +54,7 @@ jobs: echo "Checking environment variables..." echo "PYTHON_VERSION: ${{ env.PYTHON_VERSION }}" - echo "PERFTESTSTORAGE: ${AzureWebJobsStorage}" + echo "PERFTESTSTORAGE: ${AzureWebJobsStorage} ${#AzureWebJobsStorage}" echo "PORT: ${{ env.PORT }}" echo "GITHUB_WORKSPACE: $GITHUB_WORKSPACE" From e02cccdfc3b236fce065057e0820b24e38fcb699 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 19:01:19 +0000 Subject: [PATCH 029/129] logging --- .ci/perf_tests/dockerfiles/perf_tests.Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index a134aadd5..31d784781 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -11,6 +11,7 @@ VOLUME ["/azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_ ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ FUNCTIONS_WORKER_PROCESS_COUNT=1 \ + CONTAINER_NAME=perfcontainer \ AZURE_FUNCTIONS_ENVIRONMENT=Development \ FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED=1 From 0bb2b6c8eb76d941b92dcac914d042a50200a398 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 14:28:44 -0500 Subject: [PATCH 030/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index b876825cd..38cabcf9e 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -18,7 +18,7 @@ jobs: strategy: fail-fast: false matrix: - test_to_run: [ SyncHttpTriggerHelloWorld ] + test_to_run: [ SyncHelloWorld ] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ env.PYTHON_VERSION }} From 4ca1a987bbb0ac3b0c347db3a47c1af9b505cf1a Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 14:29:22 -0500 Subject: [PATCH 031/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 38cabcf9e..9e116ecbe 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -64,10 +64,7 @@ jobs: fi echo "Running Docker container..." - storage=${AzureWebJobsStorage} - echo storage | sed -e 's/\(.\)/\1 /g' - # docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=${{ secrets.PERFTESTSTORAGE }} -p ${{ env.PORT }}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest - container_id=$(docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} --env AzureWebJobsStorage=storage -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) + container_id=$(docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) sleep 10 # host needs some time to start. echo "Container ID is $container_id" echo "Fetching Docker container logs..." From 6343921d6d15d0db2d56d823ffa8092fbfd191f1 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 17:03:14 -0500 Subject: [PATCH 032/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 9e116ecbe..ec5c820b5 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -69,6 +69,9 @@ jobs: echo "Container ID is $container_id" echo "Fetching Docker container logs..." docker logs $container_id + worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython' | awk '{print $2}'") + echo "Python worker process id is $worker_pid" + - name: Validate if the functions are now running run: | From c6c2b61e1fd8bda3603da143e0d353398ae1cbc8 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 17:12:50 -0500 Subject: [PATCH 033/129] Update perf_tests.Dockerfile --- .ci/perf_tests/dockerfiles/perf_tests.Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index 31d784781..ea7332c21 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -17,6 +17,7 @@ ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ RUN apt-get --quiet update && \ apt-get install --quiet -y git && \ + apt-get install procps && \ cd /home && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ From c729ca9ec25cda9af2d916d215994d7e36bae654 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 17:27:14 -0500 Subject: [PATCH 034/129] Update perf_tests.Dockerfile --- .ci/perf_tests/dockerfiles/perf_tests.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index ea7332c21..6d52a3656 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -17,7 +17,7 @@ ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ RUN apt-get --quiet update && \ apt-get install --quiet -y git && \ - apt-get install procps && \ + apt-get install -y procps && \ cd /home && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ From f3fe293ddcdb9b548b17655282baa75726b12b8a Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 17:37:49 -0500 Subject: [PATCH 035/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index ec5c820b5..d47f9b7ef 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -69,7 +69,7 @@ jobs: echo "Container ID is $container_id" echo "Fetching Docker container logs..." docker logs $container_id - worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython' | awk '{print $2}'") + worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython'" | awk '{print $2}') echo "Python worker process id is $worker_pid" From 7945de9919d0645f69d801a4a58f444bffdc46b9 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 17:42:42 -0500 Subject: [PATCH 036/129] Update SyncHttpTriggerHelloWorld.js --- .ci/perf_tests/k6scripts/SyncHttpTriggerHelloWorld.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/perf_tests/k6scripts/SyncHttpTriggerHelloWorld.js b/.ci/perf_tests/k6scripts/SyncHttpTriggerHelloWorld.js index 506947610..acb28f563 100644 --- a/.ci/perf_tests/k6scripts/SyncHttpTriggerHelloWorld.js +++ b/.ci/perf_tests/k6scripts/SyncHttpTriggerHelloWorld.js @@ -35,7 +35,7 @@ export let options = { // Main function export default function () { - let response = http.get(`${PROTOCOL}://${HOSTNAME}:${PORT}/api/SyncHttpTriggerHelloWorld`); + let response = http.get(`${PROTOCOL}://${HOSTNAME}:${PORT}/api/SyncHelloWorld`); // check() returns false if any of the specified conditions fail let checkRes = check(response, { @@ -45,4 +45,4 @@ export default function () { // We reverse the check() result since we want to count the failures failureRate.add(!checkRes); -} \ No newline at end of file +} From e6a97c3f60ef63be661a2dbd537905e1bd8fd127 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 17:56:54 -0500 Subject: [PATCH 037/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index d47f9b7ef..715ec3250 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -71,12 +71,34 @@ jobs: docker logs $container_id worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython'" | awk '{print $2}') echo "Python worker process id is $worker_pid" - + pip install py-spy + py-spy record -p $container_id -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 - name: Validate if the functions are now running run: | curl --get http://localhost:${PORT}/api/${{ matrix.test_to_run }} + + - name: Start py-spy in the background + run: | + echo "Starting py-spy in background..." + py-spy record -p $container_id -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 + spy_pid=$! + - name: Run Throughput tests run: | chmod 755 .ci/perf_tests/run-perftests.sh .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} + echo "Tests completed, terminating py-spy..." + kill $spy_pid + + - name: Upload profiling result to artifact + uses: actions/upload-artifact@v2 + with: + name: py-spy-output + path: helloperf.svg + + - name: Create Artifact Link + run: | + echo "You can download the SVG artifact from the Actions run page." + echo "Link to the Actions run page: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" + From b63992b344965d59a52158b8496739be90586c86 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 18:32:37 -0500 Subject: [PATCH 038/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 715ec3250..d2187fa3a 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -71,8 +71,6 @@ jobs: docker logs $container_id worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython'" | awk '{print $2}') echo "Python worker process id is $worker_pid" - pip install py-spy - py-spy record -p $container_id -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 - name: Validate if the functions are now running run: | @@ -81,16 +79,18 @@ jobs: - name: Start py-spy in the background run: | echo "Starting py-spy in background..." - py-spy record -p $container_id -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 - spy_pid=$! + docker exec -it $container_id sh -c "pip install py-spy" + spy_pid=$(docker exec -it $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500") + echo "Py-spy process id is $spy_pid" - name: Run Throughput tests run: | chmod 755 .ci/perf_tests/run-perftests.sh .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} echo "Tests completed, terminating py-spy..." - kill $spy_pid - + docker exec -it $container_id sh -c "kill $spy_pid" + docker cp $container_id:helloperf.svg . + - name: Upload profiling result to artifact uses: actions/upload-artifact@v2 with: From 68c49cd34c00253bb10f15bff1422ce5c8ba861c Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 18:39:19 -0500 Subject: [PATCH 039/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index d2187fa3a..d611515bf 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -71,6 +71,8 @@ jobs: docker logs $container_id worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython'" | awk '{print $2}') echo "Python worker process id is $worker_pid" + echo "container_id=$container_id" >> $GITHUB_ENV + echo "worker_pid=$worker_pid" >> $GITHUB_ENV - name: Validate if the functions are now running run: | @@ -82,6 +84,7 @@ jobs: docker exec -it $container_id sh -c "pip install py-spy" spy_pid=$(docker exec -it $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500") echo "Py-spy process id is $spy_pid" + echo "spy_pid=$spy_pid" >> $GITHUB_ENV - name: Run Throughput tests run: | From fb4b719c3df7b37887bd137bf12398b1229d814a Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 18:47:12 -0500 Subject: [PATCH 040/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index d611515bf..c297c14ad 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -81,6 +81,7 @@ jobs: - name: Start py-spy in the background run: | echo "Starting py-spy in background..." + echo "Container id is $container_id" docker exec -it $container_id sh -c "pip install py-spy" spy_pid=$(docker exec -it $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500") echo "Py-spy process id is $spy_pid" From 88f84222066c9c32ebfee90a67d747f910b4b080 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 18:54:20 -0500 Subject: [PATCH 041/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index c297c14ad..15de9dedc 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -82,8 +82,8 @@ jobs: run: | echo "Starting py-spy in background..." echo "Container id is $container_id" - docker exec -it $container_id sh -c "pip install py-spy" - spy_pid=$(docker exec -it $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500") + docker exec $container_id sh -c "pip install py-spy" + spy_pid=$(docker exec $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500") echo "Py-spy process id is $spy_pid" echo "spy_pid=$spy_pid" >> $GITHUB_ENV @@ -92,7 +92,7 @@ jobs: chmod 755 .ci/perf_tests/run-perftests.sh .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} echo "Tests completed, terminating py-spy..." - docker exec -it $container_id sh -c "kill $spy_pid" + docker exec $container_id sh -c "kill $spy_pid" docker cp $container_id:helloperf.svg . - name: Upload profiling result to artifact From 78d1a8c1b76a292a313c6368aeecec1a05eba2bb Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 19:01:38 -0500 Subject: [PATCH 042/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 15de9dedc..29018c6d4 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -64,7 +64,7 @@ jobs: fi echo "Running Docker container..." - container_id=$(docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) + container_id=$(docker run -d --privileged --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) sleep 10 # host needs some time to start. echo "Container ID is $container_id" echo "Fetching Docker container logs..." @@ -83,7 +83,7 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - spy_pid=$(docker exec $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500") + spy_pid=$(docker exec $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 & echo $!") echo "Py-spy process id is $spy_pid" echo "spy_pid=$spy_pid" >> $GITHUB_ENV From 0759724d587f01b254a5e45b2528840d2a9614d5 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 21:44:00 -0500 Subject: [PATCH 043/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 29018c6d4..6c06a2e7e 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -83,8 +83,8 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - spy_pid=$(docker exec $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 & echo $!") - echo "Py-spy process id is $spy_pid" + docker exec $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500" + py_spy_id=$(docker exec $container_id sh -c "ps aux | grep 'py-spy record'" | awk '{print $2}') echo "spy_pid=$spy_pid" >> $GITHUB_ENV - name: Run Throughput tests @@ -92,7 +92,7 @@ jobs: chmod 755 .ci/perf_tests/run-perftests.sh .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} echo "Tests completed, terminating py-spy..." - docker exec $container_id sh -c "kill $spy_pid" + docker exec $container_id sh -c "kill -SIGINT $spy_pid" docker cp $container_id:helloperf.svg . - name: Upload profiling result to artifact From 3de22b9e39ffc4ebee2418e9472642679b44a959 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 21:50:01 -0500 Subject: [PATCH 044/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 6c06a2e7e..afac50ef6 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -83,7 +83,8 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - docker exec $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 &" + sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep 'py-spy record'" | awk '{print $2}') echo "spy_pid=$spy_pid" >> $GITHUB_ENV From 1cc2b23b931a7e18a0aff777453c9a74844a0bc4 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sat, 6 Jan 2024 02:58:48 +0000 Subject: [PATCH 045/129] fix --- .../{SyncHttpTriggerHelloWorld.js => SyncHttpHelloWorld.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .ci/perf_tests/k6scripts/{SyncHttpTriggerHelloWorld.js => SyncHttpHelloWorld.js} (100%) diff --git a/.ci/perf_tests/k6scripts/SyncHttpTriggerHelloWorld.js b/.ci/perf_tests/k6scripts/SyncHttpHelloWorld.js similarity index 100% rename from .ci/perf_tests/k6scripts/SyncHttpTriggerHelloWorld.js rename to .ci/perf_tests/k6scripts/SyncHttpHelloWorld.js From fba036a1e2a68526fa36cb7f7380de6ef848c578 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sat, 6 Jan 2024 03:06:09 +0000 Subject: [PATCH 046/129] rename --- .../k6scripts/{SyncHttpHelloWorld.js => SyncHelloWorld.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .ci/perf_tests/k6scripts/{SyncHttpHelloWorld.js => SyncHelloWorld.js} (100%) diff --git a/.ci/perf_tests/k6scripts/SyncHttpHelloWorld.js b/.ci/perf_tests/k6scripts/SyncHelloWorld.js similarity index 100% rename from .ci/perf_tests/k6scripts/SyncHttpHelloWorld.js rename to .ci/perf_tests/k6scripts/SyncHelloWorld.js From 34014f1777322e8bd1be50606fb26ace96160388 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 22:20:23 -0500 Subject: [PATCH 047/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index afac50ef6..f13233111 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -93,7 +93,7 @@ jobs: chmod 755 .ci/perf_tests/run-perftests.sh .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} echo "Tests completed, terminating py-spy..." - docker exec $container_id sh -c "kill -SIGINT $spy_pid" + docker exec $container_id sh -c "kill -2 $spy_pid" docker cp $container_id:helloperf.svg . - name: Upload profiling result to artifact From 060fd4bd8789aff58c464854a7a2052cfd5c1ea1 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 22:31:04 -0500 Subject: [PATCH 048/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index f13233111..14363e91d 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -93,7 +93,7 @@ jobs: chmod 755 .ci/perf_tests/run-perftests.sh .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} echo "Tests completed, terminating py-spy..." - docker exec $container_id sh -c "kill -2 $spy_pid" + docker exec $container_id sh -c "kill -n 2 $spy_pid" docker cp $container_id:helloperf.svg . - name: Upload profiling result to artifact From 242bc15cf20a2645db1a1b4c590050e8d8905de0 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 22:49:32 -0500 Subject: [PATCH 049/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 14363e91d..40897e0bc 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -93,7 +93,8 @@ jobs: chmod 755 .ci/perf_tests/run-perftests.sh .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} echo "Tests completed, terminating py-spy..." - docker exec $container_id sh -c "kill -n 2 $spy_pid" + echo "Py-Spy pid is $spy_pid" + docker exec $container_id sh -c "kill -2 $spy_pid" docker cp $container_id:helloperf.svg . - name: Upload profiling result to artifact From 05ad2acb2af7be0bb65a56b6391537429d19ca2e Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 22:59:56 -0500 Subject: [PATCH 050/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 40897e0bc..183c37156 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -85,16 +85,16 @@ jobs: docker exec $container_id sh -c "pip install py-spy" docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 &" sleep 2 # Give it a moment to start - py_spy_id=$(docker exec $container_id sh -c "ps aux | grep 'py-spy record'" | awk '{print $2}') - echo "spy_pid=$spy_pid" >> $GITHUB_ENV + py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') + echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV - name: Run Throughput tests run: | chmod 755 .ci/perf_tests/run-perftests.sh .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} echo "Tests completed, terminating py-spy..." - echo "Py-Spy pid is $spy_pid" - docker exec $container_id sh -c "kill -2 $spy_pid" + echo "Py-Spy pid is $py_spy_id" + docker exec $container_id sh -c "kill -2 $py_spy_id" docker cp $container_id:helloperf.svg . - name: Upload profiling result to artifact From e14ddb5fdec3806b3bada6470c3781bdf99a0b60 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 23:07:40 -0500 Subject: [PATCH 051/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 183c37156..f2496fdcc 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -83,7 +83,7 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV @@ -95,7 +95,8 @@ jobs: echo "Tests completed, terminating py-spy..." echo "Py-Spy pid is $py_spy_id" docker exec $container_id sh -c "kill -2 $py_spy_id" - docker cp $container_id:helloperf.svg . + docker cp $container_id:/home/site/wwwroot/helloperf.svg . + ls -ltr - name: Upload profiling result to artifact uses: actions/upload-artifact@v2 From 7757eb114deff28ba5b4835e861cc7b74924d137 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 23:15:27 -0500 Subject: [PATCH 052/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index f2496fdcc..28fcabd65 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -95,8 +95,9 @@ jobs: echo "Tests completed, terminating py-spy..." echo "Py-Spy pid is $py_spy_id" docker exec $container_id sh -c "kill -2 $py_spy_id" + docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" + docker exec $container_id sh -c "ls -ltr" docker cp $container_id:/home/site/wwwroot/helloperf.svg . - ls -ltr - name: Upload profiling result to artifact uses: actions/upload-artifact@v2 From 32f19df0841dc30918b261f751eef0ef838b7cf5 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Fri, 5 Jan 2024 23:29:31 -0500 Subject: [PATCH 053/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 28fcabd65..0c31a0ca8 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -83,7 +83,7 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 60 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV @@ -94,9 +94,10 @@ jobs: .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} echo "Tests completed, terminating py-spy..." echo "Py-Spy pid is $py_spy_id" - docker exec $container_id sh -c "kill -2 $py_spy_id" + # docker exec $container_id sh -c "kill -2 $py_spy_id" docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" docker exec $container_id sh -c "ls -ltr" + sleep 2 docker cp $container_id:/home/site/wwwroot/helloperf.svg . - name: Upload profiling result to artifact From 59c3c0e4bb8ca3f202a5c6ba144d5cb880f24bff Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sat, 6 Jan 2024 21:54:09 -0500 Subject: [PATCH 054/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 0c31a0ca8..de7761c80 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -97,7 +97,7 @@ jobs: # docker exec $container_id sh -c "kill -2 $py_spy_id" docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" docker exec $container_id sh -c "ls -ltr" - sleep 2 + sleep 40 docker cp $container_id:/home/site/wwwroot/helloperf.svg . - name: Upload profiling result to artifact From 415b591d179f8e2056370153f4d959b88f70e18a Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sat, 6 Jan 2024 22:25:05 -0500 Subject: [PATCH 055/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index de7761c80..3695f7f28 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -95,6 +95,8 @@ jobs: echo "Tests completed, terminating py-spy..." echo "Py-Spy pid is $py_spy_id" # docker exec $container_id sh -c "kill -2 $py_spy_id" + py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') + echo "Py-Spy pid is $py_spy_id" docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" docker exec $container_id sh -c "ls -ltr" sleep 40 From 5088cc82e85b340e7459f96ebaaf218f2c735304 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sat, 6 Jan 2024 23:04:11 -0500 Subject: [PATCH 056/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 3695f7f28..758a8f0a1 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -83,7 +83,7 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 60 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 40 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV From 8325a994e6bda6a5bef2287a5a74fa8ce485f057 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sat, 6 Jan 2024 23:11:52 -0500 Subject: [PATCH 057/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 758a8f0a1..54c194da2 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -97,9 +97,9 @@ jobs: # docker exec $container_id sh -c "kill -2 $py_spy_id" py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" + sleep 40 docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" docker exec $container_id sh -c "ls -ltr" - sleep 40 docker cp $container_id:/home/site/wwwroot/helloperf.svg . - name: Upload profiling result to artifact From e73b25ef34b6179b01aa63b3aff5a15939db0049 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sat, 6 Jan 2024 23:40:14 -0500 Subject: [PATCH 058/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 54c194da2..11f4bf750 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -83,7 +83,7 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 40 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 30 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV @@ -97,9 +97,8 @@ jobs: # docker exec $container_id sh -c "kill -2 $py_spy_id" py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" - sleep 40 docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" - docker exec $container_id sh -c "ls -ltr" + docker exec $container_id sh -c "find / -name helloperf.svg" docker cp $container_id:/home/site/wwwroot/helloperf.svg . - name: Upload profiling result to artifact From 896d54d0117bc6d6411106b261050d6f1476ae20 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sun, 7 Jan 2024 11:59:08 -0500 Subject: [PATCH 059/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 11f4bf750..8f8d92af0 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -98,7 +98,7 @@ jobs: py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" - docker exec $container_id sh -c "find / -name helloperf.svg" + docker exec $container_id sh -c "find / -name helloperf.svg -not -path '/proc/*' -not -path '/sys/*' -not -path '/dev/*'" docker cp $container_id:/home/site/wwwroot/helloperf.svg . - name: Upload profiling result to artifact From c6bcafb24d80ac9ca33d010fd5fc6e5b281cd42f Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sun, 7 Jan 2024 12:07:18 -0500 Subject: [PATCH 060/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 8f8d92af0..3414b851a 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -83,7 +83,7 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 30 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV From 04e594b436d94fc9d4ba8d21a909f3f9735a6731 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sun, 7 Jan 2024 12:07:36 -0500 Subject: [PATCH 061/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 3414b851a..e0189872f 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -98,7 +98,7 @@ jobs: py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" - docker exec $container_id sh -c "find / -name helloperf.svg -not -path '/proc/*' -not -path '/sys/*' -not -path '/dev/*'" + # docker exec $container_id sh -c "find / -name helloperf.svg -not -path '/proc/*' -not -path '/sys/*' -not -path '/dev/*'" docker cp $container_id:/home/site/wwwroot/helloperf.svg . - name: Upload profiling result to artifact From 7cdeb1e3512099f310b30be0ec0cbe7d74d49d54 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sun, 7 Jan 2024 12:26:18 -0500 Subject: [PATCH 062/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index e0189872f..e40b0459f 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -84,6 +84,7 @@ jobs: echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5 &" + docker exec $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV From 38ee2b70cdb0adfd938563c6832fefa75341e959 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sun, 7 Jan 2024 12:37:17 -0500 Subject: [PATCH 063/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index e40b0459f..621404333 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -83,8 +83,9 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5 &" - docker exec $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5" + # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5 > /home/site/wwwroot/py-spy.log 2>&1 &" + # docker exec $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV @@ -94,6 +95,7 @@ jobs: chmod 755 .ci/perf_tests/run-perftests.sh .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} echo "Tests completed, terminating py-spy..." + docker exec $container_id cat /home/site/wwwroot/py-spy.log echo "Py-Spy pid is $py_spy_id" # docker exec $container_id sh -c "kill -2 $py_spy_id" py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') From fdbf460bd87d3acb7c6c344706b7a112575af5ee Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sun, 7 Jan 2024 12:44:35 -0500 Subject: [PATCH 064/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 621404333..f61f57190 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -84,7 +84,7 @@ jobs: echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5 &" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5 > /home/site/wwwroot/py-spy.log 2>&1 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" # docker exec $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') @@ -97,7 +97,7 @@ jobs: echo "Tests completed, terminating py-spy..." docker exec $container_id cat /home/site/wwwroot/py-spy.log echo "Py-Spy pid is $py_spy_id" - # docker exec $container_id sh -c "kill -2 $py_spy_id" + docker exec $container_id sh -c "kill -2 $py_spy_id" py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" From aa94fa709dd9397a9d658cf50a7b1bd8e9f91efb Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sun, 7 Jan 2024 15:58:38 -0500 Subject: [PATCH 065/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index f61f57190..59fe57420 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -25,14 +25,14 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ env.PYTHON_VERSION }} - - name: Set up Dotnet 2.x - uses: actions/setup-dotnet@v1 - with: - dotnet-version: '3.1.405' - - name: Set up Dotnet 6.x - uses: actions/setup-dotnet@v1 - with: - dotnet-version: '6.x' + # - name: Set up Dotnet 2.x + # uses: actions/setup-dotnet@v1 + # with: + # dotnet-version: '3.1.405' + # - name: Set up Dotnet 6.x + # uses: actions/setup-dotnet@v1 + # with: + # dotnet-version: '6.x' - name: Setup k6 for throughput testing run: | cd $GITHUB_WORKSPACE From 3621ecee267dbc538b71e152e4393927aa2bbdae Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sun, 7 Jan 2024 16:18:20 -0500 Subject: [PATCH 066/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 59fe57420..6b3d96f51 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -25,14 +25,10 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ env.PYTHON_VERSION }} - # - name: Set up Dotnet 2.x - # uses: actions/setup-dotnet@v1 - # with: - # dotnet-version: '3.1.405' - # - name: Set up Dotnet 6.x - # uses: actions/setup-dotnet@v1 - # with: - # dotnet-version: '6.x' + - name: Use Node.js + uses: actions/setup-node@v2 + with: + node-version: 'node' - name: Setup k6 for throughput testing run: | cd $GITHUB_WORKSPACE From ee0b5102010dcc9129e93b68214223d27c23a43e Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sun, 7 Jan 2024 16:29:58 -0500 Subject: [PATCH 067/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 6b3d96f51..9fdd70c9a 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -28,7 +28,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v2 with: - node-version: 'node' + node-version: 'latest' - name: Setup k6 for throughput testing run: | cd $GITHUB_WORKSPACE From adedd729d5703587b46a52074971ef0f91daadc3 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Sun, 7 Jan 2024 23:17:13 -0500 Subject: [PATCH 068/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 9fdd70c9a..a6f5b2a1d 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -9,7 +9,6 @@ env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" PYTHON_VERSION: "3.8" PORT: 8000 - # AzureWebJobsStorage: ${{ secrets.PERFTESTSTORAGE }} jobs: build: @@ -25,10 +24,6 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ env.PYTHON_VERSION }} - - name: Use Node.js - uses: actions/setup-node@v2 - with: - node-version: 'latest' - name: Setup k6 for throughput testing run: | cd $GITHUB_WORKSPACE @@ -48,17 +43,6 @@ jobs: echo "Building Docker image with Python version ${{ env.PYTHON_VERSION }}" docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . - echo "Checking environment variables..." - echo "PYTHON_VERSION: ${{ env.PYTHON_VERSION }}" - echo "PERFTESTSTORAGE: ${AzureWebJobsStorage} ${#AzureWebJobsStorage}" - echo "PORT: ${{ env.PORT }}" - echo "GITHUB_WORKSPACE: $GITHUB_WORKSPACE" - - if [ -z "${{ env.PYTHON_VERSION }}" ] || [ -z "${{ secrets.PERFTESTSTORAGE }}" ] || [ -z "${{ env.PORT }}" ]; then - echo "One or more environment variables are not set. Exiting..." - exit 1 - fi - echo "Running Docker container..." container_id=$(docker run -d --privileged --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) sleep 10 # host needs some time to start. @@ -81,7 +65,6 @@ jobs: docker exec $container_id sh -c "pip install py-spy" # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5 &" docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" - # docker exec $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV @@ -96,8 +79,7 @@ jobs: docker exec $container_id sh -c "kill -2 $py_spy_id" py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" - docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" - # docker exec $container_id sh -c "find / -name helloperf.svg -not -path '/proc/*' -not -path '/sys/*' -not -path '/dev/*'" + # docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" docker cp $container_id:/home/site/wwwroot/helloperf.svg . - name: Upload profiling result to artifact From a7345e4d28ba988755b8db09feddbf34090d8521 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Mon, 8 Jan 2024 20:06:04 -0500 Subject: [PATCH 069/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index a6f5b2a1d..d916177fd 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -2,8 +2,8 @@ name: Throughput testing workflow on: workflow_dispatch: - pull_request: - branches: [ dev ] + # pull_request: + # branches: [ dev ] env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" From 661b2eaa8db6a9fcffa89abf3f5231c6dc6d29ae Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Mon, 8 Jan 2024 20:13:10 -0500 Subject: [PATCH 070/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index d916177fd..ec27b16ee 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -2,8 +2,6 @@ name: Throughput testing workflow on: workflow_dispatch: - # pull_request: - # branches: [ dev ] env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" From f1e3c022fe932e105e6f1ea0457e3549c2f3f958 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Mon, 8 Jan 2024 21:54:17 -0500 Subject: [PATCH 071/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 33 +++++++++++++++--------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index ec27b16ee..3818b906b 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -61,8 +61,9 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 --duration 5 &" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" + docker exec $container_id sh -c "mkdir /profiling_reports" + # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /profiling_reports/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV @@ -77,17 +78,25 @@ jobs: docker exec $container_id sh -c "kill -2 $py_spy_id" py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" - # docker exec $container_id sh -c "ls -ltr /home/site/wwwroot" - docker cp $container_id:/home/site/wwwroot/helloperf.svg . + # docker exec $container_id sh -c "ls -ltr /profiling_reports" + docker cp $container_id:/profiling_reports/helloperf.svg . - - name: Upload profiling result to artifact - uses: actions/upload-artifact@v2 + - name: Upload SVG to Azure Blob Storage + uses: bacongobbler/azure-blob-storage-upload@v3.0.0 with: - name: py-spy-output - path: helloperf.svg + source_dir: 'profiling_reports' # Directory containing the helloperf.svg file + container_name: 'profiling' + connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} + sync: false - - name: Create Artifact Link - run: | - echo "You can download the SVG artifact from the Actions run page." - echo "Link to the Actions run page: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" + # - name: Upload profiling result to artifact + # uses: actions/upload-artifact@v2 + # with: + # name: py-spy-output + # path: helloperf.svg + + # - name: Create Artifact Link + # run: | + # echo "You can download the SVG artifact from the Actions run page." + # echo "Link to the Actions run page: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" From 1a26d4e4e43f8c20a92bb64becfa78b41053dcb6 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Mon, 8 Jan 2024 22:18:57 -0500 Subject: [PATCH 072/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 3818b906b..75c12a33f 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -87,7 +87,6 @@ jobs: source_dir: 'profiling_reports' # Directory containing the helloperf.svg file container_name: 'profiling' connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} - sync: false # - name: Upload profiling result to artifact # uses: actions/upload-artifact@v2 From 586cc9009cf4d2b7de2888ace67cf84c0cae3a3d Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Mon, 8 Jan 2024 22:36:52 -0500 Subject: [PATCH 073/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 75c12a33f..0e18f0917 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -76,10 +76,12 @@ jobs: docker exec $container_id cat /home/site/wwwroot/py-spy.log echo "Py-Spy pid is $py_spy_id" docker exec $container_id sh -c "kill -2 $py_spy_id" + sleep 2 py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" - # docker exec $container_id sh -c "ls -ltr /profiling_reports" - docker cp $container_id:/profiling_reports/helloperf.svg . + mkdir /profiling_reports + docker cp $container_id:/profiling_reports/helloperf.svg /profiling_reports + ls -ltr /profiling_reports - name: Upload SVG to Azure Blob Storage uses: bacongobbler/azure-blob-storage-upload@v3.0.0 @@ -87,7 +89,7 @@ jobs: source_dir: 'profiling_reports' # Directory containing the helloperf.svg file container_name: 'profiling' connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} - + sync: 'false' # - name: Upload profiling result to artifact # uses: actions/upload-artifact@v2 # with: From 799548032ad289fc5589426b83882af4f88b9116 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Mon, 8 Jan 2024 22:54:43 -0500 Subject: [PATCH 074/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 0e18f0917..f4da83b4b 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -61,9 +61,9 @@ jobs: echo "Starting py-spy in background..." echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" - docker exec $container_id sh -c "mkdir /profiling_reports" + docker exec $container_id sh -c "mkdir /home/profiling_reports" # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /profiling_reports/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV @@ -79,9 +79,9 @@ jobs: sleep 2 py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" - mkdir /profiling_reports - docker cp $container_id:/profiling_reports/helloperf.svg /profiling_reports - ls -ltr /profiling_reports + mkdir /home/profiling_reports + docker cp $container_id:/home/profiling_reports/helloperf.svg /profiling_reports + ls -ltr /home/profiling_reports - name: Upload SVG to Azure Blob Storage uses: bacongobbler/azure-blob-storage-upload@v3.0.0 From 2067472c3ed417e3b8553df38263fafb20569352 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Mon, 8 Jan 2024 22:55:31 -0500 Subject: [PATCH 075/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index f4da83b4b..d85d4d5ee 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -80,7 +80,7 @@ jobs: py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" mkdir /home/profiling_reports - docker cp $container_id:/home/profiling_reports/helloperf.svg /profiling_reports + docker cp $container_id:/home/profiling_reports/helloperf.svg /home/profiling_reports ls -ltr /home/profiling_reports - name: Upload SVG to Azure Blob Storage From f31a786cb5191edc0a2dcf6ba05ab1894a26f989 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Mon, 8 Jan 2024 22:56:00 -0500 Subject: [PATCH 076/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index d85d4d5ee..f6923427e 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -86,7 +86,7 @@ jobs: - name: Upload SVG to Azure Blob Storage uses: bacongobbler/azure-blob-storage-upload@v3.0.0 with: - source_dir: 'profiling_reports' # Directory containing the helloperf.svg file + source_dir: 'home/profiling_reports' # Directory containing the helloperf.svg file container_name: 'profiling' connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} sync: 'false' From aea1be61a2121504976995dc5654d954adb4e024 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Mon, 8 Jan 2024 23:11:58 -0500 Subject: [PATCH 077/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index f6923427e..698b41def 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -79,7 +79,7 @@ jobs: sleep 2 py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" - mkdir /home/profiling_reports + mkdir -p $GITHUB_WORKSPACE/profiling_reports docker cp $container_id:/home/profiling_reports/helloperf.svg /home/profiling_reports ls -ltr /home/profiling_reports From f11df87e02d6caeafe8a0aa16a39b664bfd9ef1a Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Mon, 8 Jan 2024 23:27:45 -0500 Subject: [PATCH 078/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 698b41def..2297aa929 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -79,7 +79,8 @@ jobs: sleep 2 py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" - mkdir -p $GITHUB_WORKSPACE/profiling_reports + chmod 777 $GITHUB_WORKSPACE/home + mkdir -p $GITHUB_WORKSPACE/home/profiling_reports docker cp $container_id:/home/profiling_reports/helloperf.svg /home/profiling_reports ls -ltr /home/profiling_reports From a030f1cb50f659128c76958c79644fc5b82ffcad Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 10:32:39 -0500 Subject: [PATCH 079/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 2297aa929..e3212b74c 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -79,15 +79,15 @@ jobs: sleep 2 py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" - chmod 777 $GITHUB_WORKSPACE/home - mkdir -p $GITHUB_WORKSPACE/home/profiling_reports - docker cp $container_id:/home/profiling_reports/helloperf.svg /home/profiling_reports - ls -ltr /home/profiling_reports + mkdir -p $GITHUB_WORKSPACE/profiling_reports + chmod 777 $GITHUB_WORKSPACE/profiling_reports + docker cp $container_id:/home/profiling_reports/helloperf.svg /profiling_reports + ls -ltr /profiling_reports - name: Upload SVG to Azure Blob Storage uses: bacongobbler/azure-blob-storage-upload@v3.0.0 with: - source_dir: 'home/profiling_reports' # Directory containing the helloperf.svg file + source_dir: 'profiling_reports' # Directory containing the helloperf.svg file container_name: 'profiling' connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} sync: 'false' From ebd9edac918b64a009ec70db276210337308ed52 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 10:55:15 -0500 Subject: [PATCH 080/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index e3212b74c..78585e0a1 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -79,10 +79,10 @@ jobs: sleep 2 py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "Py-Spy pid is $py_spy_id" - mkdir -p $GITHUB_WORKSPACE/profiling_reports - chmod 777 $GITHUB_WORKSPACE/profiling_reports - docker cp $container_id:/home/profiling_reports/helloperf.svg /profiling_reports - ls -ltr /profiling_reports + mkdir profiling_reports + chmod 777 profiling_reports + docker cp $container_id:/home/profiling_reports/helloperf.svg profiling_reports + ls -ltr profiling_reports - name: Upload SVG to Azure Blob Storage uses: bacongobbler/azure-blob-storage-upload@v3.0.0 From 4999eb916b9061e88cf1fa6b5571c68735fb450e Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 11:11:29 -0500 Subject: [PATCH 081/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 78585e0a1..2a26b171e 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -91,6 +91,33 @@ jobs: container_name: 'profiling' connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} sync: 'false' + + - name: Generate Blob SAS URL + uses: Azure/cli@v1 + with: + azcliversion: latest + inlineScript: | + end=`date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ'` + sas=$(az storage blob generate-sas \ + --container-name 'profiling' \ + --name helloperf.svg \ + --permissions r \ + --expiry $end \ + --output tsv \ + --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) + url=$(az storage blob url \ + --container-name 'profiling' \ + --name helloperf.svg \ + --output tsv \ + --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) + sas_url="$url?$sas" + echo "SVG SAS URL: $sas_url" + echo "sas_url=$sas_url" >> $GITHUB_ENV + + - name: Output SVG SAS URL + run: | + echo "You can view the SVG image at: ${{ env.sas_url }}" + # - name: Upload profiling result to artifact # uses: actions/upload-artifact@v2 # with: From b20eaae5df030673fd3b01b765cafa6da43619bb Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 12:36:32 -0500 Subject: [PATCH 082/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 2a26b171e..cc5028016 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -11,7 +11,6 @@ env: jobs: build: runs-on: ubuntu-latest - environment: test strategy: fail-fast: false matrix: @@ -62,11 +61,13 @@ jobs: echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" docker exec $container_id sh -c "mkdir /home/profiling_reports" - # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/helloperf.svg -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" + report_name="azpyfuncpprofiling_${{ github.run_id }}.svg" + # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV + echo "report_name=$report_name" >> $GITHUB_ENV - name: Run Throughput tests run: | @@ -81,13 +82,13 @@ jobs: echo "Py-Spy pid is $py_spy_id" mkdir profiling_reports chmod 777 profiling_reports - docker cp $container_id:/home/profiling_reports/helloperf.svg profiling_reports + docker cp $container_id:/home/profiling_reports/$report_name profiling_reports ls -ltr profiling_reports - name: Upload SVG to Azure Blob Storage uses: bacongobbler/azure-blob-storage-upload@v3.0.0 with: - source_dir: 'profiling_reports' # Directory containing the helloperf.svg file + source_dir: 'profiling_reports' # Directory containing the $report_name file container_name: 'profiling' connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} sync: 'false' @@ -100,14 +101,14 @@ jobs: end=`date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ'` sas=$(az storage blob generate-sas \ --container-name 'profiling' \ - --name helloperf.svg \ + --name $report_name \ --permissions r \ --expiry $end \ --output tsv \ --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) url=$(az storage blob url \ --container-name 'profiling' \ - --name helloperf.svg \ + --name $report_name \ --output tsv \ --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) sas_url="$url?$sas" From 8cf650299d720a8cc7c3e5392c995e299ee7e266 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 12:45:41 -0500 Subject: [PATCH 083/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index cc5028016..55f7a94a7 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -98,7 +98,7 @@ jobs: with: azcliversion: latest inlineScript: | - end=`date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ'` + end=$(date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ' 2>/dev/null || date -u -v+30M '+%Y-%m-%dT%H:%MZ') sas=$(az storage blob generate-sas \ --container-name 'profiling' \ --name $report_name \ From 5751a82a4808bf8afd7bd0f9898f284588ccc08c Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 12:57:55 -0500 Subject: [PATCH 084/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 55f7a94a7..13fcb2969 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -23,6 +23,8 @@ jobs: python-version: ${{ env.PYTHON_VERSION }} - name: Setup k6 for throughput testing run: | + current_time=$(date -u '+%Y-%m-%dT%H:%MZ') + end=$(date -u -d "$current_time 30 minutes" '+%Y-%m-%dT%H:%MZ' 2>/dev/null || date -u -D '%Y-%m-%dT%H:%MZ' -d "+30 minutes" '+%Y-%m-%dT%H:%MZ') cd $GITHUB_WORKSPACE curl https://github.com/loadimpact/k6/releases/download/v0.28.0/k6-v0.28.0-linux64.tar.gz -L | tar xvz --strip-components 1 chmod 755 ./k6 From efe0569779be5ce6e1007e2256f31eacb3cebdf8 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 12:59:39 -0500 Subject: [PATCH 085/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 13fcb2969..d966ff9fb 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -23,8 +23,6 @@ jobs: python-version: ${{ env.PYTHON_VERSION }} - name: Setup k6 for throughput testing run: | - current_time=$(date -u '+%Y-%m-%dT%H:%MZ') - end=$(date -u -d "$current_time 30 minutes" '+%Y-%m-%dT%H:%MZ' 2>/dev/null || date -u -D '%Y-%m-%dT%H:%MZ' -d "+30 minutes" '+%Y-%m-%dT%H:%MZ') cd $GITHUB_WORKSPACE curl https://github.com/loadimpact/k6/releases/download/v0.28.0/k6-v0.28.0-linux64.tar.gz -L | tar xvz --strip-components 1 chmod 755 ./k6 @@ -100,7 +98,8 @@ jobs: with: azcliversion: latest inlineScript: | - end=$(date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ' 2>/dev/null || date -u -v+30M '+%Y-%m-%dT%H:%MZ') + current_time=$(date -u '+%Y-%m-%dT%H:%MZ') + end=$(date -u -d "$current_time 30 minutes" '+%Y-%m-%dT%H:%MZ' 2>/dev/null || date -u -D '%Y-%m-%dT%H:%MZ' -d "+30 minutes" '+%Y-%m-%dT%H:%MZ') sas=$(az storage blob generate-sas \ --container-name 'profiling' \ --name $report_name \ From 5384722df588011a5256a6447c17cf09e9996a8d Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:10:48 -0500 Subject: [PATCH 086/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index d966ff9fb..0f0ac7f74 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -84,6 +84,11 @@ jobs: chmod 777 profiling_reports docker cp $container_id:/home/profiling_reports/$report_name profiling_reports ls -ltr profiling_reports + + # calculate sas report end time + current_time=$(date -u '+%Y-%m-%dT%H:%MZ') + end_time=$(date -u -d "$current_time 30 minutes" '+%Y-%m-%dT%H:%MZ' 2>/dev/null || date -u -D '%Y-%m-%dT%H:%MZ' -d "+30 minutes" '+%Y-%m-%dT%H:%MZ') + echo "end_time=$end_time" >> $GITHUB_ENV - name: Upload SVG to Azure Blob Storage uses: bacongobbler/azure-blob-storage-upload@v3.0.0 @@ -98,13 +103,11 @@ jobs: with: azcliversion: latest inlineScript: | - current_time=$(date -u '+%Y-%m-%dT%H:%MZ') - end=$(date -u -d "$current_time 30 minutes" '+%Y-%m-%dT%H:%MZ' 2>/dev/null || date -u -D '%Y-%m-%dT%H:%MZ' -d "+30 minutes" '+%Y-%m-%dT%H:%MZ') sas=$(az storage blob generate-sas \ --container-name 'profiling' \ --name $report_name \ --permissions r \ - --expiry $end \ + --expiry $end_time \ --output tsv \ --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) url=$(az storage blob url \ From fd2fdf5305d713f6dce5d1e69f900d774aedd10a Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:20:57 -0500 Subject: [PATCH 087/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 169 +++++++++++++---------- 1 file changed, 94 insertions(+), 75 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 0f0ac7f74..d71d49582 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -27,77 +27,6 @@ jobs: curl https://github.com/loadimpact/k6/releases/download/v0.28.0/k6-v0.28.0-linux64.tar.gz -L | tar xvz --strip-components 1 chmod 755 ./k6 ./k6 version - - name: Install dependencies and the worker - run: | - python -m pip install -q --upgrade pip - python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U -e .[dev] - python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U azure-functions --pre - python setup.py build - python setup.py webhost --branch-name=dev - python setup.py extension - - name: Build and Run the Docker image - run: | - echo "Building Docker image with Python version ${{ env.PYTHON_VERSION }}" - docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . - - echo "Running Docker container..." - container_id=$(docker run -d --privileged --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) - sleep 10 # host needs some time to start. - echo "Container ID is $container_id" - echo "Fetching Docker container logs..." - docker logs $container_id - worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython'" | awk '{print $2}') - echo "Python worker process id is $worker_pid" - echo "container_id=$container_id" >> $GITHUB_ENV - echo "worker_pid=$worker_pid" >> $GITHUB_ENV - - - name: Validate if the functions are now running - run: | - curl --get http://localhost:${PORT}/api/${{ matrix.test_to_run }} - - - name: Start py-spy in the background - run: | - echo "Starting py-spy in background..." - echo "Container id is $container_id" - docker exec $container_id sh -c "pip install py-spy" - docker exec $container_id sh -c "mkdir /home/profiling_reports" - report_name="azpyfuncpprofiling_${{ github.run_id }}.svg" - # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" - sleep 2 # Give it a moment to start - py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') - echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV - echo "report_name=$report_name" >> $GITHUB_ENV - - - name: Run Throughput tests - run: | - chmod 755 .ci/perf_tests/run-perftests.sh - .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} - echo "Tests completed, terminating py-spy..." - docker exec $container_id cat /home/site/wwwroot/py-spy.log - echo "Py-Spy pid is $py_spy_id" - docker exec $container_id sh -c "kill -2 $py_spy_id" - sleep 2 - py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') - echo "Py-Spy pid is $py_spy_id" - mkdir profiling_reports - chmod 777 profiling_reports - docker cp $container_id:/home/profiling_reports/$report_name profiling_reports - ls -ltr profiling_reports - - # calculate sas report end time - current_time=$(date -u '+%Y-%m-%dT%H:%MZ') - end_time=$(date -u -d "$current_time 30 minutes" '+%Y-%m-%dT%H:%MZ' 2>/dev/null || date -u -D '%Y-%m-%dT%H:%MZ' -d "+30 minutes" '+%Y-%m-%dT%H:%MZ') - echo "end_time=$end_time" >> $GITHUB_ENV - - - name: Upload SVG to Azure Blob Storage - uses: bacongobbler/azure-blob-storage-upload@v3.0.0 - with: - source_dir: 'profiling_reports' # Directory containing the $report_name file - container_name: 'profiling' - connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} - sync: 'false' - - name: Generate Blob SAS URL uses: Azure/cli@v1 with: @@ -107,7 +36,6 @@ jobs: --container-name 'profiling' \ --name $report_name \ --permissions r \ - --expiry $end_time \ --output tsv \ --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) url=$(az storage blob url \ @@ -118,10 +46,101 @@ jobs: sas_url="$url?$sas" echo "SVG SAS URL: $sas_url" echo "sas_url=$sas_url" >> $GITHUB_ENV + # - name: Install dependencies and the worker + # run: | + # python -m pip install -q --upgrade pip + # python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U -e .[dev] + # python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U azure-functions --pre + # python setup.py build + # python setup.py webhost --branch-name=dev + # python setup.py extension + # - name: Build and Run the Docker image + # run: | + # echo "Building Docker image with Python version ${{ env.PYTHON_VERSION }}" + # docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . + + # echo "Running Docker container..." + # container_id=$(docker run -d --privileged --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) + # sleep 10 # host needs some time to start. + # echo "Container ID is $container_id" + # echo "Fetching Docker container logs..." + # docker logs $container_id + # worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython'" | awk '{print $2}') + # echo "Python worker process id is $worker_pid" + # echo "container_id=$container_id" >> $GITHUB_ENV + # echo "worker_pid=$worker_pid" >> $GITHUB_ENV + + # - name: Validate if the functions are now running + # run: | + # curl --get http://localhost:${PORT}/api/${{ matrix.test_to_run }} + + # - name: Start py-spy in the background + # run: | + # echo "Starting py-spy in background..." + # echo "Container id is $container_id" + # docker exec $container_id sh -c "pip install py-spy" + # docker exec $container_id sh -c "mkdir /home/profiling_reports" + # report_name="azpyfuncpprofiling_${{ github.run_id }}.svg" + # # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" + # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" + # sleep 2 # Give it a moment to start + # py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') + # echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV + # echo "report_name=$report_name" >> $GITHUB_ENV + + # - name: Run Throughput tests + # run: | + # chmod 755 .ci/perf_tests/run-perftests.sh + # .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} + # echo "Tests completed, terminating py-spy..." + # docker exec $container_id cat /home/site/wwwroot/py-spy.log + # echo "Py-Spy pid is $py_spy_id" + # docker exec $container_id sh -c "kill -2 $py_spy_id" + # sleep 2 + # py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') + # echo "Py-Spy pid is $py_spy_id" + # mkdir profiling_reports + # chmod 777 profiling_reports + # docker cp $container_id:/home/profiling_reports/$report_name profiling_reports + # ls -ltr profiling_reports - - name: Output SVG SAS URL - run: | - echo "You can view the SVG image at: ${{ env.sas_url }}" + # # calculate sas report end time + # current_time=$(date -u '+%Y-%m-%dT%H:%MZ') + # end_time=$(date -u -d "$current_time 30 minutes" '+%Y-%m-%dT%H:%MZ' 2>/dev/null || date -u -D '%Y-%m-%dT%H:%MZ' -d "+30 minutes" '+%Y-%m-%dT%H:%MZ') + # echo "end_time=$end_time" >> $GITHUB_ENV + + # - name: Upload SVG to Azure Blob Storage + # uses: bacongobbler/azure-blob-storage-upload@v3.0.0 + # with: + # source_dir: 'profiling_reports' # Directory containing the $report_name file + # container_name: 'profiling' + # connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} + # sync: 'false' + + # - name: Generate Blob SAS URL + # uses: Azure/cli@v1 + # with: + # azcliversion: latest + # inlineScript: | + # sas=$(az storage blob generate-sas \ + # --container-name 'profiling' \ + # --name $report_name \ + # --permissions r \ + # --expiry $end_time \ + # --output tsv \ + # --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) + # url=$(az storage blob url \ + # --container-name 'profiling' \ + # --name $report_name \ + # --output tsv \ + # --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) + # sas_url="$url?$sas" + # echo "SVG SAS URL: $sas_url" + # echo "sas_url=$sas_url" >> $GITHUB_ENV + + # - name: Output SVG SAS URL + # run: | + # echo "You can view the SVG image at: ${{ env.sas_url }}" # - name: Upload profiling result to artifact # uses: actions/upload-artifact@v2 From 2453a873fc8abc67598a7a23f79cdd22e07169e1 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:27:48 -0500 Subject: [PATCH 088/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index d71d49582..ba4ef6c1c 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -34,13 +34,14 @@ jobs: inlineScript: | sas=$(az storage blob generate-sas \ --container-name 'profiling' \ - --name $report_name \ + --name 'azpyfuncpprofiling_7465148537.svg' \ --permissions r \ --output tsv \ --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) + echo "$sas" url=$(az storage blob url \ --container-name 'profiling' \ - --name $report_name \ + --name 'azpyfuncpprofiling_7465148537.svg' \ --output tsv \ --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) sas_url="$url?$sas" From d81e8edce0a0173ad56c5926b37b8e89c7d51b66 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:34:38 -0500 Subject: [PATCH 089/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index ba4ef6c1c..504e6b973 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -39,6 +39,7 @@ jobs: --output tsv \ --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) echo "$sas" + echo "${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}" url=$(az storage blob url \ --container-name 'profiling' \ --name 'azpyfuncpprofiling_7465148537.svg' \ From 1e6a011c32b6a506f810016b45ab05b74626f4bb Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:57:50 -0500 Subject: [PATCH 090/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 504e6b973..c3ada2598 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -37,14 +37,14 @@ jobs: --name 'azpyfuncpprofiling_7465148537.svg' \ --permissions r \ --output tsv \ - --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) + --connection-string ${{ secrets.AZURE_FUNCTION_PROFILING_BLOB_SAS_CONN }}) echo "$sas" echo "${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}" url=$(az storage blob url \ --container-name 'profiling' \ --name 'azpyfuncpprofiling_7465148537.svg' \ --output tsv \ - --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) + --connection-string ${{ secrets.AZURE_FUNCTION_PROFILING_BLOB_SAS_CONN }}) sas_url="$url?$sas" echo "SVG SAS URL: $sas_url" echo "sas_url=$sas_url" >> $GITHUB_ENV From ad695f7623b8f2133edc4fa2b879fb395f02694c Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:16:01 -0500 Subject: [PATCH 091/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 172 +++++++++-------------- 1 file changed, 63 insertions(+), 109 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index c3ada2598..9de71b023 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -27,122 +27,76 @@ jobs: curl https://github.com/loadimpact/k6/releases/download/v0.28.0/k6-v0.28.0-linux64.tar.gz -L | tar xvz --strip-components 1 chmod 755 ./k6 ./k6 version - - name: Generate Blob SAS URL - uses: Azure/cli@v1 - with: - azcliversion: latest - inlineScript: | - sas=$(az storage blob generate-sas \ - --container-name 'profiling' \ - --name 'azpyfuncpprofiling_7465148537.svg' \ - --permissions r \ - --output tsv \ - --connection-string ${{ secrets.AZURE_FUNCTION_PROFILING_BLOB_SAS_CONN }}) - echo "$sas" - echo "${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}" - url=$(az storage blob url \ - --container-name 'profiling' \ - --name 'azpyfuncpprofiling_7465148537.svg' \ - --output tsv \ - --connection-string ${{ secrets.AZURE_FUNCTION_PROFILING_BLOB_SAS_CONN }}) - sas_url="$url?$sas" - echo "SVG SAS URL: $sas_url" - echo "sas_url=$sas_url" >> $GITHUB_ENV - # - name: Install dependencies and the worker - # run: | - # python -m pip install -q --upgrade pip - # python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U -e .[dev] - # python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U azure-functions --pre - # python setup.py build - # python setup.py webhost --branch-name=dev - # python setup.py extension - # - name: Build and Run the Docker image - # run: | - # echo "Building Docker image with Python version ${{ env.PYTHON_VERSION }}" - # docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . + - name: Install dependencies and the worker + run: | + python -m pip install -q --upgrade pip + python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U -e .[dev] + python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U azure-functions --pre + python setup.py build + python setup.py webhost --branch-name=dev + python setup.py extension + - name: Build and Run the Docker image + run: | + echo "Building Docker image with Python version ${{ env.PYTHON_VERSION }}" + docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . - # echo "Running Docker container..." - # container_id=$(docker run -d --privileged --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) - # sleep 10 # host needs some time to start. - # echo "Container ID is $container_id" - # echo "Fetching Docker container logs..." - # docker logs $container_id - # worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython'" | awk '{print $2}') - # echo "Python worker process id is $worker_pid" - # echo "container_id=$container_id" >> $GITHUB_ENV - # echo "worker_pid=$worker_pid" >> $GITHUB_ENV + echo "Running Docker container..." + container_id=$(docker run -d --privileged --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) + sleep 10 # host needs some time to start. + echo "Container ID is $container_id" + echo "Fetching Docker container logs..." + docker logs $container_id + worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython'" | awk '{print $2}') + echo "Python worker process id is $worker_pid" + echo "container_id=$container_id" >> $GITHUB_ENV + echo "worker_pid=$worker_pid" >> $GITHUB_ENV - # - name: Validate if the functions are now running - # run: | - # curl --get http://localhost:${PORT}/api/${{ matrix.test_to_run }} + - name: Validate if the functions are now running + run: | + curl --get http://localhost:${PORT}/api/${{ matrix.test_to_run }} - # - name: Start py-spy in the background - # run: | - # echo "Starting py-spy in background..." - # echo "Container id is $container_id" - # docker exec $container_id sh -c "pip install py-spy" - # docker exec $container_id sh -c "mkdir /home/profiling_reports" - # report_name="azpyfuncpprofiling_${{ github.run_id }}.svg" - # # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" - # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" - # sleep 2 # Give it a moment to start - # py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') - # echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV - # echo "report_name=$report_name" >> $GITHUB_ENV + - name: Start py-spy in the background + run: | + echo "Starting py-spy in background..." + echo "Container id is $container_id" + docker exec $container_id sh -c "pip install py-spy" + docker exec $container_id sh -c "mkdir /home/profiling_reports" + report_name="azpyfuncpprofiling_${{ github.run_id }}.svg" + # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" + sleep 2 # Give it a moment to start + py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') + echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV + echo "report_name=$report_name" >> $GITHUB_ENV - # - name: Run Throughput tests - # run: | - # chmod 755 .ci/perf_tests/run-perftests.sh - # .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} - # echo "Tests completed, terminating py-spy..." - # docker exec $container_id cat /home/site/wwwroot/py-spy.log - # echo "Py-Spy pid is $py_spy_id" - # docker exec $container_id sh -c "kill -2 $py_spy_id" - # sleep 2 - # py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') - # echo "Py-Spy pid is $py_spy_id" - # mkdir profiling_reports - # chmod 777 profiling_reports - # docker cp $container_id:/home/profiling_reports/$report_name profiling_reports - # ls -ltr profiling_reports + - name: Run Throughput tests + run: | + chmod 755 .ci/perf_tests/run-perftests.sh + .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} + echo "Tests completed, terminating py-spy..." + docker exec $container_id cat /home/site/wwwroot/py-spy.log + echo "Py-Spy pid is $py_spy_id" + docker exec $container_id sh -c "kill -2 $py_spy_id" + sleep 2 + py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') + echo "Py-Spy pid is $py_spy_id" + mkdir profiling_reports + chmod 777 profiling_reports + docker cp $container_id:/home/profiling_reports/$report_name profiling_reports + ls -ltr profiling_reports - # # calculate sas report end time - # current_time=$(date -u '+%Y-%m-%dT%H:%MZ') - # end_time=$(date -u -d "$current_time 30 minutes" '+%Y-%m-%dT%H:%MZ' 2>/dev/null || date -u -D '%Y-%m-%dT%H:%MZ' -d "+30 minutes" '+%Y-%m-%dT%H:%MZ') - # echo "end_time=$end_time" >> $GITHUB_ENV - # - name: Upload SVG to Azure Blob Storage - # uses: bacongobbler/azure-blob-storage-upload@v3.0.0 - # with: - # source_dir: 'profiling_reports' # Directory containing the $report_name file - # container_name: 'profiling' - # connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} - # sync: 'false' - - # - name: Generate Blob SAS URL - # uses: Azure/cli@v1 - # with: - # azcliversion: latest - # inlineScript: | - # sas=$(az storage blob generate-sas \ - # --container-name 'profiling' \ - # --name $report_name \ - # --permissions r \ - # --expiry $end_time \ - # --output tsv \ - # --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) - # url=$(az storage blob url \ - # --container-name 'profiling' \ - # --name $report_name \ - # --output tsv \ - # --connection-string ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}) - # sas_url="$url?$sas" - # echo "SVG SAS URL: $sas_url" - # echo "sas_url=$sas_url" >> $GITHUB_ENV + - name: Upload SVG to Azure Blob Storage + uses: bacongobbler/azure-blob-storage-upload@v3.0.0 + with: + source_dir: 'profiling_reports' # Directory containing the $report_name file + container_name: 'profiling' + connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} + sync: 'false' - # - name: Output SVG SAS URL - # run: | - # echo "You can view the SVG image at: ${{ env.sas_url }}" + - name: Output SVG SAS URL + run: | + echo "You can view the SVG image at: ${{ env.sas_url }}" # - name: Upload profiling result to artifact # uses: actions/upload-artifact@v2 From 92b5d55cb203e76ce18120a8de4941d7c202de47 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:35:44 -0500 Subject: [PATCH 092/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 9de71b023..4c931b9a0 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -6,6 +6,7 @@ on: env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" PYTHON_VERSION: "3.8" + PYTHON_FUNCTION_PROFILING_STORAGE_ACCT: "azpyfuncpipelinestorage" PORT: 8000 jobs: @@ -94,9 +95,10 @@ jobs: connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} sync: 'false' - - name: Output SVG SAS URL + - name: Output Blob URL run: | - echo "You can view the SVG image at: ${{ env.sas_url }}" + blob_url="https://${{ env.PYTHON_FUNCTION_PROFILING_STORAGE_ACCT }}.blob.core.windows.net/profiling/${{ env.report_name }}" + echo "You can view the Blob at: $blob_url" # - name: Upload profiling result to artifact # uses: actions/upload-artifact@v2 From e7bf70ff3d8ed1ed50aa6cb9d283e244e49d7679 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:39:43 -0500 Subject: [PATCH 093/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 27 +++++++----------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 4c931b9a0..5d6bf5ab1 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -45,10 +45,12 @@ jobs: container_id=$(docker run -d --privileged --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) sleep 10 # host needs some time to start. echo "Container ID is $container_id" + echo "Fetching Docker container logs..." docker logs $container_id worker_pid=$(docker exec $container_id sh -c "ps aux | grep '[p]ython'" | awk '{print $2}') echo "Python worker process id is $worker_pid" + echo "container_id=$container_id" >> $GITHUB_ENV echo "worker_pid=$worker_pid" >> $GITHUB_ENV @@ -58,15 +60,13 @@ jobs: - name: Start py-spy in the background run: | - echo "Starting py-spy in background..." - echo "Container id is $container_id" docker exec $container_id sh -c "pip install py-spy" docker exec $container_id sh -c "mkdir /home/profiling_reports" report_name="azpyfuncpprofiling_${{ github.run_id }}.svg" - # docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/site/wwwroot/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') + echo "py_spy_id=$py_spy_id" >> $GITHUB_ENV echo "report_name=$report_name" >> $GITHUB_ENV @@ -74,19 +74,20 @@ jobs: run: | chmod 755 .ci/perf_tests/run-perftests.sh .ci/perf_tests/run-perftests.sh localhost $PORT ${{ env.TESTS_DIR_PATH }} ${{ matrix.test_to_run }} + + - name: Stop profiling and generate report + run: | echo "Tests completed, terminating py-spy..." docker exec $container_id cat /home/site/wwwroot/py-spy.log - echo "Py-Spy pid is $py_spy_id" + # echo "Py-Spy pid is $py_spy_id" docker exec $container_id sh -c "kill -2 $py_spy_id" sleep 2 py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') - echo "Py-Spy pid is $py_spy_id" + # echo "Py-Spy pid is $py_spy_id" mkdir profiling_reports chmod 777 profiling_reports docker cp $container_id:/home/profiling_reports/$report_name profiling_reports - ls -ltr profiling_reports - - name: Upload SVG to Azure Blob Storage uses: bacongobbler/azure-blob-storage-upload@v3.0.0 with: @@ -99,15 +100,3 @@ jobs: run: | blob_url="https://${{ env.PYTHON_FUNCTION_PROFILING_STORAGE_ACCT }}.blob.core.windows.net/profiling/${{ env.report_name }}" echo "You can view the Blob at: $blob_url" - - # - name: Upload profiling result to artifact - # uses: actions/upload-artifact@v2 - # with: - # name: py-spy-output - # path: helloperf.svg - - # - name: Create Artifact Link - # run: | - # echo "You can download the SVG artifact from the Actions run page." - # echo "Link to the Actions run page: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" - From ffb0c1f3c946792aa94f418511e475687ed41ba7 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:59:50 -0500 Subject: [PATCH 094/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 5d6bf5ab1..c9b67815b 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -79,11 +79,9 @@ jobs: run: | echo "Tests completed, terminating py-spy..." docker exec $container_id cat /home/site/wwwroot/py-spy.log - # echo "Py-Spy pid is $py_spy_id" docker exec $container_id sh -c "kill -2 $py_spy_id" sleep 2 - py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') - # echo "Py-Spy pid is $py_spy_id" + mkdir profiling_reports chmod 777 profiling_reports docker cp $container_id:/home/profiling_reports/$report_name profiling_reports From ebad3a6be007d7e7db1ee4dfc821dd84d0fb3456 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 9 Jan 2024 21:05:14 +0000 Subject: [PATCH 095/129] clean up --- .../dockerfiles/perf_tests.Dockerfile | 4 +- .../dockerfiles/perf_tests_3.6.Dockerfile | 2 +- .../dockerfiles/perf_tests_3.7.Dockerfile | 2 +- .../dockerfiles/perf_tests_3.9.Dockerfile | 2 +- .github/workflows/profiling.yml | 58 ------------------- 5 files changed, 4 insertions(+), 64 deletions(-) delete mode 100644 .github/workflows/profiling.yml diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index 6d52a3656..4dab11752 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -11,13 +11,11 @@ VOLUME ["/azure-functions-host/workers/python/${PYTHON_VERSION}/LINUX/X64/azure_ ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ FUNCTIONS_WORKER_PROCESS_COUNT=1 \ - CONTAINER_NAME=perfcontainer \ AZURE_FUNCTIONS_ENVIRONMENT=Development \ FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED=1 RUN apt-get --quiet update && \ - apt-get install --quiet -y git && \ - apt-get install -y procps && \ + apt-get install --quiet -y git procps && \ cd /home && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ diff --git a/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile index f566f70b4..658809531 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile @@ -15,7 +15,7 @@ ENV FUNCTIONS_WORKER_RUNTIME_VERSION=3.6 \ RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 && \ echo "deb https://dl.bintray.com/loadimpact/deb stable main" | tee -a /etc/apt/sources.list && \ apt-get update && \ - apt-get install -y git k6 && \ + apt-get install -y git k6 procps && \ cd /home && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ diff --git a/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile index 40190a449..ddcdee46d 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile @@ -15,7 +15,7 @@ ENV FUNCTIONS_WORKER_RUNTIME_VERSION=3.7 \ RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 && \ echo "deb https://dl.bintray.com/loadimpact/deb stable main" | tee -a /etc/apt/sources.list && \ apt-get update && \ - apt-get install -y git k6 && \ + apt-get install -y git k6 procps && \ cd /home && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ diff --git a/.ci/perf_tests/dockerfiles/perf_tests_3.9.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests_3.9.Dockerfile index b8c967aeb..c253beb20 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests_3.9.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests_3.9.Dockerfile @@ -194,7 +194,7 @@ VOLUME ["/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_work RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 && \ echo "deb https://dl.bintray.com/loadimpact/deb stable main" | tee -a /etc/apt/sources.list && \ apt-get update && \ - apt-get install -y git k6 && \ + apt-get install -y git k6 procps && \ cd /home && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ diff --git a/.github/workflows/profiling.yml b/.github/workflows/profiling.yml deleted file mode 100644 index 52da2a9d6..000000000 --- a/.github/workflows/profiling.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Profiling - -on: - workflow_dispatch: - pull_request: - branches: [ dev ] - -env: - TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" - PYTHON_VERSION: "3.8" - PORT: 8000 - -jobs: - build: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - test_to_run: [ SyncHttpTriggerHelloWorld ] - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 - with: - python-version: ${{ env.PYTHON_VERSION }} - - name: Set up Dotnet 2.x - uses: actions/setup-dotnet@v1 - with: - dotnet-version: '3.1.405' - - name: Set up Dotnet 6.x - uses: actions/setup-dotnet@v1 - with: - dotnet-version: '6.x' - - name: Install dependencies and the worker - run: | - cd $GITHUB_WORKSPACE - python -m pip install -q --upgrade pip - python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U -e .[dev] - python -m pip install -q --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple -U azure-functions --pre - python setup.py build - python setup.py webhost --branch-name=dev - python setup.py extension - pip install py-spy - - name: Build and Run the Docker image - run: | - docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . - container_id=$(docker run -d --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) - echo "Container ID is: $container_id" - sleep 10 # host needs some time to start. - echo "Listing Python processes in the Docker container..." - docker ps - docker exec $container_id ps aux | grep '[p]ython' || true - - - # - name: Generate Worker Performance Summary - # run: | - - # py-spy record -o profile.svg -- python From 4e7340e764b10e8dabf95a9bf42399ff60f96908 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 16:16:05 +0000 Subject: [PATCH 096/129] fix feedback --- .ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile | 2 +- .ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile | 2 +- .github/workflows/perf-testing-setup.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile index 658809531..f566f70b4 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile @@ -15,7 +15,7 @@ ENV FUNCTIONS_WORKER_RUNTIME_VERSION=3.6 \ RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 && \ echo "deb https://dl.bintray.com/loadimpact/deb stable main" | tee -a /etc/apt/sources.list && \ apt-get update && \ - apt-get install -y git k6 procps && \ + apt-get install -y git k6 && \ cd /home && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ diff --git a/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile index ddcdee46d..40190a449 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile @@ -15,7 +15,7 @@ ENV FUNCTIONS_WORKER_RUNTIME_VERSION=3.7 \ RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 && \ echo "deb https://dl.bintray.com/loadimpact/deb stable main" | tee -a /etc/apt/sources.list && \ apt-get update && \ - apt-get install -y git k6 procps && \ + apt-get install -y git k6 && \ cd /home && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index c9b67815b..17c2ee09e 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -5,7 +5,7 @@ on: env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" - PYTHON_VERSION: "3.8" + PYTHON_VERSION: "3.11" PYTHON_FUNCTION_PROFILING_STORAGE_ACCT: "azpyfuncpipelinestorage" PORT: 8000 From 69b77fbe73ad0d370e494b10bbf6e34bd27bf7fe Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 16:16:54 +0000 Subject: [PATCH 097/129] add newline --- .github/workflows/perf-testing-setup.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 17c2ee09e..f8606e526 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -98,3 +98,4 @@ jobs: run: | blob_url="https://${{ env.PYTHON_FUNCTION_PROFILING_STORAGE_ACCT }}.blob.core.windows.net/profiling/${{ env.report_name }}" echo "You can view the Blob at: $blob_url" + From 691af3356c0a6ac6cd3c44fa6db025678e9fa17e Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 18:56:57 +0000 Subject: [PATCH 098/129] fix feedback --- .../dockerfiles/perf_tests.Dockerfile | 1 + .../dockerfiles/perf_tests_3.6.Dockerfile | 25 ------------------- .../dockerfiles/perf_tests_3.7.Dockerfile | 25 ------------------- 3 files changed, 1 insertion(+), 50 deletions(-) delete mode 100644 .ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile delete mode 100644 .ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index 4dab11752..735f3560b 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -16,6 +16,7 @@ ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ RUN apt-get --quiet update && \ apt-get install --quiet -y git procps && \ + # Procps is required for displaying worker and profiling processes info cd /home && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ diff --git a/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile deleted file mode 100644 index f566f70b4..000000000 --- a/.ci/perf_tests/dockerfiles/perf_tests_3.6.Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM mcr.microsoft.com/azure-functions/python:3.0.14492-python3.6 - -# Mounting local machines azure-functions-python-worker and azure-functions-python-library onto it -RUN rm -rf /azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker - -# Use the following command to run the docker image with customizible worker and library -VOLUME ["/azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker"] - -ENV FUNCTIONS_WORKER_RUNTIME_VERSION=3.6 \ - AzureWebJobsScriptRoot=/home/site/wwwroot \ - AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ - FUNCTIONS_WORKER_PROCESS_COUNT=1 \ - AZURE_FUNCTIONS_ENVIRONMENT=Development - -RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 && \ - echo "deb https://dl.bintray.com/loadimpact/deb stable main" | tee -a /etc/apt/sources.list && \ - apt-get update && \ - apt-get install -y git k6 && \ - cd /home && \ - git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ - mkdir -p /home/site/wwwroot/ && \ - cp -r AzFunctionsPythonPerformance/* /home/site/wwwroot/ && \ - pip install -r /home/site/wwwroot/requirements.txt - -CMD [ "/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost" ] diff --git a/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile deleted file mode 100644 index 40190a449..000000000 --- a/.ci/perf_tests/dockerfiles/perf_tests_3.7.Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM mcr.microsoft.com/azure-functions/python:3.0.14492-python3.7 - -# Mounting local machines azure-functions-python-worker and azure-functions-python-library onto it -RUN rm -rf /azure-functions-host/workers/python/3.7/LINUX/X64/azure_functions_worker - -# Use the following command to run the docker image with customizible worker and library -VOLUME ["/azure-functions-host/workers/python/3.7/LINUX/X64/azure_functions_worker"] - -ENV FUNCTIONS_WORKER_RUNTIME_VERSION=3.7 \ - AzureWebJobsScriptRoot=/home/site/wwwroot \ - AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ - FUNCTIONS_WORKER_PROCESS_COUNT=1 \ - AZURE_FUNCTIONS_ENVIRONMENT=Development - -RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 && \ - echo "deb https://dl.bintray.com/loadimpact/deb stable main" | tee -a /etc/apt/sources.list && \ - apt-get update && \ - apt-get install -y git k6 && \ - cd /home && \ - git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ - mkdir -p /home/site/wwwroot/ && \ - cp -r AzFunctionsPythonPerformance/* /home/site/wwwroot/ && \ - pip install -r /home/site/wwwroot/requirements.txt - -CMD [ "/azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost" ] From 724d26156abc4b21b5ed528070a7d91f83bdea65 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 20:04:35 +0000 Subject: [PATCH 099/129] fix feedback --- .ci/perf_tests/dockerfiles/perf_tests_3.9.Dockerfile | 1 + .github/workflows/perf-testing-setup.yml | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.ci/perf_tests/dockerfiles/perf_tests_3.9.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests_3.9.Dockerfile index c253beb20..39596e152 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests_3.9.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests_3.9.Dockerfile @@ -195,6 +195,7 @@ RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D4 echo "deb https://dl.bintray.com/loadimpact/deb stable main" | tee -a /etc/apt/sources.list && \ apt-get update && \ apt-get install -y git k6 procps && \ + # Procps is required for displaying worker and profiling processes info cd /home && \ git clone https://github.com/vrdmr/AzFunctionsPythonPerformance.git && \ mkdir -p /home/site/wwwroot/ && \ diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index f8606e526..882c61e68 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -2,7 +2,8 @@ name: Throughput testing workflow on: workflow_dispatch: - + issue_comment: + types: [created] env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" PYTHON_VERSION: "3.11" @@ -11,6 +12,7 @@ env: jobs: build: + if: ${{ github.event.issue.pull_request & contains(github.event.comment.body, '/profile') }} runs-on: ubuntu-latest strategy: fail-fast: false From 5305476fbd97cec88314e7ec4a3672ec0ebd8c42 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 20:40:33 +0000 Subject: [PATCH 100/129] fix --- .github/workflows/perf-testing-setup.yml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 882c61e68..33957aad6 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -2,6 +2,11 @@ name: Throughput testing workflow on: workflow_dispatch: + inputs: + profiling_sampling_rate: + description: 'Profiling sampling rate (tps)' + required: true + default: 1500 issue_comment: types: [created] env: @@ -12,7 +17,7 @@ env: jobs: build: - if: ${{ github.event.issue.pull_request & contains(github.event.comment.body, '/profile') }} + if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, '/profile') }} runs-on: ubuntu-latest strategy: fail-fast: false @@ -64,8 +69,9 @@ jobs: run: | docker exec $container_id sh -c "pip install py-spy" docker exec $container_id sh -c "mkdir /home/profiling_reports" + profiling_sampling_rate=${{ github.event.inputs.profiling_sampling_rate || 1500 }} report_name="azpyfuncpprofiling_${{ github.run_id }}.svg" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate 1500 > /home/site/wwwroot/py-spy.log 2>&1 &" + docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate $profiling_sampling_rate > /home/site/wwwroot/py-spy.log 2>&1 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') @@ -101,3 +107,13 @@ jobs: blob_url="https://${{ env.PYTHON_FUNCTION_PROFILING_STORAGE_ACCT }}.blob.core.windows.net/profiling/${{ env.report_name }}" echo "You can view the Blob at: $blob_url" + - name: Upload profiling result to artifact + uses: actions/upload-artifact@v2 + with: + name: py-spy-output + path: profiling_reports/$report_name + + - name: Create Artifact Link + run: | + echo "You can download the SVG artifact from the Actions run page." + echo "Link to the Actions run page: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ No newline at end of file From c03764c03325003cf1b017efe55f553d950cdfb7 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 15:44:41 -0500 Subject: [PATCH 101/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 33957aad6..c8174a220 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -17,7 +17,7 @@ env: jobs: build: - if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, '/profile') }} + if: ${{ github.event_name == 'workflow_dispatch' || github.event.issue.pull_request && contains(github.event.comment.body, '/profile') }} runs-on: ubuntu-latest strategy: fail-fast: false @@ -116,4 +116,4 @@ jobs: - name: Create Artifact Link run: | echo "You can download the SVG artifact from the Actions run page." - echo "Link to the Actions run page: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ No newline at end of file + echo "Link to the Actions run page: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" From 3576b16688b859339e2c51402d82ec603d0bec9c Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 16:00:29 -0500 Subject: [PATCH 102/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index c8174a220..171605a85 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -111,7 +111,7 @@ jobs: uses: actions/upload-artifact@v2 with: name: py-spy-output - path: profiling_reports/$report_name + path: profiling_reports/$(report_name) - name: Create Artifact Link run: | From 294be7b58b7ffcdbe02f599a119d136c71dc170f Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 19:21:46 -0500 Subject: [PATCH 103/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 171605a85..ef5b362d8 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -111,7 +111,7 @@ jobs: uses: actions/upload-artifact@v2 with: name: py-spy-output - path: profiling_reports/$(report_name) + path: profiling_reports/${{ report_name }} - name: Create Artifact Link run: | From b080280bf3de4c7bfed776b92966c5d49c9abf3d Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 19:28:35 -0500 Subject: [PATCH 104/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index ef5b362d8..2a2eff008 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -111,7 +111,7 @@ jobs: uses: actions/upload-artifact@v2 with: name: py-spy-output - path: profiling_reports/${{ report_name }} + path: profiling_reports/${{ env.report_name }} - name: Create Artifact Link run: | From 8faf4d8ecb2a8c0b39f2a5cab92c72b522be6017 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 20:28:03 -0500 Subject: [PATCH 105/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 2a2eff008..5f0de1d33 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -111,7 +111,7 @@ jobs: uses: actions/upload-artifact@v2 with: name: py-spy-output - path: profiling_reports/${{ env.report_name }} + path: profiling_reports/* - name: Create Artifact Link run: | From 346dc443a01fc304824580d10037f040d188456b Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Tue, 16 Jan 2024 21:57:53 -0500 Subject: [PATCH 106/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 5f0de1d33..bf58b1e8a 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -93,6 +93,7 @@ jobs: mkdir profiling_reports chmod 777 profiling_reports docker cp $container_id:/home/profiling_reports/$report_name profiling_reports + docker cp $container_id:/home/profiling_reports/$report_name . - name: Upload SVG to Azure Blob Storage uses: bacongobbler/azure-blob-storage-upload@v3.0.0 @@ -111,7 +112,7 @@ jobs: uses: actions/upload-artifact@v2 with: name: py-spy-output - path: profiling_reports/* + path: profiling_reports/ - name: Create Artifact Link run: | From a9cdaacb40acd12ad6aeeeae6cf853c6443fed6c Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 10:34:46 -0500 Subject: [PATCH 107/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index bf58b1e8a..fa899694c 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -69,7 +69,7 @@ jobs: run: | docker exec $container_id sh -c "pip install py-spy" docker exec $container_id sh -c "mkdir /home/profiling_reports" - profiling_sampling_rate=${{ github.event.inputs.profiling_sampling_rate || 1500 }} + profiling_sampling_rate=${{ github.event.inputs.profiling_sampling_rate || 800 }} report_name="azpyfuncpprofiling_${{ github.run_id }}.svg" docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate $profiling_sampling_rate > /home/site/wwwroot/py-spy.log 2>&1 &" sleep 2 # Give it a moment to start @@ -93,7 +93,6 @@ jobs: mkdir profiling_reports chmod 777 profiling_reports docker cp $container_id:/home/profiling_reports/$report_name profiling_reports - docker cp $container_id:/home/profiling_reports/$report_name . - name: Upload SVG to Azure Blob Storage uses: bacongobbler/azure-blob-storage-upload@v3.0.0 @@ -112,7 +111,7 @@ jobs: uses: actions/upload-artifact@v2 with: name: py-spy-output - path: profiling_reports/ + path: 'profiling_reports/${{ env.report_name }}' - name: Create Artifact Link run: | From eb8e197232077a4c92237c3b3e9d6a854962f041 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 10:46:07 -0500 Subject: [PATCH 108/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index fa899694c..d0f1d4852 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -5,8 +5,8 @@ on: inputs: profiling_sampling_rate: description: 'Profiling sampling rate (tps)' - required: true - default: 1500 + required: false + default: '500' issue_comment: types: [created] env: From 7cdf40d23263ac8e3a8587b546cd3a8db7d829fb Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 16:50:49 -0500 Subject: [PATCH 109/129] Update .github/workflows/perf-testing-setup.yml Co-authored-by: Varad Meru --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index d0f1d4852..73a9818f4 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -49,7 +49,7 @@ jobs: docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . echo "Running Docker container..." - container_id=$(docker run -d --privileged --shm-size="2g" --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) + container_id=$(docker run -d --privileged --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) sleep 10 # host needs some time to start. echo "Container ID is $container_id" From f9452a369206d97f2fc1a98124f187475280d309 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 22:01:36 +0000 Subject: [PATCH 110/129] include br name --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 73a9818f4..c0891ddbe 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -70,7 +70,7 @@ jobs: docker exec $container_id sh -c "pip install py-spy" docker exec $container_id sh -c "mkdir /home/profiling_reports" profiling_sampling_rate=${{ github.event.inputs.profiling_sampling_rate || 800 }} - report_name="azpyfuncpprofiling_${{ github.run_id }}.svg" + report_name="${ GITHUB_REF##*/ }_${{ github.run_id }}.svg" docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate $profiling_sampling_rate > /home/site/wwwroot/py-spy.log 2>&1 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') From 79df75f8f24e2a4fd8cc66865efe8b8ee9364232 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:07:30 -0500 Subject: [PATCH 111/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index c0891ddbe..bb71ee52e 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -70,7 +70,7 @@ jobs: docker exec $container_id sh -c "pip install py-spy" docker exec $container_id sh -c "mkdir /home/profiling_reports" profiling_sampling_rate=${{ github.event.inputs.profiling_sampling_rate || 800 }} - report_name="${ GITHUB_REF##*/ }_${{ github.run_id }}.svg" + report_name="${GITHUB_REF#refs/heads/}_${{ github.run_id }}.svg" docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate $profiling_sampling_rate > /home/site/wwwroot/py-spy.log 2>&1 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') From 306c9f34f8f32560eb1dd1fb77e747ee60a9b452 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:13:24 -0500 Subject: [PATCH 112/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index bb71ee52e..a4724cb72 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -7,6 +7,10 @@ on: description: 'Profiling sampling rate (tps)' required: false default: '500' + tests_to_run: + description: 'List of perf tests to run' + required: false + default: '[ SyncHelloWorld ]' issue_comment: types: [created] env: @@ -22,7 +26,7 @@ jobs: strategy: fail-fast: false matrix: - test_to_run: [ SyncHelloWorld ] + test_to_run: ${{ github.event.inputs.tests_to_run || [ SyncHelloWorld ] }} steps: - uses: actions/checkout@v2 - name: Set up Python ${{ env.PYTHON_VERSION }} From 8a7d9105a428389788b283498749d8a6bf6266bd Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:15:09 -0500 Subject: [PATCH 113/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index a4724cb72..84a054072 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -26,7 +26,7 @@ jobs: strategy: fail-fast: false matrix: - test_to_run: ${{ github.event.inputs.tests_to_run || [ SyncHelloWorld ] }} + test_to_run: ${{ github.event.inputs.tests_to_run }} steps: - uses: actions/checkout@v2 - name: Set up Python ${{ env.PYTHON_VERSION }} From 8308bfc576696b91b567c6f6cd3b6aaff5bfaac3 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:16:26 -0500 Subject: [PATCH 114/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 84a054072..92e196850 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -10,7 +10,7 @@ on: tests_to_run: description: 'List of perf tests to run' required: false - default: '[ SyncHelloWorld ]' + default: [ SyncHelloWorld ] issue_comment: types: [created] env: From 17da633b4ab4308b3f9f763d7f268c2b8387701d Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:21:07 -0500 Subject: [PATCH 115/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 92e196850..0c9ab719e 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -7,10 +7,10 @@ on: description: 'Profiling sampling rate (tps)' required: false default: '500' - tests_to_run: + test_to_run: description: 'List of perf tests to run' required: false - default: [ SyncHelloWorld ] + default: SyncHelloWorld issue_comment: types: [created] env: @@ -26,7 +26,7 @@ jobs: strategy: fail-fast: false matrix: - test_to_run: ${{ github.event.inputs.tests_to_run }} + test_to_run: [ ${{ github.event.inputs.test_to_run }} ] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ env.PYTHON_VERSION }} From 2d113ccf12883247c0bdb421aaf5987b2e62cab7 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:22:07 -0500 Subject: [PATCH 116/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 0c9ab719e..44e7f3491 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -10,7 +10,7 @@ on: test_to_run: description: 'List of perf tests to run' required: false - default: SyncHelloWorld + default: 'SyncHelloWorld' issue_comment: types: [created] env: @@ -26,7 +26,7 @@ jobs: strategy: fail-fast: false matrix: - test_to_run: [ ${{ github.event.inputs.test_to_run }} ] + test_to_run: [ SyncHelloWorld ] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ env.PYTHON_VERSION }} From eacf00ebe7566dd0bd717daf9cecaec9236ba9df Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:24:52 -0500 Subject: [PATCH 117/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 44e7f3491..fcded8dc8 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -26,7 +26,7 @@ jobs: strategy: fail-fast: false matrix: - test_to_run: [ SyncHelloWorld ] + test_to_run: [${{ github.event.inputs.test_to_run || 800 }}] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ env.PYTHON_VERSION }} From 7ccd11467b0c00e25570697514000e7f66cf8a96 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:26:51 -0500 Subject: [PATCH 118/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index fcded8dc8..663fa34e7 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -26,7 +26,7 @@ jobs: strategy: fail-fast: false matrix: - test_to_run: [${{ github.event.inputs.test_to_run || 800 }}] + test_to_run: ['${{ github.event.inputs.test_to_run || SyncHelloWorld }}'] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ env.PYTHON_VERSION }} From 0126ef6bd3a52381a9d10f83fc4f683dd103ff08 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:27:54 -0500 Subject: [PATCH 119/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 663fa34e7..990c4a1c8 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -26,7 +26,7 @@ jobs: strategy: fail-fast: false matrix: - test_to_run: ['${{ github.event.inputs.test_to_run || SyncHelloWorld }}'] + test_to_run: ['${{ github.event.inputs.test_to_run || SyncHelloWorld2 }}'] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ env.PYTHON_VERSION }} From b89d961a17deb02098a7da7de991a9d337305a24 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:28:33 -0500 Subject: [PATCH 120/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 990c4a1c8..ada85b72f 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -10,7 +10,7 @@ on: test_to_run: description: 'List of perf tests to run' required: false - default: 'SyncHelloWorld' + default: SyncHelloWorld issue_comment: types: [created] env: From 822b60ec73a1b8ea00da1ac2a3a6ecd9c1da1575 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:34:03 -0500 Subject: [PATCH 121/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index ada85b72f..4b6fea585 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -26,7 +26,7 @@ jobs: strategy: fail-fast: false matrix: - test_to_run: ['${{ github.event.inputs.test_to_run || SyncHelloWorld2 }}'] + test_to_run: ['${{ github.event.inputs.test_to_run }}'] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ env.PYTHON_VERSION }} From 8ad6addf676e4de8fcf6b6950c550a8eddff06b7 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 18:15:12 -0500 Subject: [PATCH 122/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 4b6fea585..d0a6ca6ea 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -50,7 +50,7 @@ jobs: - name: Build and Run the Docker image run: | echo "Building Docker image with Python version ${{ env.PYTHON_VERSION }}" - docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . + docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests_${{ env.PYTHON_VERSION }}.Dockerfile --tag perfimage:latest . echo "Running Docker container..." container_id=$(docker run -d --privileged --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) From ab51f58eb143dcc8aaeccf1f97a5fe4a282cacbd Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 18:33:41 -0500 Subject: [PATCH 123/129] Update perf_tests.Dockerfile --- .ci/perf_tests/dockerfiles/perf_tests.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile index 735f3560b..6adf9f1df 100644 --- a/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile +++ b/.ci/perf_tests/dockerfiles/perf_tests.Dockerfile @@ -1,4 +1,4 @@ -ARG PYTHON_VERSION=3.8 +ARG PYTHON_VERSION=3.11 FROM mcr.microsoft.com/azure-functions/python:4-python$PYTHON_VERSION From 8c56fd794625eb96dd0b105b9693762a2bf0e8c2 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 18:52:25 -0500 Subject: [PATCH 124/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index d0a6ca6ea..4b6fea585 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -50,7 +50,7 @@ jobs: - name: Build and Run the Docker image run: | echo "Building Docker image with Python version ${{ env.PYTHON_VERSION }}" - docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests_${{ env.PYTHON_VERSION }}.Dockerfile --tag perfimage:latest . + docker build --build-arg PYTHON_VERSION=${{ env.PYTHON_VERSION }} --file .ci/perf_tests/dockerfiles/perf_tests.Dockerfile --tag perfimage:latest . echo "Running Docker container..." container_id=$(docker run -d --privileged --env FUNCTIONS_WORKER_RUNTIME_VERSION=${{ env.PYTHON_VERSION }} -p ${PORT}:80 -v $GITHUB_WORKSPACE/azure_functions_worker:/azure-functions-host/workers/python/${{ env.PYTHON_VERSION }}/LINUX/X64/azure_functions_worker perfimage:latest) From 1b19f3e05a2d9aab4554eab208428ee76ee704f2 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 19:51:45 -0500 Subject: [PATCH 125/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 4b6fea585..35b738e8b 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -73,8 +73,9 @@ jobs: run: | docker exec $container_id sh -c "pip install py-spy" docker exec $container_id sh -c "mkdir /home/profiling_reports" - profiling_sampling_rate=${{ github.event.inputs.profiling_sampling_rate || 800 }} - report_name="${GITHUB_REF#refs/heads/}_${{ github.run_id }}.svg" + profiling_sampling_rate=${{ github.event.inputs.profiling_sampling_rate }} + # report_name="${GITHUB_REF#refs/heads/}_${{ github.run_id }}.svg" + report_name="${{ github.run_id }}.svg" docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate $profiling_sampling_rate > /home/site/wwwroot/py-spy.log 2>&1 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') From 5bba4596c11e02eaaadc673fae00fc63c426364e Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 20:20:48 -0500 Subject: [PATCH 126/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 35b738e8b..736662849 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -15,7 +15,7 @@ on: types: [created] env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" - PYTHON_VERSION: "3.11" + PYTHON_VERSION: "3.8" PYTHON_FUNCTION_PROFILING_STORAGE_ACCT: "azpyfuncpipelinestorage" PORT: 8000 @@ -76,7 +76,7 @@ jobs: profiling_sampling_rate=${{ github.event.inputs.profiling_sampling_rate }} # report_name="${GITHUB_REF#refs/heads/}_${{ github.run_id }}.svg" report_name="${{ github.run_id }}.svg" - docker exec -d $container_id sh -c "py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate $profiling_sampling_rate > /home/site/wwwroot/py-spy.log 2>&1 &" + docker exec -d $container_id sh -c "RUST_BACKTRACE=1 py-spy record -p $worker_pid -o /home/profiling_reports/$report_name -f flamegraph --idle --nonblocking --rate $profiling_sampling_rate > /home/site/wwwroot/py-spy.log 2>&1 &" sleep 2 # Give it a moment to start py_spy_id=$(docker exec $container_id sh -c "ps aux | grep '[p]y-spy record'" | awk '{print $2}') From 3afc460e9d42780ff4594b3f563e94054ce7653d Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 20:29:29 -0500 Subject: [PATCH 127/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 736662849..19c7453fd 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -15,7 +15,7 @@ on: types: [created] env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" - PYTHON_VERSION: "3.8" + PYTHON_VERSION: "3.10" PYTHON_FUNCTION_PROFILING_STORAGE_ACCT: "azpyfuncpipelinestorage" PORT: 8000 From f99bce1357d1ca47ca2609c028823ef99d8f463f Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 20:47:30 -0500 Subject: [PATCH 128/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 19c7453fd..3a2a5956d 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -15,7 +15,7 @@ on: types: [created] env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" - PYTHON_VERSION: "3.10" + PYTHON_VERSION: "3.11" PYTHON_FUNCTION_PROFILING_STORAGE_ACCT: "azpyfuncpipelinestorage" PORT: 8000 From e4c4a96ad1042af7d1197c05abea736d45a018b4 Mon Sep 17 00:00:00 2001 From: peterstone2017 <12449837+YunchuWang@users.noreply.github.com> Date: Wed, 17 Jan 2024 21:29:41 -0500 Subject: [PATCH 129/129] Update perf-testing-setup.yml --- .github/workflows/perf-testing-setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf-testing-setup.yml b/.github/workflows/perf-testing-setup.yml index 3a2a5956d..19c7453fd 100644 --- a/.github/workflows/perf-testing-setup.yml +++ b/.github/workflows/perf-testing-setup.yml @@ -15,7 +15,7 @@ on: types: [created] env: TESTS_DIR_PATH: ".ci/perf_tests/k6scripts/" - PYTHON_VERSION: "3.11" + PYTHON_VERSION: "3.10" PYTHON_FUNCTION_PROFILING_STORAGE_ACCT: "azpyfuncpipelinestorage" PORT: 8000