码迷,mamicode.com
首页 > 其他好文 > 详细

ixgbe RSS原理分析

时间:2015-08-31 17:21:13      阅读:353      评论:0      收藏:0      [点我收藏+]

标签:

这个月,一直在搞ixgbe RSS,希望能使得收包均衡,结果没成功,但是对网卡的收包原理理解得更深入些。

1、网卡硬件通过网线或者光纤收包。

2、网卡的RSS功能根据网络五元组计算得到32bit的hash值,

     根据hash值的低7位(0-127)与网卡queue的映射关系,

  把收到的数据包放到某个queue上。

3、做了cpu亲和性绑定时,一个queue上的数据包就由对应的一个core来处理。

 

reta寄存器负责为hash值的低7位和网卡queue建立映射关系,ixge驱动默认的映射关系是比较均衡的。

以12个队列为例,映射关系如下图:

技术分享

 

 现在线上机器遇到的问题是:由于haproxy在局域网机器之间数据交换量大,导致某几个

五元组比较集中,进而导致hash值的低7位比较集中,最后导致queue比较集中,对应的core负载也大

如下图所示。

技术分享

我想到了两种办法来避免core使用率高。

方法一、采用round-robin策略,周期性修改reta寄存器,第一次是[0-11],第二次是[1-11,0],

第三次是[2-11,0,1]以此类推,这样每个队列收包看起来就比较均衡了,但没有改变core使用率。

方法二、产生随机值,根据收包多少来决定权重,最后根据权重来产生queue编号,

这样使得收包少的queue要多,收包多的queue要少。

不过,实际测试这两种方法都没有效果,想不通了。

ixgbe RSS原理分析

标签:

原文地址:http://www.cnblogs.com/mylinuxer/p/4773378.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!