美文网首页
云游戏方案之解码端排队队列调优

云游戏方案之解码端排队队列调优

作者: myxu_bin | 来源:发表于2023-11-27 11:50 被阅读0次

    概述

    论文:Enabling High Quality Real-Time Communications with Adaptive Frame-Rate
    这篇论文研究了如何为高质量的实时通信(RTC)应用优化解码器队列延迟。主要内容和贡献总结如下:
    引言部分指出,随着5G等新网络技术的发展,高清和高帧率的实时通信应用日益普及,如云游戏、虚拟现实等。这些应用对端到端延迟要求极高(约100ms)。
    作者通过实测发现,在这些应用中,解码器队列经常出现拥塞,成为延迟的主要来源。这是由于高帧率增加了帧的到达速率,而高清的视频解码时间更长,两者共同导致了解码器队列利用率过高。
    作者提出了自适应帧率控制器(AFR),它可以动态调整帧率,减少解码器队列的排队延迟。AFR包含两个控制器:固定控制器根据解码速率预测潜在的排队延迟;瞬变控制器则根据实际队列状态做出反应。
    在仿真和实际部署中对AFR进行了评估。结果显示,AFR可以将排队延迟的99分位数量降低7.4倍,将严重排队的帧比例降低26倍;同时也减少了总体延迟,提高了用户体验。
    AFR已在云游戏产品中使用超过一年,为数万用户提供服务。

    原理

    AFR中的两个控制器具体如下:

    固定控制器(Stationary Controller)
    这个控制器的目的是预测和控制解码器队列的常态排队延迟。它的工作流程如下:

    (1) 测量视频帧的到达间隔(enqueue 过程)和解码延迟(dequeue过程)的统计值,包括平均值和方差。

    (2) 根据这些统计值,利用Kingman公式预测解码器排队的预期延迟。

    (3) 根据预期延迟和目标延迟,计算出目标帧率,以减少排队延迟。

    这样设计的好处是可以提前感知到解码器负载的变化,比直接测量排队延迟响应更快。同时使用了双EWMA滤波,可以平衡测量的敏感性和稳定性。

    瞬变控制器(Transient Controller)
    这个控制器的目的是处理突发的排队延迟增加,例如解码卡顿或网络突发。它的工作原理如下:

    (1) 根据当前队列最前端帧的等待时间,判断当前增加的排队延迟是由解码还是网络造成的。

    (2) 如果是解码卡顿,那么大幅降低目标帧率以减轻解码器压力;如果是网络突发,则不调整帧率。

    这样设计的好处是可以区分不同原因导致的突发排队增加,做出不同的控制,避免过度反应。

    总体来说,两个控制器作为层次式控制的不同层次,能够合作应对解码器排队延迟的各种变化, Keep 一个 Ultra Short的排队延迟。

    kingman公式

    Kingman公式是评估G/G/1队列的平均排队延迟的一个经典近似公式。其表达形式为:

    E[t_{queue}] \approx \frac{\rho}{(1-\rho)\mu_s}(c_a^2+c_s^2)

    其中:

    E[t_{queue}]:平均排队延迟
    \rho:系统利用率,定义为 \rho = \lambda/\mu,即到达率\lambda与服务率\mu的比值
    \mu_s:平均服务时间
    c_a:c_a = \sigma_a/\mu_a,到达过程变异系数,\sigma_a是到达间隔的标准差,\mu_a是平均到达间隔
    c_s:c_s = \sigma_s/\mu_s,服务过程变异系数,其定义方式与c_a相同
    可以看出,平均排队延迟与以下因素相关:

    系统利用率\rho:利用率越高,排队延迟越长
    服务时间\mu_s:平均服务时间越长,排队延迟越长
    过程变异系数c_a,c_s:过程变异越大,排队延迟也越长
    Kingman公式结合了队列特性中重要的因素,可以有效估算排队延迟,且计算简单,因此被广泛使用。

    AFR使用Kingman公式来预测排队延迟,以便及早做出帧率控制,这是其的一个创新之处。

    瞬变控制器关键设计

    瞬变控制器判断是解码卡顿还是网络突发的方法比较巧妙。主要利用了队首帧的“等待时间”这一指标。

    具体来说,定义队首帧(即最先进入队列的帧)的等待时间为tQ,计算方式如下:

    t_Q=t_{K_2}^{enq}-t_{K_1}^{enq}

    其中,

    t_{K_2}^{enq}:当前帧的进入队列时间
    t_{K_1}^{enq}:队首帧的进入队列时间
    也就是说,tQ反映了队首帧进入队列到当前帧进入队列的这段时间。

    根据tQ的大小可以判断:

    (1) 如果tQ很短,比如在几毫秒级别,说明之前的帧都是突发进入队列的,很可能是网络突发的原因。这时不需要降低帧率。

    (2) 如果tQ很长,比如超过50ms,说明之前的帧在队列中等待了很久,很可能是解码卡顿的原因。这时需要立即降低帧率以减轻压力。

    所以tQ这个指标反映了导致排队的具体原因,这使得瞬变控制器可以有针对性地做出不同控制,而不会过度反应。这是其设计的一个亮点。

    相关文章

      网友评论

          本文标题:云游戏方案之解码端排队队列调优

          本文链接:https://www.haomeiwen.com/subject/zgvzwdtx.html