Linux内核 RPS和RFS功能详细测试分析_第1页
Linux内核 RPS和RFS功能详细测试分析_第2页
Linux内核 RPS和RFS功能详细测试分析_第3页
Linux内核 RPS和RFS功能详细测试分析_第4页
Linux内核 RPS和RFS功能详细测试分析_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、那么RFS补丁就是用来确保应用程序处理的cpu跟软中断处理的cpu是同一个,这样就充分利用cpu的cache。应用RPS之前:所有数据流被分到某个CPU,多CPU没有被合理利用,造成瓶颈CTIH:APFONICCPL2;APP2CPU3:APF3CP1:APP1应用RPS之后:同一流的数据包被分到同个CPU核来处理,但可能出现cpucache迁跃DATA3,DATAOCPL2:APP2CPLHAPP3CPl;1HAFPOCPIIAPRIDATA2DATAI应用RPS+RFS之后:同一流的数据包被分到应用所在的CPU核CPLI:APP1IiAIAIn.Ata2err;-appiCPVJLAPPO

4、CPU?APP3DAJAUNIC必要条件使用RPS和RFS功能,需要有大于等于2.6.35版本的Linuxkernel.如何判断内核版本:$uname-2.6.38-2-686-bigmem对比测试类别测试客户端测试服务端型号BladeCenterHS23pBladeCenterHS23pCPUXeonE5-2609XeonE5-2630网卡BroadcomNetXtremeIIBCM5709SGigabitEthernetEmulexCorporationOneConnect10GbNIC内核3.2.0-2-amd643.2.0-2-amd64内存62GB66GB系统Debian6.0.4D

5、ebian6.0.5超线程否是CPU核46驱动bnx2be2net客户端:netperf服务端:netserverRPScpubitmap测试分类:0(不开启rps功能),onecpuperqueue(每队列绑定到1个CPU核上),allcpusperqueue(每队列绑定到所有cpu核上),不同分类的设置值如下1)0(不开启rps功能)/sys/class/net/ethO/queues/rx-O/rps_cpus00000000/sys/class/net/eth0/queues/rx-l/rps_cpus00000000/sys/class/net/eth0/queues/rx-2/rp

6、s_cpus00000000/sys/class/net/eth0/queues/rx-3/rps_cpus00000000/sys/class/net/eth0/queues/rx-4/rps_cpus00000000/sys/class/net/eth0/queues/rx-5/rps_cpus00000000/sys/class/net/eth0/queues/rx-6/rps_cpus00000000/sys/class/net/eth0/queues/rx-7/rps_cpus00000000/sys/class/net/eth0/queues/rx-0/rps_flow_cnt0/

7、sys/class/net/eth0/queues/rx-l/rps_flow_cnt0/sys/class/net/eth0/queues/rx-2/rps_flow_cnt0/sys/class/net/eth0/queues/rx-3/rps_flow_cnt0/sys/class/net/eth0/queues/rx-4/rps_flow_cnt0、/sys/class/net/eth0/queues/rx-5/rps_flow_cnt0/sys/class/net/eth0/queues/rx-6/rps_flow_cnt0/sys/class/net/eth0/queues/rx-

8、7/rps_flow_cnt0/proc/sys/net/core/rpssockflowentries02)onecpuperqueue(每队列绑定到1个CPU核上)/sys/class/net/eth0/queues/rx-0/rps_cpus00000001/sys/class/net/eth0/queues/rx-l/rps_cpus00000002/sys/class/net/eth0/queues/rx-2/rps_cpus00000004/sys/class/net/eth0/queues/rx-3/rps_cpus00000008/sys/class/net/eth0/queu

9、es/rx-4/rps_cpus00000010/sys/class/net/eth0/queues/rx-5/rps_cpus00000020/sys/class/net/eth0/queues/rx-6/rps_cpus00000040/sys/class/net/eth0/queues/rx-7/rps_cpus00000080/sys/class/net/eth0/queues/rx-0/rps_flow_cnt4096/sys/class/net/eth0/queues/rx-l/rps_flow_cnt4096/sys/class/net/eth0/queues/rx-2/rps_

10、flow_cnt4096/sys/class/net/eth0/queues/rx-3/rps_flow_cnt4096/sys/class/net/eth0/queues/rx-4/rps_flow_cnt4096/sys/class/net/eth0/queues/rx-5/rps_flow_cnt4096/sys/class/net/eth0/queues/rx-6/rps_flow_cnt4096/sys/class/net/eth0/queues/rx-7/rps_flow_cnt4096/proc/sys/net/core/rpssockflowentries327683)allc

11、pusperqueue(每队列绑定到所有cpu核上)/sys/class/net/ethO/Queues/rx-O/rps_cpusOOOOOOff/sys/class/net/ethO/queues/rx-l/rps_cpusOOOOOOff/sys/class/net/eth0/queues/rx-2/rps_cpusOOOOOOff/sys/class/net/eth0/queues/rx-3/rps_cpusOOOOOOff/sys/class/net/ethO/queues/rx-4/rps_cpusOOOOOOff/sys/class/net/ethO/queues/rx-5/rp

12、s_cpusOOOOOOff/sys/class/net/ethO/queues/rx-6/rps_cpusOOOOOOff/sys/class/net/ethO/queues/rx-7/rps_cpusOOOOOOff/sys/class/net/ethO/queues/rx-O/rps_flow_cnt4O96/sys/class/net/ethO/queues/rx-l/rps_flow_cnt4O96/sys/class/net/ethO/queues/rx-2/rps_flow_cnt4O96/sys/class/net/ethO/queues/rx-3/rps_flow_cnt4O

13、96/sys/class/net/ethO/queues/rx-4/rps_flow_cnt4O96/sys/class/net/ethO/queues/rx-5/rps_flow_cnt4O96/sys/class/net/ethO/queues/rx-6/rps_flow_cnt4O96/sys/class/net/ethO/queues/rx-7/rps_flow_cnt4O96/proc/sys/net/core/rpssockflowentries32768测试方法:每种测试类型执行3次,中间睡眠10秒,每种测试类型分别执行100、500、1500个实例,每实例测试时间长度为60秒。

14、TCP_RR1byte:测试TCP小数据包request/response的性能netperf-tTCP_RR-H$serverip-c-C-l60UDP_RR1byte:测试UDP小数据包request/response的性能netperf-tUDP_RR-H$serverip-c-C-l60TCP_RR256byte:测试TCP大数据包request/response的性能netperf-tTCP_RR-H$serverip-c-C-l60-r256,256UDP_RR256byte:测试UDP大数据包request/response的性能netperf-tUDP_RR-H$serveri

15、p-c-C-l60-r256,256TPS测试结果TCP_RR1byte小包测试结果RPS/RFSTCP_RRTinypackagesTestTCP_RR256byte大包测试结果RPS/RFSTCP_RRLargepackagesTestUDP_RR1byte小包测试结果RPS/RFSUDP_RRTinypackagesTestUDP_RR256byte大包测试结果RPS/RFSUDPRRLargepackagesTestCPU负载变化在测试过程中,使用mpstat收集各个CPU核的负载变化关闭RPS/RFS:可以看出关闭RPS/RFS时,软中断的负载都在cpuO上,并没有有效的利用多CPU

16、的特性,导致了性能瓶颈。Average:CPU%usr%nice%sys%iowait%irq%soft%steal%guest%idleAverage:all3.650.0035.750.050.0114.560.000.0045.98Average:00.000.000.000.000.00100.000.000.000.00Average:14.430.0037.760.000.1111.490.000.0046.20Average:25.010.0045.800.000.000.000.000.0049.19Average:35.110.0045.070.000.000.000.000

17、.0049.82Average:43.520.0040.380.140.000.000.000.0055.96Average:53.850.0039.910.000.000.000.000.0056.24Average:63.620.0040.480.140.000.000.000.0055.76Average:73.870.0038.860.110.000.000.000.0057.16每队列关联到一个CPUTCP_RR:可以看出软中断负载已经能分散到各个CPU核上,有效利用了多CPU的特性,大大提高了系统的网络性能。Average:CPU%usr%nice%sys%iowait%irq%s

18、oft%steal%guest%idleAverage:all5.580.0059.840.010.0022.710.000.0011.86Average:02.160.0020.850.000.0472.030.000.004.93Average:14.680.0046.270.000.0042.730.000.006.32Average:26.760.0063.790.000.0011.030.000.0018.42Average:36.610.0065.710.000.0011.510.000.0016.17Average:45.940.0067.830.070.0011.590.000

19、.0014.58Average:55.990.0069.420.040.0012.540.000.0012.01Average:65.940.0069.410.000.0012.860.000.0011.78Average:76.130.0069.610.000.0014.480.000.009.77每队列关联到一个CPUUDP_RR:CPU负载未能均衡的分布到各个CPU,这是由于网卡hash计算在UDP包上的不足,详细请见本文后记部分。Average:CPU%usr%nice%sys%iowait%irq%soft%steal%guest%idleAverage:all3.010.0029.

20、840.070.0113.350.000.0053.71Average:00.000.000.080.000.0090.010.000.009.91Average:13.820.0032.870.000.0512.810.000.0050.46Average:24.840.0037.530.000.000.140.000.0057.49Average:34.900.0037.920.000.000.160.000.0057.02Average:42.570.0032.720.200.000.090.000.0064.42Average:52.660.0033.540.110.000.080.0

21、00.0063.60Average:62.750.0032.810.090.000.060.000.0064.30Average:72.710.0032.660.170.000.060.000.0064.40每队列关联到所有CPU:可以看出软中断负载已经能分散到各个CPU核上,有效利用了多CPU的特性,大大提高了系统的网络性能Average:CPU%usr%nice%sys%iowait%irq%soft%steal%guest%idleAverage:all5.390.0059.970.000.0022.570.000.0012.06Average:01.460.0021.830.040.0

22、072.080.000.004.59Average:14.450.0046.400.000.0443.390.000.005.72Average:26.840.0065.620.000.0011.390.000.0016.15Average:36.710.0067.130.000.0012.070.000.0014.09Average:45.730.0066.970.000.0010.710.000.0016.58Average:55.740.0068.570.000.0013.020.000.0012.67Average:65.790.0069.270.000.0012.310.000.00

23、12.63Average:75.960.0068.980.000.0012.000.000.0013.06结果分析以下结果只是针对测试服务器特定硬件及系统的数据,在不同测试对象的RPS/RFS测试结果可能有不同的表现。TCP性能:在没有打开RPS/RFS的情况下,随着进程数的增加,TCPtps性能并明显没有提升,在184188k之间。打开RPS/RFS之后,随着RPS导致软中断被分配到所有CPU上和RFS增加的cache命中,小数据包(1字节)及大数据包(256字节,相对小数据包而言,而不是实际应用中的大数据包)的tps性能都有显著提升100个进程提升40%的性能(两种RPS/RFS设置的性能

24、结果一致),cpu负载升高40%500个进程提升70%的性能(两种RPS/RFS设置的性能结果一致),cpu负载升高62%1500个进程提升75%的性能(两种RPS/RFS设置的性能结果一致),cpu负载升高77%UDP性能:在没有打开RPS/RFS的情况下,随着进程数的增加,UDPtps性能并明显没有提升,在226235k之间。打开RPS/RFS之后,随着RPS导致软中断被分配到所有CPU上和RFS增加的cache命中,小数据包(1字节)及大数据包(256字节,相对小数据包而言,而不是实际应用中的大数据包)的TPS性能,在每队列关联到所有CPU的情况下有显著提升,而每队列关联到一个CPU后反倒是导致了UDPtps性能下降1%(这是bnx2网卡不支持UDPporthash及此次测试的局限性造成的结果,详细分析见:后记)每队列关联到所有CPU的情况下,在100个进程时小包提升40%的性能,cpu负载升高60%;大包提升33%,cpu负载升高47%每队列关联到所有CPU的情况下,在500个进程提小包提升62%的性能,cpu负载升高71%;大包提升60%,cpu负载升高65%每队列关联到所有CPU的情况下,在1500个进程提升65%的性能,cp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论