From 9781bd5d0e28f182fd6ad4e08353a1172d2e72ff Mon Sep 17 00:00:00 2001 From: vegard Date: Thu, 19 Mar 2026 08:11:20 +0000 Subject: [PATCH] =?UTF-8?q?Skjermen:=20ytelsesanalyse=20for=20n=C3=A5v?= =?UTF-8?q?=C3=A6rende=20server?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 8-kjerners EPYC, 16 GB RAM, 270 Mbit/s. Klientside compositing takler 3+ samtidige team. Server-side begrenset til 1 sesjon. Strategi: klientside default, server-side som valgfri premium. Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/proposals/skjermen.md | 64 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/docs/proposals/skjermen.md b/docs/proposals/skjermen.md index 431d333..e2894ce 100644 --- a/docs/proposals/skjermen.md +++ b/docs/proposals/skjermen.md @@ -278,6 +278,70 @@ Ved sceneskifte med pause: - Server-side compositing (FFmpeg) - Opptak med pause/resume og markører +## Ytelsesanalyse (mars 2026) + +### Serverspesifikasjoner + +- 8 kjerner AMD EPYC @ 2.4 GHz (ingen hyperthreading) +- 16 GB RAM (~10 GB tilgjengelig) +- 204 GB ledig disk +- ~270 Mbit/s båndbredde (Hetzner) +- Ingen GPU + +### Video-strømmer (LiveKit SFU) + +LiveKit er en SFU (Selective Forwarding Unit) — den videresender +strømmer uten transkoding. Minimal CPU, primært båndbredde. + +- 3 deltakere: 9 strømmer (3 inn + 6 ut), ~15-25 Mbit/s +- 10 deltakere: 100 strømmer, ~150-250 Mbit/s uten simulcast +- 10 deltakere med simulcast: ~80-120 Mbit/s (realistisk) +- LiveKit RAM: ~50-100 MB per sesjon med 3 deltakere + +### Server-side compositing (FFmpeg) + +FFmpeg compositor: flere video-strømmer → én output. +- 3 strømmer @ 720p → 1080p: ~2-3 CPU-kjerner kontinuerlig +- RAM: ~500 MB - 1 GB per FFmpeg-instans + +### Kapasitetstabell + +| Scenario | Gjennomførbart? | Flaskehals | +|----------|----------------|------------| +| 3 deltakere, klientside opptak | ✅ Enkelt | Ingen | +| 3 deltakere, server compositing | ✅ Ja | 2-3 CPU-kjerner | +| 10 deltakere, klientside | ✅ Ja (med simulcast) | Båndbredde | +| 10 deltakere, server compositing | ⚠️ Grenseland | CPU + båndbredde | +| 3 samtidige team, klientside | ✅ Ja | LiveKit RAM | +| 3 samtidige team, server comp. | ❌ Nei | CPU (trenger 6-9 kjerner) | +| 3 team klient + 1 team server | ✅ Ja | Balansert | + +### Strategi + +**Klientside compositing som default.** Skjerm-panelet bruker +Canvas API til å komponere video-strømmene i nettleseren. +Opptak via MediaRecorder API. Serveren bare videresender strømmer. + +Fordeler: +- Serveren belastes minimalt — skalerer til mange samtidige team +- Null ekstra CPU for compositing +- Lavere latens (ingen round-trip til server) + +Ulemper: +- Opptak-kvalitet avhenger av klientens maskin +- Klienten må ha nok CPU (moderne laptop/desktop er nok) + +**Server-side compositing som valgfri premium:** +- For opptak i høyere kvalitet enn klienten klarer +- For eksport/re-rendering i etterkant +- Begrenset til én sesjon om gangen på nåværende server +- Købasert: "bestill rendering" → jobbkø → ferdig → varsling + +**Oppgradering ved behov:** +- 16-kjerner, 32 GB hos Hetzner: ~€30/mnd ekstra +- Gir kapasitet for 2-3 samtidige server-side compositinger +- Eller: dedikert render-server (billig Hetzner-boks kun for FFmpeg) + ## Prioritet Høy ambisjon, kan bygges inkrementelt: