I noticed that in the application I’ve integrated mediasoup into, a lot of bandwidth is used when video streams are being sent. I figured out how to use simulcast so that consuming clients request low-resolution/low-bandwidth layers, which helped some, but I was still seeing much higher bandwidth usage than I’d expect. I noticed that the probator is sending ~2 MB every 5 seconds, which seems to be responsible for this excess usage.
I looked at the mediasoup demo and saw that the probator there is only getting about 12 kB every 5 seconds, which is far more in line with what I would like to see in my application. When I enabled tracing on probation packets on the server, I see about 1400 packets each time it sends them to the client. What factors influence how many probation packets get sent out?
I figured out the problem. I had set initialAvailableOutgoingBitrate very high on the server side, 1 Gbps. I guess supporting an available bitrate this high requires a lot of coordination on the probator’s part. Turning this down to 10 Mbps slashed the probator to sending something like 16 packets every 5 seconds when using VP8, which totals to about 26 kB. Interestingly, turning this down to 1 Mbps didn’t cause the probator to send any less data.
This isn’t quite as low as the mediasoup demo, which as I’d said in the initial post is sending 12 kB every 5-second interval, but it’s a rounding error compared to what it was using before. I also noticed that when using VP9, the probator data usage continues to scale down as I go from 10 Mbps to 1 Mbps (and further if I cut it to 100 kbps, which I did just for test/curiosity purposes).
Also, for future reference, it does not appear that maxIncomingBitrate has any impact on the probator. Maybe this is obvious to those who have a deep understanding of the probator, but I didn’t even really know what the probator was until I started digging into this problem.