Solarflare网卡安装与测试v10.docx
- 文档编号:8134719
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:21
- 大小:1.47MB
Solarflare网卡安装与测试v10.docx
《Solarflare网卡安装与测试v10.docx》由会员分享,可在线阅读,更多相关《Solarflare网卡安装与测试v10.docx(21页珍藏版)》请在冰豆网上搜索。
Solarflare网卡安装与测试v10
新网络建筑师
Solarflare网卡安装与测试
版本:
1.0
日期:
2013/9/22
版本控制信息
★文档属性
属性
内容
项目名称
文档标题
Solarflare网卡安装与测试
文档版本号
1.0
版本日期
2013/9/22
作者
陈中坚
审核人
★文档变更过程
版本
更新日期
更新人
主要更新内容
1.0
2013/9/22
陈中坚
文档创建
第1章目的
随着各个期货公司越来越多地使用Solarflare网卡,对于其安装和调试需要更多的理解和熟悉。
本文旨在总结归纳现在已经了解的Solarflare网卡安装测试的方法和简单的一些问题,方便工程师进行售前测试和售后安装调试。
一些比较难的问题,本文也难以涵盖。
Solarflare厂商的免费技术支持邮箱为**********************(需提供相应的信息和描述)。
本文所介绍内容的OS平台一般为RHEL64bit(RedHatEnterpriseLinux),如有其他OS平台会特别指出,32bit系统驱动和固件安装文件不同,请注意。
本文参考文档:
SF-105547-CD-5_Low_Latency_Quickstart_Guide.pdf
SF-103837-CD-8_Solarflare_Server_Adapter_User_s_Guide.pdf
SF-104474-CD-13_Onload_User_Guide.pdf
NUMAforDellPowerEdge12GServers.pdf
同时,Solarflare的工程师IainMcShane也提供了很大的支持。
第2章Solarflare网卡安装
现在最主要的Solarflare网卡是SFN6122F,也就是6122。
它是一个双端口10G的网卡,支持OpenOnload应用加速(后文介绍)。
需要确认客户的环境是否是万兆,只有千兆的情况下建议采用直连(如果允许)。
SFP模块最好使用Solarflare厂商的产品:
SFM10G-SR。
一般会随网卡同时采购。
厂商的MAC地址前四位是00:
0F,以此判断哪个网卡为Solarflare的网卡。
2.1PCIe插槽
6122支持PCIe*8,并向下兼容PCIe*4,但*4性能会下降。
需要确认客户服务器的PCIe插槽,配合选择PCIe*8槽位。
另外,PCIe设备的位置与之后的配置有关。
这与NUMA技术有关,笔者也不是很懂。
用下面这张图来说明:
其中PCIe插槽对应一个CPU,那么OpenOnload选择CPUcore的时候就需要注意与PCIe插槽的关联性。
如果socket线程在CPU0上运行,而通过CPU1的PCIe插槽传输数据,那么就会通过2个CPU之间的QPI总线传输,增大传输时延。
2.2驱动和固件
Solarflare网卡当前的驱动版本是3.3.3。
固件版本是3.3.0。
安装OpenOnload软件可以自动升级驱动和固件,驱动不会升级到最新版本。
但都会升级到较新的3.3.0版本,与最新版本差别不大(不建议再单独升级)。
安装OpenOnload过程(后面还会再次提到)
依赖包需求:
kernel-devel(安装方式看后文介绍)
下载:
openonload-201210-u2.tgz
tarvxfonload-
到解压目录下:
./onload_install
./onload_toolreload(除非重装OpenOnload,不需要多次reload)
然后可以通过命令ethtool-ieth[X]来查看版本:
ethtool-ieth18
driver:
sfc
version:
3.3.0.6309
firmware-version:
3.3.0.6247
bus-info:
0000:
04:
00.0
2.2.1单独升级驱动
该节为单独升级驱动(如果客户不愿安装OpenOnload)。
如果准备通过OpenOnload升级,则不需要通过以下步骤。
请注意查看现有版本和升级版本。
1、DKMSRPM安装(需要有DKMS环境,可以输入命令dkms--version确认)
官网下载:
SF-104979-LS-17_Solarflare_NET_driver_source_DKMS.zip
unzip解压后:
rpm-isfc-dkms-
2、SourceRPM安装(当客户没有安装DKMS)
依赖包需求:
kernel-devel(上文已说明)
官方文档里说要rebuildrpm包,太麻烦。
下载:
SF-103848-LS-25_Solarflare_NET_driver_source_RPM.zip
unzip解压后:
rpm-ivhsfc-
升级完成之后,运行ethtool-ieth[X]确认升级结果。
2.2.2ESXi安装驱动
ESXi操作系统无法识别网卡,需要安装驱动,版本限定为5.0和5.1。
其他版本查看文档。
先开启SSH,通过vClient登录后找到该ESXi主机。
配置->软件->安全配置文件->服务->属性->SSH->选项->启动
官网下载vib或者offlinebundle:
SF-108097-LS-8_Solarflare_VMware_ESXi_5.0_5.1_driver_VIB.zip
SF-108102-LS-7_Solarflare_VMware_ESXi_5.0_5.1_driver_Offline_Bundle.zip
vib安装,解压后:
esxclisoftwarevibinstall-v
(注意绝对路径)
Offlinebundle安装:
esxclisoftwarevibinstall-d
(注意绝对路径)
安装后应该可以看到网卡,建议为该物理网卡创建新的vSwitch,并且将所需的虚拟机网卡转移到该vSwitch的PortGroup。
具体性能没有测试过。
2.2.3单独升级固件
该节为单独升级固件firmware(如果客户不愿安装OpenOnload)。
如果准备通过OpenOnload升级,则不需要通过以下步骤。
请注意查看现有版本和升级版本。
官网下载:
SF-107601-LS-15_Solarflare_Linux_Utilities_RPM_64bit.zip
unzip解压后:
rpm-isfutils-3.3.0.6247-1.x86_64.rpm
查看firmware:
sfupdate
升级firmware:
sfupdatewrite
升级完成后可以ethtool-ieth[X]或者sfupdate查看版本。
2.3系统调优
2.3.1C-states相关
随着技术的发展,现在主流的IntelCPU的主频一般达到了2-3GHz,6-10个core。
但是实际运行频率却可能只有900MHz,这是为什么呢?
(可以通过cat/proc/cpuinfo查看)
C-states是IntelCPU的一种状态集,在计算需求不高(它自己判断的)的时候会主动降频或者睡眠,主要是为了省电。
C-states其实是多种状态的统称,包括了Halt、Stop-Clock、Sleep、DeepSleep等状态。
总之,它会大大影响服务器性能,高性能计算需要关闭C-states。
2.3.2调优方式
以下调优方式并不是都一定要做。
与C-states相关部分,只需确认调试后的cpuinfo即可。
红字为必须。
BIOSSettings(不同厂商设置方式不同)
C-States-Disabled
Powersettings-MaxPerformance
Hyperthreading-Disabled(此处有一定争议,我认为关闭超线程为宜)
Turbo-Enabled
Kernelarguments(调整C-states)
vi/boot/grub/grub.conf
添加:
processor.max_cstate=0
intel_idle.max_cstate=0
关闭系统Service
servicecpuspeedstop
serviceirqbalancestop
serviceiptablesstop
调整网卡参数
ethtool-Ceth
解释:
rx-usecs和rx-frames控制每一个RXDMAchannel的RXinterrupt速率。
每当累计接收到rx-frames这么多个,或者rx-usecs这么长时间过后,一个RXinterrupt就会被产生.对于低时延要求的应用,要尽量将rx-usecs设置小。
查看调整结果
ethtool-ceth
Onload关闭C-states
onload_tooldisable_cstates
第3章OpenOnload安装和使用
3.1OpenOnload简介
Onload是Solarflare的网络加速中间件。
分为EnterpriseOnload和OpenOnload,EnterpriseOnload只是多了服务。
主要利用了kernelbypass技术,下面这张图能够简要说明该技术的原理:
应用能够不通过kernel层,直接与网络进行收发数据。
这就是OpenOnload加速的基本原理。
理论上OpenOnload是一个开源的技术,但是也没有别的厂商使用该技术。
3.2OpenOnload安装
前文已经提到如何安装,此处更详细介绍。
下载地址:
www.openonload.org
下载:
openonload-201210-u2.tgz
解压:
tarvxfonload-
到解压目录下:
./onload_install
./onload_toolreload
注意:
除非重装OpenOnload,不需要多次reload;如果排障时误操作reload之后,需要servicerestartnetwork重置网络。
3.2.1依赖包安装
OpenOnload的依赖包为kernel-devel,精简安装可能会没有安装这个依赖包。
如果OpenOnload不能正常安装并提示,则需要安装依赖包。
将OS镜像的光盘导入,先mount光盘:
mount/dev/cdrom/media
cd/media/Server
rpm-ivhkernel-devel-
然后即可安装OpenOnload。
3.3OpenOnload使用
OpenOnload有两种模式。
Spinning模式(busy-wait)中,加速进程的每个线程会占用一整个CPUcore,始终处于waiting状态。
通过htop可以看到该CPU的使用率为100%。
spinning模式速度更快,但是要注意CPUcore的数量。
Interrupt模式中,线程不会占用满一个CPUcore,但可以将中断Interrupt放在一个CPUcore。
interrupt模式也有加速效果,理论上比spinning略差一些。
当服务器上总线程数大于CPUcore的数量时,interrupt可能优于spinning,需要测试来论证。
使用准备(适用于两种模式)
sfcirqaffinityeth[X]-c1
将eth[X]的中断设置在CPUcore1上,当然也可以选择别的core。
原理:
某网卡上线程的中断会随机出现于任何一个core上,固定在相邻的core上可以有效减少时延(前面提到的PCIe插槽与CPU的关联性)。
这个设置根据测试结果,可以明显降低时延(RTT/2降低2us左右),建议采用。
ethtool-ieth[X]
driver:
sfc
version:
4.0.0.6528
firmware-version:
4.0.0.6529
bus-info:
0000:
01:
00.0
supports-statistics:
yes
supports-test:
yes
supports-eeprom-access:
no
supports-register-dump:
yes
supports-priv-flags:
nocd/sys/devices/
查看eth[X]的bus-info
cd/sys/devices/
find.-name"0000:
01:
00.0"
./pci0000:
00/0000:
00:
01.0/0000:
01:
00.0
找到该PCIe槽位
cat./pci0000:
00/0000:
00:
01.0/0000:
01:
00.0/numa_node
0
查看其NUMA节点
numactl--hardware
available:
1nodes(0)
node0cpus:
node0size:
8181MB
node0free:
6728MB
nodedistances:
node0
0:
10
查看所有NUMA硬件信息
egrep"((id|processo).*:
|^*$)"/proc/cpuinfo
processor:
0
physicalid:
0
coreid:
0
processor:
1
physicalid:
0
coreid:
0
processor:
2
physicalid:
0
coreid:
1
processor:
3
physicalid:
0
coreid:
1
processor:
4
physicalid:
0
coreid:
2
processor:
5
physicalid:
0
coreid:
2
processor:
6
physicalid:
0
coreid:
3
processor:
7
physicalid:
0
coreid:
3
查看CPUcore序号(注意,一般服务器是从0开始排序,也有不正常的版本,请查证。
否则OpenOnload选择的CPUcore可能不存在)
3.3.1Spinning模式
使用spinning模式加速应用:
onload-platencytaskset-c3./[Application]
onload--profile=latencytaskset-c2./[Application]
-c参数选择CPUcore,也可以选择多个core:
-c2,3。
选择core的数量与进程的线程数有关。
3.3.2Interrupt模式
使用interrupt模式加速应用:
onload./[Application]
第4章OpenOnload测试
测试工具主要是sfnettest和netperf。
时延测试建议直连,避免交换机产生的时延影响。
较理想情况下,网络时延对于CiscoNexus3548基本无感。
4.1netperf测试
netperf是一个开源网络测试软件,比较中立。
netperf安装需要gcc环境,安装不了的话需要安装gcc相关依赖包。
下载地址:
perf.org/netperf/
下载:
netperf-2.6.0.tar.gz
解压:
tarvxfnetperf-
到解压目录下:
./configure
make
makeinstall
4.1.1测试过程(NOOnload):
在ServerA上运行:
./netserver
在ServerB上运行:
./netperf–tTCP_RR-H
SocketSizeRequestResp.ElapsedTrans.
SendRecvSizeSizeTimeRate
BytesBytesbytesbytessecs.persec
1638487380323210.00203309.03
其中,-t可以设置TCP_RR或者UDP_RR;
-l可以设置测试时长;
-r可以设置测试数据包大小。
测试结果为RTT=1s/203309.03=4.92us(非实测数据,请勿参考)
4.1.2测试过程(OnloadSpinning)
先在ServerA上kill掉netserver:
pkill-fnetserver
在ServerA上运行:
onload--profile=latencytaskset-c8./netserver
如之前提到的,--profile=latency使用spinning模式,taskset-c选择一个CPUcore。
在ServerB上运行:
onload--profile=latencytaskset-c8./netperf-tTCP_RR-H
参数调整和结果计算与前面非Onload相同。
4.2sfnettest测试
sfnettest是Solarflare厂商提供的测试软件,可以提供更多的时延测试数据。
Sfnettest有两种测试模式:
sfnt-pingpong和sfnt-stream,文档里一般都是pingpong。
下载地址:
http:
//www.openonload.org/
下载:
sfnettest-1.5.0.tgz
解压安装:
tarvxfsfnettest-
cdsfnettest-
make
4.2.1pingpong测试过程(OnloadSpinning)
对比测试方法可以参照前面,这里不介绍非Onload的直接测试方法了。
在ServerA上:
onload--profile=latencytaskset-c8./sfnt-pingpong
在ServerB上:
onload--profile=latencytaskset-c8./sfnt-pingpong--maxms=10000--affinity"8;8"tcp
#
#sizemeanminmedianmax%ilestddeviter
1245323802434182882669771000000
2245323792435451092616901000000
4246723802436105022730821000000
824652383244687982642701000000
1624602380244174942632681000000
3224742399245487582677711000000
64249524192474121742716771000000
其中,--profile=latency、taskset-c就不用介绍了;
--maxms=10000指发送的最大数据包大小
--affinity"8;8"指使用core8发送,使用core8接收(可以选不同的core)
tcp可以替换为udp。
size大小。
mean平均时延。
%ile99%的时延(99%的时延小于该值)
stddev标准差
注意:
测试结果为RTT/2的值,单位是us。
一次测试完成后,接收端的sfnt-pingpong进程会自动结束。
不需要手动kill,但下次测试需要重新开启。
注意,数据来自于文档,非实测数据,请勿参考。
4.2.2stream测试过程(OnloadSpinning)
如结果所示,pingpong测试是以数据包大小为变量,从小到大进行测试;而stream测试是以每秒发送的数据包数量为单位,从少到多进行测试。
stream测试不能测试TCP数据包。
对比测试也不重复介绍了。
在ServerA上:
onload--profile=latencytaskset-c3./sfnt-stream
在ServerB上:
onload--profile=latencytaskset-c3./sfnt-streamudp172.18.81.2
#mpsmpsmpslatencylatencylatencylatencylatencylatencylatency
#targetsendrecvmeanminmedianmax%ilestddevsamples
500005000050000259924592572717928682932000
1000001000011000012654245925921238128466842000
1500001500071500072696250526201743828599662000
20000020000220000228992493267182440353625352000
25000025000225000228882576271633611289420292000
30000030001330001330392687285037516310122692000
350000350034350034290424912634222064286553772000
因为对stream测试的参数不是很了解,没有设置很多参数。
stream测试的数据比pingpong更多,可以自己分析或者提供给厂商。
当然,测试结果也是RTT/2的值,单位是us。
进程关闭也跟pingpong一样。
第5章Solarflare网卡故障分析
现有技术实力无法完成Solarflare网卡的排障,需要厂商的支持。
前文提到了厂商的技术支持邮箱:
**********************。
但是除了故障描述,还要提供相应的数据和信息。
5.1sfreport
sfreport是Solarflare厂商提供的分析脚本,可以生成一个HTML文件,便于分析排障。
官网下载:
SF-108317-LS-2_Solarflare_Linux_diagnostics_sfreport.tgz
解压后:
perlsfreport.pl
会生成相应的HTML文件,将该文件传到本地即可。
这个文件很长,可阅读性不高(除非很熟悉它的格式),最好将它发送给厂商分析。
5.2stackdump
当应用通过OpenOnload加速的时候,运行:
onload_stackdumplots
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Solarflare 网卡 安装 测试 v10