[hardware][intel] intel全系列网卡调研
除了公司用,我自己还要买一块家用。
但是在这一切开始之前,还需要搞清楚PCIE到底咋回事。
一, 总线
https://zh.wikipedia.org/wiki/%E6%80%BB%E7%BA%BF
二,PCI
https://zh.wikipedia.org/wiki/%E5%A4%96%E8%AE%BE%E7%BB%84%E4%BB%B6%E4%BA%92%E8%BF%9E%E6%A0%87%E5%87%86
三,PCI Express
https://zh.wikipedia.org/wiki/PCI_Express
四, PCI 插槽外观
五, PCI-E 插槽外观
高清大图:
六,卡和插槽之间相互怎么插?
PCIe卡能使用在至少与之传输通道相当的插槽上(例如x1接口的卡也能工作在x4或x16的插槽上)。一个支持较多传输通道的插槽可以创建较少的传输通道(例如8个通道的插槽能支持1个通道)。PCIe设备之间的链接将使用两设备中较少通道数的作为标准。一个支持较多通道的设备不能在支持较少通道的插槽上正常工作,例如x4接口的卡不能在x1的插槽上正常工作(插不入),但它能在x4的插槽上只创建1个传输通道(x1)。
也就是说,倍数低的卡,可以插入倍数高的插槽。反之不行,因为不够长。
七,除此之后,还有版本划分 PCIe2.0 PCIe3.0 PCIe4.0 详见wiki
八,以太网服务器适配器
http://www.intel.cn/content/www/cn/zh/ethernet-products/gigabit-server-adapters/overview.html
九,以太网网络适配器
http://www.intel.cn/content/www/cn/zh/ethernet-products/converged-network-adapters/overview.html
十,技术手册
英特尔® Ethernet Flow Director 和 Memcached 性能
详细介绍了 RSS(Receive Side Scaling)/ Flow Director
RPS: linux中 RSS的软件实现
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/network-rps.html
RFS: linux中 Flow Director的软件实现
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/network-rfs.html
https://lwn.net/Articles/382428/
RFS 还可以配合 taskset,numactl一同使用。
http://linuxcommand.org/man_pages/taskset1.html
十一,产品指南
十二,型号选择向导
http://www.intel.cn/content/www/cn/zh/ethernet-products/gigabit-server-adapters/gbe-server-selection-guide.html
十三,详细参数,可以单独查看每一个型号的datasheet
如 40Gb的XL710网卡: https://www.intel.com/content/www/us/en/ethernet-products/converged-network-adapters/ethernet-xl710-brief.html
十四,查看
lspci -vvv -s 03:00.0
查看多队列:
[root@T185 ~]# lspci -vvv -s 03:00.0 |grep MSI-X Capabilities: [70] MSI-X: Enable+ Count=64 Masked-
根据PCI设备号,查看对应的网卡名称:
[root@T185 ~]# ll /sys/bus/pci/devices/0000\:03\:00.0/net/ total 0 drwxr-xr-x. 5 root root 0 May 25 19:57 eth0 [root@T185 ~]#
根据网卡名称,查看对应的PCI设备号:
[root@T185 ~]# ll /sys/class/net/eth0/device/driver/ total 0 lrwxrwxrwx. 1 root root 0 May 26 15:46 0000:03:00.0 -> ../../../../devices/pci0000:00/0000:00:02.2/0000:03:00.0 --w-------. 1 root root 4096 May 26 15:46 bind lrwxrwxrwx. 1 root root 0 May 26 15:46 module -> ../../../../module/ixgbe --w-------. 1 root root 4096 May 26 15:46 new_id --w-------. 1 root root 4096 May 26 15:46 remove_id --w-------. 1 root root 4096 May 26 15:46 uevent --w-------. 1 root root 4096 May 25 19:58 unbind [root@T185 ~]#
如何查看及配置 RSS
很奇怪,这个并不好用:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/network-rss.html
https://www.kernel.org/doc/Documentation/networking/scaling.txt
http://man7.org/linux/man-pages/man8/ethtool.8.html
I350 的卡可以查看:
root@zw:~# ll /sys/class/net/eth0/device lrwxrwxrwx 1 root root 0 May 24 19:08 /sys/class/net/eth0/device -> ../../../0000:03:00.0/ root@zw:~# lspci -s 0000:03:00.0 03:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01) root@zw:~# ethtool --show-rxfh-indir eth0 RX flow hash indirection table for eth0 with 8 RX ring(s): 0: 0 0 0 0 0 0 0 0 8: 0 0 0 0 0 0 0 0 16: 1 1 1 1 1 1 1 1 24: 1 1 1 1 1 1 1 1 32: 2 2 2 2 2 2 2 2 40: 2 2 2 2 2 2 2 2 48: 3 3 3 3 3 3 3 3 56: 3 3 3 3 3 3 3 3 64: 4 4 4 4 4 4 4 4 72: 4 4 4 4 4 4 4 4 80: 5 5 5 5 5 5 5 5 88: 5 5 5 5 5 5 5 5 96: 6 6 6 6 6 6 6 6 104: 6 6 6 6 6 6 6 6 112: 7 7 7 7 7 7 7 7 120: 7 7 7 7 7 7 7 7 root@zw:~#
82599说不支持,不知为何
[root@T185 ~]# ethtool --show-rxfh eth0 Cannot get RX flow hash indirection table size: Operation not supported [root@T185 ~]#
十五, 粗略的看了一下,主要关心的点是 1 MULIT QUEUE。 2 RSS
初步选定两块,万兆82599,千兆82576, i350好像也是可以的。 25G,40G 自然是高端型号,XL710