- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux内核RPS和RFS功能详细测试分析
·RPS和RFSRPS 全称是 Receive Packet Steering, 这是Google工程师 Tom Herbert (therbert@ )提交的内核补丁, 在2.6.35进入Linux内核. 这个patch采用软件模拟的方式,实现了多队列网卡所提供的功能,分散了在多CPU系统上数据接收时的负载, 把软中断分到各个CPU处理,而不需要硬件支持,大大提高了网络性能。RFS 全称是 Receive Flow Steering, 这也是Tom提交的内核补丁,它是用来配合RPS补丁使用的,是RPS补丁的扩展补丁,它把接收的数据包送达应用所在的CPU上,提高cache的命中率。这两个补丁往往都是一起设置,来达到最好的优化效果, 主要是针对单队列网卡多CPU环境(多队列多重中断的网卡也可以使用该补丁的功能,但多队列多重中断网卡有更好的选择:SMP IRQ affinity)原理RPS: RPS实现了数据流的hash归类,并把软中断的负载均衡分到各个cpu,实现了类似多队列网卡的功能。由于RPS只是单纯的把同一流的数据包分发给同一 个CPU核来处理了,但是有可能出现这样的情况,即给该数据流分发的CPU核和执行处理该数据流的应用程序的CPU核不是同一个:数据包均衡到不同的 cpu,这个时候如果应用程序所在的cpu和软中断处理的cpu不是同一个,此时对于cpu cache的影响会很大。那么RFS补丁就是用来确保应用程序处理的cpu跟软中断处理的cpu是同一个,这样就充分利用cpu的cache。应用RPS之前: 所有数据流被分到某个CPU, 多CPU没有被合理利用, 造成瓶颈 应用RPS之后: 同一流的数据包被分到同个CPU核来处理,但可能出现cpu cache迁跃应用RPS+RFS之后: 同一流的数据包被分到应用所在的CPU核必要条件使用RPS和RFS功能,需要有大于等于2.6.35版本的Linux kernel.如何判断内核版本:$ uname –r2.6.38-2-686-bigmem对比测试类别测试客户端测试服务端型号BladeCenter HS23pBladeCenter HS23pCPUXeon E5-2609Xeon E5-2630网卡Broadcom NetXtreme II BCM5709S Gigabit EthernetEmulex Corporation OneConnect 10Gb NIC内核3.2.0-2-amd643.2.0-2-amd64内存62GB66GB系统Debian 6.0.4Debian 6.0.5超线程否是CPU核46驱动bnx2be2net客户端: netperf服务端: netserverRPS cpu bitmap测试分类: 0(不开启rps功能), one cpu per queue(每队列绑定到1个CPU核上), all cpus per queue(每队列绑定到所有cpu核上), 不同分类的设置值如下0(不开启rps功能)/sys/class/net/eth0/queues/rx-0/rps_cpussys/class/net/eth0/queues/rx-1/rps_cpussys/class/net/eth0/queues/rx-2/rps_cpussys/class/net/eth0/queues/rx-3/rps_cpussys/class/net/eth0/queues/rx-4/rps_cpussys/class/net/eth0/queues/rx-5/rps_cpussys/class/net/eth0/queues/rx-6/rps_cpussys/class/net/eth0/queues/rx-7/rps_cpussys/class/net/eth0/queues/rx-0/rps_flow_cnt 0/sys/class/net/eth0/queues/rx-1/rps_flow_cnt 0/sys/class/net/eth0/queues/rx-2/rps_flow_cnt 0/sys/class/net/eth0/queues/rx-3/rps_flow_cnt 0/sys/class/net/eth0/queues/rx-4/rps_flow_cnt 0、/sys/class/net/eth0/queues/rx-5/rps_flow_cnt 0/sys/class/net/eth0/queues/rx-6/rps_flow_cnt 0/sys/class/net/eth0/queues
文档评论(0)