帧同步~延时波动

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

  曾经我也认为网络处时是一个或高或低的固定值,且上行和下行相同。几年工作下来才理解延时和股势一样,实时在变化,且
 

波动产生

  • 网络中路由负载变化
  • 网络同路由缓冲达到上限而随机丢包
  • 通信线路(包括无线)故障而丢包
  • 内核与网卡设置产生延时
  • 传输协议(如 tcp)算法延时
  • 应用层各种缓冲延时

 思路
    
我认为可以改进的地方无线信号丢包、传输协议选择、应用层各种缓、冲内核与网卡。

     无线信号丢包

        这里说的是无线信号丢包为什么包括有线呢,主要就是有线丢包率很小基本<1% 有线路现在的工艺已经很有保障了如果是路由丢包那基本可以认为网络拥塞了,这时就非人力可以右左的了。

        现大来看看无线丢包,无线信号先天不稳定易受干扰所以在信号差的地方丢包率>20%也是常事。优化点在于无信丢包大多是因为信号不好而不是回为网络拥塞所以可以提高重发频率来减少丢包造成的延时波动

    传输协议选择
        tcp or udp 这是个老话题了,但还是要提一下 tcp由于算当上的特点,设计应用场合并不适合在高实时和高丢包率应用。udp由于可以自己实现可靠传输与拥塞所以可以真对使用环境来进行调整。但是能上比不上 tcp 。具体可以看后续文章

    所以实时动作类手游 自定义的 udp 会更适合


    应用层的几个点

         各种缓冲的存在自然的增加了消息处响应的时间。本来这个不能算在网络延时上,但是对用户能感受到的响应 。

       缓冲有存在可以使代码结构更得结构美观功能单一,现在大多数所框架代码结构都会出现。

        如果想保有缓冲又想要减少响应时间这时大多人会分出线程来,分别来处理缓冲的输入和输出。

        那么响应速度就只与逻辑处理线程有关,大多数情况下逻辑线程会被设计成异步处理(线程尽可能不挂起,或定时休眠)。这样的逻辑线程每次处理或发送数据时间间隔就可能因为间隔时间内处理不同影响间隔时间而产生响应波响。


    内核网卡配置

    这个基本是运维的工作,具体要和运维沟通。一般配置都是为了尽可能平衡硬件性能发挥物理机的性能,这种配置实时性不是最高的。所以可以选择定制配置,提高时实性降低整体性能

转载于:https://my.oschina.net/u/2366487/blog/676362

你可能感兴趣的:(帧同步~延时波动)