Banc d'essai vocal Détail technique : chiffres bruts Outil · sfu-bench (open source)

Le détail technique, sans filtre.

Toutes les mesures brutes, la méthode, et ce qu'on ne cache pas. C'est la partie pour les techniciens : rien n'est arrangé, tout est reproductible.

Synthèse

Les trois scénarios d'un coup

La même histoire, résumée : combien de monde selon la forme d'usage, sur un seul serveur 8 cœurs.

ScénarioFormeCapacité (1 serveur, 8 cœurs)Limité par
Pire castous parlent~600 personnesprocesseur
Diffusion audio1 parle, N écoutent~8 000 / cœurprocesseur, puis réseau à grande échelle
Partage d'écran1 partage, N regardent~450 (1 Gbit/s) → ~4 500 (10 Gbit/s)réseau
Test 01

Pire cas : full-mesh (tous parlent)

Une pièce, N participants, chacun consomme tous les autres (N×(N-1) chemins). Le son est parfait jusqu'à ~100, puis décroche.

ParticipantsCheminsCPU (cœurs)% machineRSS (Mo)SonÉtat
Test 02

Plusieurs pièces réparties sur les cœurs

Des pièces de 100 personnes (full-mesh) réparties une par cœur : la charge monte linéairement, ~600 personnes sur 6 cœurs.

PiècesTotal personnesCPU (cœurs)SonÉtat
Test 03

Diffusion audio (1 parle, N écoutent)

Une seule voix relayée à N auditeurs, sur un cœur. En étoile : N chemins, pas N×(N-1).

AuditeursCPU (cœurs)SonÉtat
Qualité audioDébit / auditeurAuditeurs / cœurBande passante à 8000
Économe32 kbps~8 000256 Mbit/s
Standard (≈ Discord)64 kbps~8 000512 Mbit/s
Haute96 kbps~8 000768 Mbit/s
Studio128 kbps~8 000~1 Gbit/s
Test 04

Partage d'écran : vidéo

Une diffusion vidéo relayée à N spectateurs. Côté CPU, très léger (mesuré 720p et 1080p) ; c'est le réseau qui borne, selon la résolution.

Spectateurs (720p)CPU (cœurs)Son
RésolutionDébit typique1 Gbit/s2,5 Gbit/s10 Gbit/s
480p~1 Mbit/s~1 000~2 500~10 000
720p (≈ Discord)~2,5 Mbit/s~400~1 000~4 000
1080p~4,5 Mbit/s~220~555~2 200
4K~16 Mbit/s~62~156~625
Machines

Testé sur du vrai matériel

On ne publie que des machines réellement mesurées. Le tableau s'étoffera au fil des tests sur d'autres configurations.

MachineCœursPire cas (serveur)Audio / cœurVidéo (réseau)
VPS Hetzner CPX428~600~8 000débit-dépendant
Raspberry, mini-PC, autres VPS : à venir (mesurés, jamais inventés)
Méthode & honnêteté

Comment c'est mesuré, et ce qu'on ne cache pas

La méthode

Outil : sfu-bench, dans le dépôt Nodyx. Participants synthétiques injectant du vrai RTP au rythme réel (audio Opus, ou profil vidéo).

In-process : le média est injecté directement dans le moteur (sans passer par le réseau) pour isoler le coût de relais. La limite réseau est donc calculée à part (débit × spectateurs), pas mesurée au banc.

Son : paquets reçus / attendus sur une fenêtre de 2 s par palier. Machine : VPS Hetzner CPX42, 8 cœurs (6 dédiés au média, 2 gardés pour le reste). Lancé en basse priorité.

Ce qu'on ne cache pas

Le partage d'écran sur ce moteur n'est pas encore en production (il arrive). Les chiffres vidéo mesurent ce que le moteur encaisse en relais, pas « le partage d'écran est parfait ». La fluidité à l'écran (côté navigateur) se teste en vrai, pas au banc.

Le vocal en production aujourd'hui, c'est l'audio.

Pire cas assumé : le full-mesh (tous parlent en même temps) n'arrive jamais en vrai. Les cas réels tiennent bien plus de monde. Rien n'est arrangé : les mesures brutes sont ci-dessus.

Reproductible

Vérifiez vous-même

Rien n'est une boîte noire. L'outil de mesure est open source (AGPL-3.0). Compilez-le, lancez-le, comparez : ce sont exactement ces commandes qui alimentent ces pages.

Le code : github.com/Pokled/nodyx, binaire sfu-bench dans nodyx-p2p/crates/nodyx-sfu-mediasoup.

# compiler
cd nodyx-p2p/crates/nodyx-sfu-mediasoup
cargo build --release --bin sfu-bench

# pire cas : full-mesh (tous parlent)
./target/release/sfu-bench 2,5,10,20,50,100,150,300

# plusieurs pièces réparties sur les cœurs
SFU_BENCH_WORKERS=6 ./target/release/sfu-bench rooms 100 1,2,4,6

# diffusion audio : 1 parle, N écoutent
./target/release/sfu-bench watch 1 250,1000,5000,8000

# partage d'écran 720p (~2,5 Mbit/s) : 1 partage, N regardent
SFU_BENCH_PAYLOAD=1250 SFU_BENCH_PACKET_MS=4 ./target/release/sfu-bench watch 1 800,1600

Chaque test imprime un tableau lisible et un JSON pour l'archivage. Les chiffres de ce site sortent tels quels de cet outil.

Les scénarios