summaryrefslogtreecommitdiff
path: root/.github/workflows/report-backend-memory.yml
diff options
context:
space:
mode:
authormisskey-release-bot[bot] <157398866+misskey-release-bot[bot]@users.noreply.github.com>2026-03-05 10:56:50 +0000
committerGitHub <noreply@github.com>2026-03-05 10:56:50 +0000
commitfe3dd8edb5f30104cd0a7ed755eb254feda2922d (patch)
treeaf6cf5fa4ca75302ac2de5db742cead00bc13d21 /.github/workflows/report-backend-memory.yml
parentMerge pull request #16998 from misskey-dev/develop (diff)
parentRelease: 2026.3.0 (diff)
downloadmisskey-fe3dd8edb5f30104cd0a7ed755eb254feda2922d.tar.gz
misskey-fe3dd8edb5f30104cd0a7ed755eb254feda2922d.tar.bz2
misskey-fe3dd8edb5f30104cd0a7ed755eb254feda2922d.zip
Merge pull request #17217 from misskey-dev/develop
Release: 2026.3.0
Diffstat (limited to '.github/workflows/report-backend-memory.yml')
-rw-r--r--.github/workflows/report-backend-memory.yml127
1 files changed, 91 insertions, 36 deletions
diff --git a/.github/workflows/report-backend-memory.yml b/.github/workflows/report-backend-memory.yml
index c339ca49b4..bf2e311c83 100644
--- a/.github/workflows/report-backend-memory.yml
+++ b/.github/workflows/report-backend-memory.yml
@@ -54,55 +54,110 @@ jobs:
BASE_MEMORY=$(cat ./artifacts/memory-base.json)
HEAD_MEMORY=$(cat ./artifacts/memory-head.json)
- BASE_RSS=$(echo "$BASE_MEMORY" | jq -r '.memory.rss // 0')
- HEAD_RSS=$(echo "$HEAD_MEMORY" | jq -r '.memory.rss // 0')
+ variation() {
+ calc() {
+ BASE=$(echo "$BASE_MEMORY" | jq -r ".${1}.${2} // 0")
+ HEAD=$(echo "$HEAD_MEMORY" | jq -r ".${1}.${2} // 0")
- # Calculate difference
- if [ "$BASE_RSS" -gt 0 ] && [ "$HEAD_RSS" -gt 0 ]; then
- DIFF=$((HEAD_RSS - BASE_RSS))
- DIFF_PERCENT=$(echo "scale=2; ($DIFF * 100) / $BASE_RSS" | bc)
+ DIFF=$((HEAD - BASE))
+ if [ "$BASE" -gt 0 ]; then
+ DIFF_PERCENT=$(echo "scale=2; ($DIFF * 100) / $BASE" | bc)
+ else
+ DIFF_PERCENT=0
+ fi
- # Convert to MB for readability
- BASE_MB=$(echo "scale=2; $BASE_RSS / 1048576" | bc)
- HEAD_MB=$(echo "scale=2; $HEAD_RSS / 1048576" | bc)
- DIFF_MB=$(echo "scale=2; $DIFF / 1048576" | bc)
+ # Convert KB to MB for readability
+ BASE_MB=$(echo "scale=2; $BASE / 1024" | bc)
+ HEAD_MB=$(echo "scale=2; $HEAD / 1024" | bc)
+ DIFF_MB=$(echo "scale=2; $DIFF / 1024" | bc)
- echo "base_mb=$BASE_MB" >> "$GITHUB_OUTPUT"
- echo "head_mb=$HEAD_MB" >> "$GITHUB_OUTPUT"
- echo "diff_mb=$DIFF_MB" >> "$GITHUB_OUTPUT"
- echo "diff_percent=$DIFF_PERCENT" >> "$GITHUB_OUTPUT"
- echo "has_data=true" >> "$GITHUB_OUTPUT"
+ JSON=$(jq -c -n \
+ --argjson base "$BASE_MB" \
+ --argjson head "$HEAD_MB" \
+ --argjson diff "$DIFF_MB" \
+ --argjson diff_percent "$DIFF_PERCENT" \
+ '{base: $base, head: $head, diff: $diff, diff_percent: $diff_percent}')
- # Determine if this is a significant change (more than 5% increase)
- if [ "$(echo "$DIFF_PERCENT > 5" | bc)" -eq 1 ]; then
- echo "significant_increase=true" >> "$GITHUB_OUTPUT"
- else
- echo "significant_increase=false" >> "$GITHUB_OUTPUT"
- fi
- else
- echo "has_data=false" >> "$GITHUB_OUTPUT"
- fi
+ echo "$JSON"
+ }
+
+ JSON=$(jq -c -n \
+ --argjson VmRSS "$(calc $1 VmRSS)" \
+ --argjson VmHWM "$(calc $1 VmHWM)" \
+ --argjson VmSize "$(calc $1 VmSize)" \
+ --argjson VmData "$(calc $1 VmData)" \
+ '{VmRSS: $VmRSS, VmHWM: $VmHWM, VmSize: $VmSize, VmData: $VmData}')
+
+ echo "$JSON"
+ }
+
+ JSON=$(jq -c -n \
+ --argjson beforeGc "$(variation beforeGc)" \
+ --argjson afterGc "$(variation afterGc)" \
+ --argjson afterRequest "$(variation afterRequest)" \
+ '{beforeGc: $beforeGc, afterGc: $afterGc, afterRequest: $afterRequest}')
+
+ echo "res=$JSON" >> "$GITHUB_OUTPUT"
- id: build-comment
name: Build memory comment
+ env:
+ RES: ${{ steps.compare.outputs.res }}
run: |
- HEADER="## Backend Memory Usage Comparison"
+ HEADER="## Backend memory usage comparison"
FOOTER="[See workflow logs for details](https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})"
echo "$HEADER" > ./output.md
echo >> ./output.md
- if [ "${{ steps.compare.outputs.has_data }}" == "true" ]; then
- echo "| Metric | base | head | Diff |" >> ./output.md
- echo "|--------|------|------|------|" >> ./output.md
- echo "| RSS | ${{ steps.compare.outputs.base_mb }} MB | ${{ steps.compare.outputs.head_mb }} MB | ${{ steps.compare.outputs.diff_mb }} MB (${{ steps.compare.outputs.diff_percent }}%) |" >> ./output.md
- echo >> ./output.md
+ table() {
+ echo "| Metric | base (MB) | head (MB) | Diff (MB) | Diff (%) |" >> ./output.md
+ echo "|--------|------:|------:|------:|------:|" >> ./output.md
+
+ line() {
+ METRIC=$2
+ BASE=$(echo "$RES" | jq -r ".${1}.${2}.base")
+ HEAD=$(echo "$RES" | jq -r ".${1}.${2}.head")
+ DIFF=$(echo "$RES" | jq -r ".${1}.${2}.diff")
+ DIFF_PERCENT=$(echo "$RES" | jq -r ".${1}.${2}.diff_percent")
+
+ if (( $(echo "$DIFF_PERCENT > 0" | bc -l) )); then
+ DIFF="+$DIFF"
+ DIFF_PERCENT="+$DIFF_PERCENT"
+ fi
+
+ # highlight VmRSS
+ if [ "$2" = "VmRSS" ]; then
+ METRIC="**${METRIC}**"
+ BASE="**${BASE}**"
+ HEAD="**${HEAD}**"
+ DIFF="**${DIFF}**"
+ DIFF_PERCENT="**${DIFF_PERCENT}**"
+ fi
+
+ echo "| ${METRIC} | ${BASE} MB | ${HEAD} MB | ${DIFF} MB | ${DIFF_PERCENT}% |" >> ./output.md
+ }
+
+ line $1 VmRSS
+ line $1 VmHWM
+ line $1 VmSize
+ line $1 VmData
+ }
+
+ echo "### Before GC" >> ./output.md
+ table beforeGc
+ echo >> ./output.md
+
+ echo "### After GC" >> ./output.md
+ table afterGc
+ echo >> ./output.md
+
+ echo "### After Request" >> ./output.md
+ table afterRequest
+ echo >> ./output.md
- if [ "${{ steps.compare.outputs.significant_increase }}" == "true" ]; then
- echo "⚠️ **Warning**: Memory usage has increased by more than 5%. Please verify this is not an unintended change." >> ./output.md
- echo >> ./output.md
- fi
- else
- echo "Could not retrieve memory usage data." >> ./output.md
+ # Determine if this is a significant change (more than 5% increase)
+ if [ "$(echo "$RES" | jq -r '.afterGc.VmRSS.diff_percent | tonumber > 5')" = "true" ]; then
+ echo "⚠️ **Warning**: Memory usage has increased by more than 5%. Please verify this is not an unintended change." >> ./output.md
echo >> ./output.md
fi