免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 瀚海书香
打印 上一主题 下一主题

多队列网卡RSS与RPS的配置 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2012-02-29 16:41 |显示全部楼层
瀚海书香 发表于 2012-02-29 11:32
4核心CPU,网卡(82580)队列设置为4个队列。
在开启RPS的情况下,是否有必要将4个队列的中断指定到不同的 ...


如果是 TCP/UDP 应用,建议开启RFS,可以将stream导入到期望的CPU上。而RSS仅仅是根据hash值确定处理器。
由于RFS/RSS都不能提供irq affinity hint,所以使用irqbalance足够。

论坛徽章:
0
2 [报告]
发表于 2012-03-02 13:26 |显示全部楼层
瀚海书香 发表于 2012-03-02 10:07
回复 6# 独孤九贱

但是硬件调度只是单纯的hash调度,而RFS可以根据sock来调度。


硬件可以做perfect filters, 参考sfc卡,sfc有1024个perfect filters可以针对五元做精确的匹配。
另一个可以参考的是ixgbe, ixgbe有基于hash的filters也有perfect filters

sfc和ixgbe都可以和驱动协作:

sfc采用的是accelerate RFS方法,这种方法基于RFS,它讲软件维护的flow to cpu表,通过irq affinity逆向映射既cpu to vector表,得到一个flow to vector表,每个队列(确切的说是channel)都有自己的MSI-X映射,所以由此得到了flow to queue映射,这时候RFS通过驱动程序注册的回调函数,讲flow to queue映射翻译成网科可以理解的filter表项。通过这种方式,sfc可以讲packet直接发送给期望的cpu,避免的IPI带来的开销,而且管理员可以根据配置irq affinity。

ixgbe采用的是另外一种方法,他使用的的hash filter,并且尽可能的为每一个CPU分配独占的队列,这是通过:
1)在发送是基于smp_processor_id()取得tx queue的队列
2)接受端绑定irq affinity,尽可能的使映射为1:1映射
通过两种方式,每个CPU(在CPU总数不是太多时)有自己独占的队列。
另外ixgbe采用的是ATR(Application Target Receiving),既如果一个flow的packet最后是从CPU M(队列M)发送的,那在接受这个队列的包时也被放到队列M中由CPU M处理。可以参考ixgbe_atr()实现,ixgbe在包发送前,都会对82599的hash filter编程,确保该flow的包被送到发送的处理器。

两种方式各有千秋,很难说那种好。理论上说ixgbe可以被修改并使用accelerate RFS,反之亦然。

论坛徽章:
0
3 [报告]
发表于 2012-03-04 10:00 |显示全部楼层
瀚海书香 发表于 2012-03-02 14:41
回复 8# crspo
按你所描述的ixgbe的情况,我认为就完全不需要RFS了,因为他已经可以做到基于sock或者说进 ...


82576似乎没有硬件的filter,所以需要软件的RFS. 更老的卡应该连多队列都没有。

论坛徽章:
0
4 [报告]
发表于 2012-03-05 20:22 |显示全部楼层
瀚海书香 发表于 2012-03-05 11:53
回复 11# crspo

对应不支持硬件filter的,肯定是开启RFS的性能会高一些;但是对应支持多队列的网卡呢? ...


个人认为多队列的网卡还是需要filter的。对于是否开启RFS,可能还要看具体应用吧,我没有测试过。RFS还是对单队列的网卡好一点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP