转折点:WebRTC SFU负载测试(三)

免责声明

首先要向大家声明:所有团队均已查看、评估了SFU的结果。

早些时候,Kurento Media Server团队意识到他们的服务器崩溃,我们正在与他们合作解决这个问题。在Kurento / OpenVidu上,我们测试了最多140个数据流(因为它早前就崩溃了)。

此外,libnice中存在一个已知错误。在我们的初始测试期间,这一错误同时影响了Kurento / OpenVidu和Janus。在Janus团队的建议应用libnice补丁后,我们得到的结果有了显著改善。但是使用Kurento / OpenVidu上的补丁进行重新测试时,情况更加糟糕了。我们的结论是Kurento存在其他问题。我们正在与他们联系并进行修复,Kurento / OpenVidu的测试结果很快会得到改善。

最新版本的Jitsi Videobridge(截至本文发布时),在240位用户同时在线时表现不稳定。 Jitsi团队意识到了这一点,正努力解决问题。但是他们指出,一般他们会建议依赖水平缩放,并使用大量的这种较小实例。请注意:以前的版本(即两个月前)没有这些稳定性问题,但性能也不佳(下一节中会深入讨论这个问题)。所以我们选择保留版本0.1.1077,因为它联播更好,显著改善了240位参与者时的测试结果。

还应注意:自测试以来,所有这些产品基本都有版本更新。在测试结果公布之后,已有一些产品做出了改进。

测量

作为参考,我们选择了一种常见的视频测试序列,并使用几种视频质量评估指标来计算其视频质量得分:

SSIM:比较失真图像和原始图像之间差异的通用指标;

VMAF:Netflix使用和开发的一些指标的1综合度量;

NARVAL:我们的算法,不需要参考。

图1 对不同比特率的各种视频质量指标进行基准测试

注意:质量得分和比特率之间的关系不是线性的。如果你以参考值(1.7Mbps)为起点,逐渐降低贷款,那么质量得分只会略微降低,直到达到低比特率阈值之后才大幅降低。如果你要丢失10%的可感知视频质量,根据WMAF你需要将带宽减小到250Kbps;根据SSIM甚至需要将带宽减小到150kbps;根据NARVAL,你要将带宽减小到100k。

SFU的测试显示了相同的模式。图2显示了每个SFU的比特率与参与者数量的关系。从这张图可以看到WebRTC尽早启动了拥塞控制算法(在大约有250名参与者时)以保持比特率。但是图3显示等待时间是线性增加的。尽管带宽减少、延迟增加,但是图4中所示的视频质量指标仅在带宽低于200k时才报告质量下降。这再次表明,比特率和延迟并不能完全说明视频质量好坏。

图2 JItsi不能负载同时有240名参与者在线。Kurento / OpenVidu早已暴露出此问题。 Janus和mediasoup的表现似乎优于Medooze。 可能因为他们CPU优化更好。拐点与各个CPU的饱和度相关(在本文中未显示)。

图3 JItsi不能负载同时有240名参与者在线,Kurento / OpenVidu在负载50名左右出现问题。如果没有这些问题的话,各个SFU会表现出可比的行为。

图4 视频质量在实验后期才下降,表明拥塞控制机制可以很好地发挥作用,并且做出了适当的妥协,去调整其他参数的同时保持较高的感知质量。

测试期间SFU的改进

除了我们上面展示的结果以外,更有趣的是可以看到这项研究推动了测试结果的改进。推动测试获得更高的关注度,就可以使各个团队解决迫在眉睫的问题。

你还可以观察到Janus很快受到了限制。其团队已经在外部库中确定了此瓶颈,并找到了可能的解决方案,但他们从未真正评估过真正的影响。我们可以清楚地看到本节中的图表(首次运行)与上一节中的图表(最新结果)之间的区别,Janus似乎表现最好。

 

比特率与负载的关系

左图:补丁应用于Janus和Jitsi之前;右图:补丁应用于Janus和Jitsi之前之后。我们还添加了mediasoup测试结果(即绿色曲线)。在两幅图中,Medooze和Kurento / OpenVidu的测试结果相同,因为第二次也无法产生更好的结果。

RTT或延迟与负载(对数标度)有关

左图:补丁应用于Janus和Jitsi之前;右图:补丁应用于Janus和Jitsi之后。我们还添加了mediasoup测试结果(即绿色曲线)。Medooze和Kurento / OpenVidu的测试结果来自同一数据集。

结论

我们希望本文能够让大家明白:现在,借助KITE、CoSMo和最近与WebRTC生态系统作者合作开发的其他一些工具,SFU的无偏比较测试相对容易实现了。我们将继续与其他开源WebRTC SFU供应商合作,帮助他们改进软件。我们正计划尽可能多地公开这些用于测试的代码,并且以非盈利的方式为公众研究人员提供使用该工具的途径。最终,我们希望将这些测试结果作为“实时”网页进行托管。这样,如果新版本软件发布,这个网页可以提供新测试结果。

→  相关阅读:WebRTC 通话质量调优必备:三个弱网模拟测试工具

文章地址:https://webrtchacks.com/sfu-load-testing/

原文作者:Alex Gouaillard

 

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营