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
5.7 KiB
JSON

{
"run_id": "20261026-s2",
"scale": 2,
"steps": {
"reset": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T07:54:02+0400",
"end": "2026-10-26T07:54:08+0400",
"duration_s": 6,
"cmd": "'perf/stand.sh' reset"
},
"gen": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T07:54:08+0400",
"end": "2026-10-26T08:49:46+0400",
"duration_s": 3338,
"cmd": "cd 'perf' && 'perf/.venv/bin/python' -m perfkit.gen.run --scale 2"
},
"verify": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T08:49:46+0400",
"end": "2026-10-26T08:50:06+0400",
"duration_s": 20,
"cmd": "cd 'perf' && 'perf/.venv/bin/python' -m perfkit.gen.verify --scale 2"
},
"stand": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T08:50:06+0400",
"end": "2026-10-26T08:50:07+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-26T08:50:07+0400",
"end": "2026-10-26T08:50:08+0400",
"duration_s": 1,
"cmd": "cd 'perf/e2e' && for f in scenarios/scroll.spec.ts scenarios/modals.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=2 PERF_PRIORITY=1,2 npx playwright test --list $f | tail -1 || exit 1; done"
},
"scroll": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T08:50:08+0400",
"end": "2026-10-26T11:19:59+0400",
"duration_s": 8991,
"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=2 PERF_RUN_ID=20261026-s2 PERF_WEB=http://localhost:8080 PERF_LOAD_TIMEOUT_MS=2400000 PERF_TEST_TIMEOUT_MS=5400000 PERF_SQLSTATS_TAG=scroll PERF_REPEATS=1 PERF_TRACE=0 npx playwright test scenarios/scroll.spec.ts"
},
"coauthor": {
"status": "SKIP",
"rc": 0,
"start": "2026-10-26T11:19:59+0400",
"end": "2026-10-26T11:19:59+0400",
"duration_s": 0,
"cmd": "scale 1 only"
},
"grow": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T11:19:59+0400",
"end": "2026-10-26T11:22:15+0400",
"duration_s": 136,
"cmd": "cd 'perf' && 'perf/.venv/bin/python' -m perfkit.gen.grow --scale 2"
},
"modals": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T11:22:15+0400",
"end": "2026-10-26T11:31:24+0400",
"duration_s": 549,
"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=2 PERF_RUN_ID=20261026-s2 PERF_WEB=http://localhost:8080 PERF_LOAD_TIMEOUT_MS=2400000 PERF_TEST_TIMEOUT_MS=5400000 PERF_SQLSTATS_TAG=modals PERF_PRIORITY=1,2 npx playwright test scenarios/modals.spec.ts"
},
"modals_profiling": {
"status": "SKIP",
"rc": 0,
"start": "2026-10-26T11:31:24+0400",
"end": "2026-10-26T11:31:24+0400",
"duration_s": 0,
"cmd": "scale 1 only"
},
"memory": {
"status": "SKIP",
"rc": 0,
"start": "2026-10-26T11:31:24+0400",
"end": "2026-10-26T11:31:24+0400",
"duration_s": 0,
"cmd": "scale 1 only"
},
"memtrend": {
"status": "SKIP",
"rc": 0,
"start": "2026-10-26T11:31:25+0400",
"end": "2026-10-26T11:31:25+0400",
"duration_s": 0,
"cmd": "scale 1 only"
},
"bench": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T11:31:25+0400",
"end": "2026-10-26T11:47:44+0400",
"duration_s": 979,
"cmd": "cd 'perf' && 'perf/.venv/bin/python' -m perfkit.bench 'results/20261026-s2' --repeats 20 --scale 2"
},
"aggregate": {
"status": "OK",
"rc": 0,
"start": "2026-10-26T11:47:44+0400",
"end": "2026-10-26T11:47:44+0400",
"duration_s": 0,
"cmd": "cd 'perf' && rm -f 'perf/report-data/20261026-s2/summary.json' && 'perf/.venv/bin/python' -m perfkit.aggregate 'results/20261026-s2' && { [ ! -f 'results/20261026-s2/modal.jsonl' ] || 'perf/.venv/bin/python' -m perfkit.modals_inventory 'results/20261026-s2'; } && mkdir -p 'perf/report-data/20261026-s2' && for d in results/20261026-s2/sql/*/; do if [ -d \"$d\" ]; then t=$(basename \"$d\"); mkdir -p 'perf/report-data/20261026-s2/sql/'$t || exit 1; if [ -f \"$d\"sql_top.json ]; then cp \"$d\"sql_top.json 'perf/report-data/20261026-s2/sql/'$t/ || exit 1; fi; if [ -d \"$d\"explain ]; then cp -R \"$d\"explain 'perf/report-data/20261026-s2/sql/'$t/ || exit 1; fi; fi; done && for f in results/20261026-s2/memtrend.txt results/manifest-s2.json results/gen-stats-s2.json results/grow-s2.json results/20261026-s2/run-all.status.json; do if [ -f \"$f\" ]; then cp \"$f\" 'perf/report-data/20261026-s2/' || exit 1; fi; done && ls -R 'perf/report-data/20261026-s2' && test -f 'perf/report-data/20261026-s2/summary.json'"
}
}
}