yuanrongxi / razor

A google's congestion Control Algorithm
MIT License
355 stars 156 forks source link

BDP问题 #30

Closed xftao closed 3 years ago

xftao commented 3 years ago

袁老师您好,请教一下。我注意到bbr模块中pacer发送把原本的拥塞窗口控制给关掉了。这方面有什么考量么?

yuanrongxi commented 3 years ago

BBR的窗口突发带宽非常大会造成WIFI情况下网络延迟很大,我考虑到音视频实时的问题,所以加了个pacer来平滑发送,让延迟更加平滑,不出现瞬时网络抖动大的情况。

xftao commented 3 years ago

BBR的窗口突发带宽非常大会造成WIFI情况下网络延迟很大,我考虑到音视频实时的问题,所以加了个pacer来平滑发送,让延迟更加平滑,不出现瞬时网络抖动大的情况。

意思是用了pacer之后,就不需要用拥塞窗口控制了么~

yuanrongxi commented 3 years ago

BBR拥塞控制是用来评估pacer的发送码率的,拥塞窗口没有使用。

xftao commented 3 years ago

BBR拥塞控制是用来评估pacer的发送码率的,拥塞窗口没有使用。

非常感谢袁老师耐心地回答~ BBR的论文中是结合拥塞窗口和pacer来控制发送数据量和发送速率的。我发现razor中bbr_pacer原本也是用了拥塞窗口的。但是一年前有个改动—注释掉并强制返回0即关掉拥塞窗口。这个改动的原因是因为使用了拥塞窗口表现不好么?

adcen0107 commented 3 years ago

袁老师,如果Razor平滑过多的话,会不会增大延时呢?

yuanrongxi commented 3 years ago

袁老师,如果Razor平滑过多的话,会不会增大延时呢?

在pacer范围内的最大延迟大概会在30ms,一般不会有延迟,因为视频编码是一个相对平稳的码率,除了关键帧稍微大一点。

adcen0107 commented 3 years ago

袁老师,我个人觉得,项目里面用了很多malloc,calloc,比较频繁地申请释放,会导致内存碎片化,关于这点您是怎么考虑的呢?

yuanrongxi commented 3 years ago

袁老师,我个人觉得,项目里面用了很多malloc,calloc,比较频繁地申请释放,会导致内存碎片化,关于这点您是怎么考虑的呢? 可以考虑tcmalloc/jemalloc来优化,我们在生产环境上使用拥塞控制算法模块,并没有发现太多这方面的问题