Andrey Epifancev 5f4afc0926 perf: правки по финальному ревью — скрипты, данные, фильтр long tasks
- run-all.sh: копия run-all.status.json в report-data с относительными путями;
  пример control4x с отдельным тегом и предупреждением (I-3, M-8); очищены
  три закоммиченные копии статуса
- lib/modal.ts: long tasks по пересечению окна (tasksInWindow), тест (M-7)
- scale_compare.py: строки листов на момент скролла (до grow), пояснения (M-6)
- hotspots_summary.py: оговорка о разбавлении «на шаг» (M-5)
- netlog_sizes.py + report-data/20261026-s1/analysis/netlog-sizes.md (M-3)

Refs #202

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 13:34:58 +04:00

118 lines
7.3 KiB
JSON

{
"run_id": "20261026-s1",
"scale": 1,
"steps": {
"reset": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T03:15:25+0400",
"end": "2026-10-26T03:15:31+0400",
"duration_s": 6,
"cmd": "'perf/stand.sh' reset"
},
"gen": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T03:15:31+0400",
"end": "2026-10-26T03:26:14+0400",
"duration_s": 643,
"cmd": "cd 'perf' && 'perf/.venv/bin/python' -m perfkit.gen.run --scale 1"
},
"verify": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T03:26:14+0400",
"end": "2026-10-26T03:26:23+0400",
"duration_s": 8,
"cmd": "cd 'perf' && 'perf/.venv/bin/python' -m perfkit.gen.verify --scale 1"
},
"stand": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T03:26:23+0400",
"end": "2026-10-26T03:26:24+0400",
"duration_s": 1,
"cmd": "(curl -fsS -o /dev/null 'http://localhost:8000/healthz' || 'perf/stand.sh' api) && ([ -f 'perf/.build/prod/index.html' ] || 'perf/stand.sh' web-build) && (curl -fsS -o /dev/null 'http://localhost:8080/' || 'perf/stand.sh' web) && curl -fsS 'http://localhost:8080/' | cmp -s - 'perf/.build/prod/index.html' && echo 'web :8080 = prod-сборка' && 'perf/stand.sh' smoke"
},
"preflight": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T03:26:24+0400",
"end": "2026-10-26T03:26:26+0400",
"duration_s": 2,
"cmd": "cd 'perf/e2e' && for f in scenarios/scroll.spec.ts scenarios/modals.spec.ts scenarios/scroll-coauthor.spec.ts scenarios/memory.spec.ts; do env -u PERF_TARGETS -u PERF_REPEATS -u PERF_CPU_RATES -u PERF_ROLES -u PERF_AXES -u PERF_MODALS -u PERF_PRIORITY -u PERF_PROFILING -u PERF_SQLSTATS_TAG -u PERF_SQLSTATS -u PERF_COAUTHOR_RATES -u PERF_TRACE -u PERF_RESULTS_DIR -u PERF_MEM_CYCLES -u PERF_MEM_SNAPSHOTS PERF_SCALE=1 PERF_PRIORITY=1,2 npx playwright test --list $f | tail -1 || exit 1; done"
},
"scroll": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T03:26:26+0400",
"end": "2026-10-26T06:29:23+0400",
"duration_s": 10977,
"cmd": "cd 'perf/e2e' && env -u PERF_TARGETS -u PERF_REPEATS -u PERF_CPU_RATES -u PERF_ROLES -u PERF_AXES -u PERF_MODALS -u PERF_PRIORITY -u PERF_PROFILING -u PERF_SQLSTATS_TAG -u PERF_SQLSTATS -u PERF_COAUTHOR_RATES -u PERF_TRACE -u PERF_RESULTS_DIR -u PERF_MEM_CYCLES -u PERF_MEM_SNAPSHOTS PERF_SCALE=1 PERF_RUN_ID=20261026-s1 PERF_WEB=http://localhost:8080 PERF_SQLSTATS_TAG=scroll npx playwright test scenarios/scroll.spec.ts"
},
"coauthor": {
"status": "FAIL",
"rc": 1,
"start": "2026-10-26T06:29:23+0400",
"end": "2026-10-26T06:34:34+0400",
"duration_s": 311,
"cmd": "cd 'perf/e2e' && env -u PERF_TARGETS -u PERF_REPEATS -u PERF_CPU_RATES -u PERF_ROLES -u PERF_AXES -u PERF_MODALS -u PERF_PRIORITY -u PERF_PROFILING -u PERF_SQLSTATS_TAG -u PERF_SQLSTATS -u PERF_COAUTHOR_RATES -u PERF_TRACE -u PERF_RESULTS_DIR -u PERF_MEM_CYCLES -u PERF_MEM_SNAPSHOTS PERF_SCALE=1 PERF_RUN_ID=20261026-s1 PERF_WEB=http://localhost:8080 PERF_SQLSTATS_TAG=coauthor PERF_COAUTHOR_RATES=1,5 npx playwright test scenarios/scroll-coauthor.spec.ts"
},
"grow": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T06:34:34+0400",
"end": "2026-10-26T06:38:12+0400",
"duration_s": 218,
"cmd": "cd 'perf' && 'perf/.venv/bin/python' -m perfkit.gen.grow --scale 1"
},
"modals": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T06:38:12+0400",
"end": "2026-10-26T06:47:01+0400",
"duration_s": 529,
"cmd": "cd 'perf/e2e' && env -u PERF_TARGETS -u PERF_REPEATS -u PERF_CPU_RATES -u PERF_ROLES -u PERF_AXES -u PERF_MODALS -u PERF_PRIORITY -u PERF_PROFILING -u PERF_SQLSTATS_TAG -u PERF_SQLSTATS -u PERF_COAUTHOR_RATES -u PERF_TRACE -u PERF_RESULTS_DIR -u PERF_MEM_CYCLES -u PERF_MEM_SNAPSHOTS PERF_SCALE=1 PERF_RUN_ID=20261026-s1 PERF_WEB=http://localhost:8080 PERF_SQLSTATS_TAG=modals PERF_PRIORITY=1,2 npx playwright test scenarios/modals.spec.ts"
},
"modals_profiling": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T06:47:01+0400",
"end": "2026-10-26T06:48:38+0400",
"duration_s": 97,
"cmd": "rc=0; 'perf/stand.sh' web-profiling && ( cd 'perf/e2e' && env -u PERF_TARGETS -u PERF_REPEATS -u PERF_CPU_RATES -u PERF_ROLES -u PERF_AXES -u PERF_MODALS -u PERF_PRIORITY -u PERF_PROFILING -u PERF_SQLSTATS_TAG -u PERF_SQLSTATS -u PERF_COAUTHOR_RATES -u PERF_TRACE -u PERF_RESULTS_DIR -u PERF_MEM_CYCLES -u PERF_MEM_SNAPSHOTS PERF_SCALE=1 PERF_RUN_ID=20261026-s1 PERF_WEB=http://localhost:8081 PERF_SQLSTATS_TAG=modals_profiling PERF_PROFILING=1 PERF_PRIORITY=1 npx playwright test scenarios/modals.spec.ts ) || rc=$?; if [ -f 'perf/.run/web-profiling.pid' ]; then pkill -P $(cat 'perf/.run/web-profiling.pid') 2>/dev/null; kill $(cat 'perf/.run/web-profiling.pid') 2>/dev/null; rm -f 'perf/.run/web-profiling.pid'; fi; exit $rc"
},
"memory": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T06:48:38+0400",
"end": "2026-10-26T07:44:37+0400",
"duration_s": 3359,
"cmd": "cd 'perf/e2e' && env -u PERF_TARGETS -u PERF_REPEATS -u PERF_CPU_RATES -u PERF_ROLES -u PERF_AXES -u PERF_MODALS -u PERF_PRIORITY -u PERF_PROFILING -u PERF_SQLSTATS_TAG -u PERF_SQLSTATS -u PERF_COAUTHOR_RATES -u PERF_TRACE -u PERF_RESULTS_DIR -u PERF_MEM_CYCLES -u PERF_MEM_SNAPSHOTS PERF_SCALE=1 PERF_RUN_ID=20261026-s1 PERF_WEB=http://localhost:8080 PERF_SQLSTATS_TAG=memory npx playwright test scenarios/memory.spec.ts"
},
"memtrend": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T07:44:37+0400",
"end": "2026-10-26T07:44:37+0400",
"duration_s": 0,
"cmd": "cd 'perf' && 'perf/.venv/bin/python' -m perfkit.memtrend 'results/20261026-s1' | tee 'results/20261026-s1/memtrend.txt'"
},
"bench": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T07:44:37+0400",
"end": "2026-10-26T07:54:02+0400",
"duration_s": 564,
"cmd": "cd 'perf' && 'perf/.venv/bin/python' -m perfkit.bench 'results/20261026-s1' --repeats 20 --scale 1"
},
"aggregate": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T07:54:02+0400",
"end": "2026-10-26T07:54:02+0400",
"duration_s": 0,
"cmd": "cd 'perf' && rm -f 'perf/report-data/20261026-s1/summary.json' && 'perf/.venv/bin/python' -m perfkit.aggregate 'results/20261026-s1' && { [ ! -f 'results/20261026-s1/modal.jsonl' ] || 'perf/.venv/bin/python' -m perfkit.modals_inventory 'results/20261026-s1'; } && mkdir -p 'perf/report-data/20261026-s1' && for d in results/20261026-s1/sql/*/; do if [ -d \"$d\" ]; then t=$(basename \"$d\"); mkdir -p 'perf/report-data/20261026-s1/sql/'$t || exit 1; if [ -f \"$d\"sql_top.json ]; then cp \"$d\"sql_top.json 'perf/report-data/20261026-s1/sql/'$t/ || exit 1; fi; if [ -d \"$d\"explain ]; then cp -R \"$d\"explain 'perf/report-data/20261026-s1/sql/'$t/ || exit 1; fi; fi; done && for f in results/20261026-s1/memtrend.txt results/manifest-s1.json results/gen-stats-s1.json results/grow-s1.json results/20261026-s1/run-all.status.json; do if [ -f \"$f\" ]; then cp \"$f\" 'perf/report-data/20261026-s1/' || exit 1; fi; done && ls -R 'perf/report-data/20261026-s1' && test -f 'perf/report-data/20261026-s1/summary.json'"
}
}
}