Phase 5e: load test 16 источников 4K @ 25fps на RTX 5090
Результат: 46+ секунд работы, 1150 кадров, 0 drops FPS = 25.0 СТАБИЛЬНО GPU util = 47% (большие запасы для масштабирования) 16 active, 0 stale, 0 dead — все подписки удерживаются ffprobe видит валидный h264 3840x2160 25/1 на mediamtx Visual artifact в rows 2-4 (вертикальные полосы) — гипотеза: race condition при 4 cfc_source_t подписках на одного publisher'а (16 consumers vs 16-slot cuframes ring buffer = tight fit). FPS не пострадало, но визуально половина ячеек испорчена. Phase 5e-fix planned: composer должен detect одинаковые source_key и переиспользовать один cfc_source_t для N ячеек. Это устранит multi-consumer race и снизит memory footprint. Подробности + снимок в docs/LOADTEST-PHASE-5e.md + docs/phase5e-load16.jpg.
This commit is contained in:
@@ -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, как и оценивалось ранее.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 439 KiB |
Reference in New Issue
Block a user