ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:264.75KB ,
资源ID:7240033      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7240033.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(Linux内核RPS及RFS功能详细测试分析.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Linux内核RPS及RFS功能详细测试分析.doc

1、·RPS和RFS · RPS 全称是 Receive Packet Steering, 这是Google工程师 Tom Herbert (therbert@ )提交的内核补丁, 在2.6.35进入Linux内核. 这个patch采用软件模拟的方式,实现了多队列网卡所提供的功能,分散了在多CPU系统上数据接收时的负载, 把软中断分到各个CPU处理,而不需要硬件支持,大大提高了网络性能。 · RFS 全称是 Receive Flow Steering, 这也是Tom提交的内核补丁,它是用来配合RPS补丁使用的,是RPS补丁的扩展补丁,它把接收的数据包送达应用所在的CPU上,提高cache的命中

2、率。 · 这两个补丁往往都是一起设置,来达到最好的优化效果, 主要是针对单队列网卡多CPU环境(多队列多重中断的网卡也可以使用该补丁的功能,但多队列多重中断网卡有更好的选择:SMP IRQ affinity) 原理 RPS: RPS实现了数据流的hash归类,并把软中断的负载均衡分到各个cpu,实现了类似多队列网卡的功能。由于RPS只是单纯的把同一流的数据包分发给同一 个CPU核来处理了,但是有可能出现这样的情况,即给该数据流分发的CPU核和执行处理该数据流的应用程序的CPU核不是同一个:数据包均衡到不同的 cpu,这个时候如果应用程序所在的cpu和软中断处理的cpu不是同一个,此时对于

3、cpu cache的影响会很大。那么RFS补丁就是用来确保应用程序处理的cpu跟软中断处理的cpu是同一个,这样就充分利用cpu的cache。 · 应用RPS之前: 所有数据流被分到某个CPU, 多CPU没有被合理利用, 造成瓶颈 · 应用RPS之后: 同一流的数据包被分到同个CPU核来处理,但可能出现cpu cache迁跃 · 应用RPS+RFS之后: 同一流的数据包被分到应用所在的CPU核 必要条件 使用RPS和RFS功能,需要有大于等于2.6.35版本的Linux kernel. 如何判断内核版本: l $ uname –r l 2.6.38-2-68

4、6-bigmem 对比测试 类别 测试客户端 测试服务端 型号 BladeCenter HS23p BladeCenter HS23p CPU Xeon E5-2609 Xeon E5-2630 网卡 Broadcom NetXtreme II BCM5709S Gigabit Ethernet Emulex Corporation OneConnect 10Gb NIC 内核 3.2.0-2-amd64 3.2.0-2-amd64 内存 62GB 66GB 系统 Debian 6.0.4 Debian 6.0.5 超线程 否 是 CPU核

5、 4 6 驱动 bnx2 be2net l 客户端: netperf l 服务端: netserver l RPS cpu bitmap测试分类: 0(不开启rps功能), one cpu per queue(每队列绑定到1个CPU核上), all cpus per queue(每队列绑定到所有cpu核上), 不同分类的设置值如下 1) 0(不开启rps功能) /sys/class/net/eth0/queues/rx-0/rps_cpus 00000000 /sys/class/net/eth0/queues/rx-1/rps_cpus 00000000 /sys/cl

6、ass/net/eth0/queues/rx-2/rps_cpus 00000000 /sys/class/net/eth0/queues/rx-3/rps_cpus 00000000 /sys/class/net/eth0/queues/rx-4/rps_cpus 00000000 /sys/class/net/eth0/queues/rx-5/rps_cpus 00000000 /sys/class/net/eth0/queues/rx-6/rps_cpus 00000000 /sys/class/net/eth0/queues/rx-7/rps_cpus 00000000 /

7、sys/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/n

8、et/eth0/queues/rx-6/rps_flow_cnt 0 /sys/class/net/eth0/queues/rx-7/rps_flow_cnt 0 /proc/sys/net/core/rps_sock_flow_entries 0 2) one cpu per queue(每队列绑定到1个CPU核上) /sys/class/net/eth0/queues/rx-0/rps_cpus 00000001 /sys/class/net/eth0/queues/rx-1/rps_cpus 00000002 /sys/class/net/eth0/queues/rx-2/r

9、ps_cpus 00000004 /sys/class/net/eth0/queues/rx-3/rps_cpus 00000008 /sys/class/net/eth0/queues/rx-4/rps_cpus 00000010 /sys/class/net/eth0/queues/rx-5/rps_cpus 00000020 /sys/class/net/eth0/queues/rx-6/rps_cpus 00000040 /sys/class/net/eth0/queues/rx-7/rps_cpus 00000080 /sys/class/net/eth0/queues/

10、rx-0/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-1/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-2/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-3/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-4/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-5/rps_flow_cnt 4096 /sys/class/net/eth0/q

11、ueues/rx-6/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-7/rps_flow_cnt 4096 /proc/sys/net/core/rps_sock_flow_entries 32768 3) all cpus per queue(每队列绑定到所有cpu核上) /sys/class/net/eth0/queues/rx-0/rps_cpus 000000ff /sys/class/net/eth0/queues/rx-1/rps_cpus 000000ff /sys/class/net/eth0/queues/rx-2

12、/rps_cpus 000000ff /sys/class/net/eth0/queues/rx-3/rps_cpus 000000ff /sys/class/net/eth0/queues/rx-4/rps_cpus 000000ff /sys/class/net/eth0/queues/rx-5/rps_cpus 000000ff /sys/class/net/eth0/queues/rx-6/rps_cpus 000000ff /sys/class/net/eth0/queues/rx-7/rps_cpus 000000ff /sys/class/net/eth0/queue

13、s/rx-0/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-1/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-2/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-3/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-4/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-5/rps_flow_cnt 4096 /sys/class/net/eth0

14、/queues/rx-6/rps_flow_cnt 4096 /sys/class/net/eth0/queues/rx-7/rps_flow_cnt 4096 /proc/sys/net/core/rps_sock_flow_entries 32768 测试方法: 每种测试类型执行3次,中间睡眠10秒, 每种测试类型分别执行100、500、1500个实例, 每实例测试时间长度为60秒。 l TCP_RR 1 byte: 测试TCP 小数据包 request/response的性能 netperf -t TCP_RR -H $serverip -c -C -l 60 l UDP_R

15、R 1 byte: 测试UDP 小数据包 request/response的性能 netperf -t UDP_RR -H $serverip -c -C -l 60 l TCP_RR 256 byte: 测试TCP 大数据包 request/response的性能 netperf -t TCP_RR -H $serverip -c -C -l 60 -- -r256,256 l UDP_RR 256 byte: 测试UDP 大数据包 request/response的性能 netperf -t UDP_RR -H $serverip -c -C -l 60 -- -r256,256

16、 TPS测试结果 l TCP_RR 1 byte小包测试结果 l TCP_RR 256 byte大包测试结果 l UDP_RR 1 byte小包测试结果 l UDP_RR 256 byte大包测试结果 CPU负载变化 在测试过程中,使用mpstat收集各个CPU核的负载变化 1. 关闭RPS/RFS: 可以看出关闭RPS/RFS时,软中断的负载都在cpu0上,并没有有效的利用多CPU的特性,导致了性能瓶颈。 Average: CPU %usr %nice %sys %iowait %irq %soft %steal %

17、guest %idle Average: all 3.65 0.00 35.75 0.05 0.01 14.56 0.00 0.00 45.98 Average: 0 0.00 0.00 0.00 0.00 0.00 100.00 0.00 0.00 0.00 Average: 1 4.43 0.00 37.76 0.00 0.11 11.49 0.00 0.00 46.20 Average:

18、2 5.01 0.00 45.80 0.00 0.00 0.00 0.00 0.00 49.19 Average: 3 5.11 0.00 45.07 0.00 0.00 0.00 0.00 0.00 49.82 Average: 4 3.52 0.00 40.38 0.14 0.00 0.00 0.00 0.00 55.96 Average: 5 3.85 0.00 39.91 0

19、00 0.00 0.00 0.00 0.00 56.24 Average: 6 3.62 0.00 40.48 0.14 0.00 0.00 0.00 0.00 55.76 Average: 7 3.87 0.00 38.86 0.11 0.00 0.00 0.00 0.00 57.16 2. 每队列关联到一个CPU TCP_RR: 可以看出软中断负载已经能分散到各个CPU核上,有效利用了多CPU的特性,大大提高了系统的网络性能。 A

20、verage: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle Average: all 5.58 0.00 59.84 0.01 0.00 22.71 0.00 0.00 11.86 Average: 0 2.16 0.00 20.85 0.00 0.04 72.03 0.00 0.00 4.93 Average: 1 4.68 0.0

21、0 46.27 0.00 0.00 42.73 0.00 0.00 6.32 Average: 2 6.76 0.00 63.79 0.00 0.00 11.03 0.00 0.00 18.42 Average: 3 6.61 0.00 65.71 0.00 0.00 11.51 0.00 0.00 16.17 Average: 4 5.94 0.00 67.83 0.07 0.00 11

22、59 0.00 0.00 14.58 Average: 5 5.99 0.00 69.42 0.04 0.00 12.54 0.00 0.00 12.01 Average: 6 5.94 0.00 69.41 0.00 0.00 12.86 0.00 0.00 11.78 Average: 7 6.13 0.00 69.61 0.00 0.00 14.48 0.00 0.00 9.77

23、 3. 每队列关联到一个CPU UDP_RR: CPU负载未能均衡的分布到各个CPU, 这是由于网卡hash计算在UDP包上的不足, 详细请见本文后记部分。 Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle Average: all 3.01 0.00 29.84 0.07 0.01 13.35 0.00 0.00 53.71 Average: 0 0.00 0.00 0.08

24、 0.00 0.00 90.01 0.00 0.00 9.91 Average: 1 3.82 0.00 32.87 0.00 0.05 12.81 0.00 0.00 50.46 Average: 2 4.84 0.00 37.53 0.00 0.00 0.14 0.00 0.00 57.49 Average: 3 4.90 0.00 37.92 0.00 0.00 0.16 0.

25、00 0.00 57.02 Average: 4 2.57 0.00 32.72 0.20 0.00 0.09 0.00 0.00 64.42 Average: 5 2.66 0.00 33.54 0.11 0.00 0.08 0.00 0.00 63.60 Average: 6 2.75 0.00 32.81 0.09 0.00 0.06 0.00 0.00 64.30 Average:

26、 7 2.71 0.00 32.66 0.17 0.00 0.06 0.00 0.00 64.40 4. 每队列关联到所有CPU: 可以看出软中断负载已经能分散到各个CPU核上,有效利用了多CPU的特性,大大提高了系统的网络性能 Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle Average: all 5.39 0.00 59.97 0.00 0.00 22.57

27、 0.00 0.00 12.06 Average: 0 1.46 0.00 21.83 0.04 0.00 72.08 0.00 0.00 4.59 Average: 1 4.45 0.00 46.40 0.00 0.04 43.39 0.00 0.00 5.72 Average: 2 6.84 0.00 65.62 0.00 0.00 11.39 0.00 0.00 16.15 Aver

28、age: 3 6.71 0.00 67.13 0.00 0.00 12.07 0.00 0.00 14.09 Average: 4 5.73 0.00 66.97 0.00 0.00 10.71 0.00 0.00 16.58 Average: 5 5.74 0.00 68.57 0.00 0.00 13.02 0.00 0.00 12.67 Average: 6 5.79 0.00

29、 69.27 0.00 0.00 12.31 0.00 0.00 12.63 Average: 7 5.96 0.00 68.98 0.00 0.00 12.00 0.00 0.00 13.06 结果分析 以下结果只是针对测试服务器特定硬件及系统的数据,在不同测试对象的RPS/RFS测试结果可能有不同的表现。 TCP性能: · 在没有打开RPS/RFS的情况下,随着进程数的增加,TCP tps性能并明显没有提升,在184~188k之间。 · 打开RPS/RFS之后,随着RPS导致软中断被

30、分配到所有CPU上和RFS增加的cache命中, 小数据包(1字节)及大数据包(256字节,相对小数据包而言, 而不是实际应用中的大数据包)的tps性能都有显著提升 · 100个进程提升40%的性能(两种RPS/RFS设置的性能结果一致), cpu负载升高40% · 500个进程提升70%的性能(两种RPS/RFS设置的性能结果一致), cpu负载升高62% · 1500个进程提升75%的性能(两种RPS/RFS设置的性能结果一致), cpu负载升高77% UDP性能: · 在没有打开RPS/RFS的情况下,随着进程数的增加,UDP tps性能并明显没有提升,在226~235k之间。

31、 · 打 开RPS/RFS之后,,随着RPS导致软中断被分配到所有CPU上和RFS增加的cache命中, 小数据包(1字节)及大数据包(256字节,相对小数据包而言, 而不是实际应用中的大数据包)的TPS性能, 在每队列关联到所有CPU的情况下有显著提升, 而每队列关联到一个CPU后反倒是导致了UDP tps性能下降1% (这是bnx2网卡不支持UDP port hash及此次测试的局限性造成的结果, 详细分析见: 后记) · 每队列关联到所有CPU的情况下, 在100个进程时小包提升40%的性能, cpu负载升高60%; 大包提升33%, cpu负载升高47% · 每队列关联到所有CP

32、U的情况下, 在500个进程提小包提升62%的性能, cpu负载升高71%; 大包提升60%, cpu负载升高65% · 每队列关联到所有CPU的情况下, 在1500个进程提升65%的性能, cpu负载升高75%; 大包提升64%, cpu负载升高74% 后记 UDP在每队列绑定到一个CPU时性能下降,而绑定到所有CPU时,却有性能提升,这一问题涉及到几个因素,当这几个因素凑一起时,导致了这种奇特的表现。 · 此次测试的局限性:本次测试是1对1的网络测试,产生的数据包的IP地址都是相同的 · bnx2 网卡在RSS hash上,不支持UDP Port,也就是说,网卡在对TCP数据流进

33、行队列选择时的hash包含了ip和port, 而在UDP上的hash, 只有IP地址,导致了本次测试(上面的局限性影响)的UDP数据包的hash结果都是一样的,数据包被转送到同一条队列。 · 单 单上面两个因素,还无法表现出UDP在每队列绑定到一个CPU时性能下降,而绑定到所有CPU时,却有性能提升的现象。 因为RPS/RFS本身也有hash计算,也就是进入队列后的数据包,还需要经过RPS/RFS的hash计算(这里的hash支持udp port), 然后进行第二次数据包转送选择;如果每队列绑定到一个CPU, 系统直接跳过第二次hash计算,数据包直接分配到该队列关联的CPU处理,也就导致了

34、在第一次hash计算后被错误转送到某一队列的UDP数据包,将直 接送到cpu处理,导致了性能的下降; 而如果是每队列绑定到所有CPU, 那么进入队列后的数据包会在第二次hash时被重新分配,修正了第一次hash的错误选择。 相关对比测试 1. SMP IRQ affinity: 参考资料 · Software receive packet steering · Receive Packet Steering · Receive packet steering · Receive Flow Steering · linux kernel 2.6.35中RFS特性详解 · Linux 2.6.35 新增特性 RPS RFS · kernel/Documentation/networking/scaling.txt

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服