diff --git a/docs/LOADTEST-PHASE-5e.md b/docs/LOADTEST-PHASE-5e.md new file mode 100644 index 0000000..be65a90 --- /dev/null +++ b/docs/LOADTEST-PHASE-5e.md @@ -0,0 +1,60 @@ +# Phase 5e — Load test: 16 источников 4K @ 25fps + +Дата: 2026-06-03 Хост: R9-88.23 (RTX 5090). + +## Сценарий + +Композитор настроен на 16 ячеек в 4×4 grid на 4K output (3840×2160 @ 25fps, +15 Mbps). Каждая ячейка 960×540. Источники — 4 реальные камеры повторяются +4 раза каждая (cam-parking, cam-back_yard, cam-front_yard, cam-gate_lpr → +16 cfc_source_t-подписок к 4 уникальным publisher'ам). + +Цель — узнать практический потолок RTX 5090 для composer + NVENC при +максимальной композиционной нагрузке. + +## Результат — главное + +``` +Длительность теста: 46+ секунд +FPS: 25.0 СТАБИЛЬНО (1150 кадров, 0 drops, 0 stale, 0 dead) +GPU util: 47% +NVENC sessions: 2 (наш + cuda-grid-pipeline) +VRAM total system: 24.6 GiB (composer + Frigate + pipeline) +RTSP: h264 3840x2160 25/1 +``` + +**RTX 5090 имеет значительный запас** — 47% util означает что можно +тянуть ~2× больше композиционной нагрузки (32 cells × 540p или +16 cells × 1080p без resize). + +## Visual artifact ⚠ + +Snapshot `phase5e-load16.jpg` показывает: первый row 4 ячеек корректно +(parking, back_yard, front_yard, gate_lpr), но rows 2-4 — вертикальные +полосы (stripe artefact). Гипотеза — race condition: 4 cfc_source_t +повторно подписываются на одного publisher'а, в сумме 16 consumers на +ring buffer'е размером 16 → tight fit, slot rotation не успевает +очищать буферы. + +**FPS-метрики не пострадали** — encoder обрабатывает поврежденные +ячейки штатно, поток валиден для VLC, но визуально часть ячеек +испорчена. + +Этот бag НЕ блокер для load test'а (главная цель — узнать FPS-потолок), +но Phase 5e-fix нужен для production deploy с повторными подписками. +Решения: +1. Composer detect'ит идентичные source_key и переиспользует cfc_source_t + (один subscriber → N cells). Это устранит multi-consumer race. +2. Либо увеличить ring buffer cuframes до 32 (если producer поддерживает). + +## Сравнение с разбором GTX 1050 + +| Метрика | RTX 5090 16-source | GTX 1050 16-source (расчёт) | +|---|---|---| +| NVDEC throughput | 4 уникальных decode, OK | 4 unique → ~110 Mpix/s OK | +| Composition (16 resize) | 47% GPU util | Пропорция bandwidth ~80% | +| NVENC 4K@25 | 207 Mpix/s, ОК | 207 Mpix/s, на грани | +| VRAM | хватает | впритык на 4GB | + +На 1050 16 ячеек 4K теоретически возможно, но без запаса. Реалистичный +prod-target на 1050 = 8-12 ячеек 1080p, как и оценивалось ранее. diff --git a/docs/phase5e-load16.jpg b/docs/phase5e-load16.jpg new file mode 100644 index 0000000..4490f9a Binary files /dev/null and b/docs/phase5e-load16.jpg differ