Hardware & InferentieOpen Source 🇷🇺 07.08.2026 13:02

8,8 Gbps videoverkeer op één CPU-core behalen in Go

MicrosoftMicrosoft
Een ontwikkelaar van Habr beschrijft het bouwen van een op maat gemaakte RTSP-naar-HLS-streamingengine in Go, genaamd Ruseon Core, om het Thundering Herd-probleem aan te pakken. De engine gebruikt een zero-copy-ringbuffer met sync.Pool om toewijzingen te voorkomen, en behaalt een doorvoer van 8,8 Gbps op één core, met minimaal geheugen- en CPU-gebruik, in tegenstelling tot FFmpeg of MediaMTX.
Nadat een gedeelde link een thundering herd en server-OOM veroorzaakte, besloot de auteur om een eigen streaming-engine in Go te bouwen in plaats van krachtigere hardware te huren. De engine, genaamd Ruseon Core, neemt RTSP-streams op en levert HLS zonder transcoderen, alleen het doorgeven van bytes. Het belangrijkste kenmerk is een zero-copy ringbuffer met sync.Pool: frames worden één keer geschreven in een buffer uit een pool en gedeeld met alle abonnees, waardoor toewijzingen en GC-druk worden geëlimineerd. Benchmark toont 13,9 ns/op en 0 B/op. Belastingtests met k6 (1000 gebruikers) op een Ryzen 5600x haalden 8,8 Gbps (81 GB in 70 seconden) met 60.000 succesvolle HTTP-antwoorden en geen fouten. Bescherming van abonnees gebruikt niet-blokkerende kanaalverzendingen met het laten vallen van frames voor langzame clients, en een NeedsIFrame-vlag om te hersyncen op de volgende keyframe. Een schuifvenster van 5 HLS-segmenten wordt in het geheugen bewaard; verouderde segmenten retourneren 404, waardoor spelers zoals hls.js naar de live edge springen. Het systeem gebruikt 250 MB RAM voor 100 streams, maar OS-socketbuffers voegen overhead toe. De auteur waarschuwt voor valkuilen van sync.Pool en suggereert dat voor niet-transcoderende workloads het vermijden van FFmpeg en het beheersen van geheugen met zero-copy voordelig is.
Bron: Habr — хаб ИИ — origineel
Eerdere berichten over dit onderwerp ↓
Vers nieuws