肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > 如何获取Intel平台上网卡的最佳性能 网卡与内存 cpu统一numa

如何获取Intel平台上网卡的最佳性能 网卡与内存 cpu统一numa

时间:2023-11-09 01:00:59

相关推荐

本文档一步一步教你如何在Intel平台上运行DPDK程序以获取最佳性能。

7.1. 硬件及存储需求¶

为了获得最佳性能,请使用Intel Xeon级服务器系统,如Ivy Bridge,Haswell或更高版本。

确保每个内存通道至少插入一个内存DIMM,每个内存通道的内存大小至少为4GB。Note: 这对性能有最直接的影响。

可以通过使用dmidecode来检查内存配置:

dmidecode -t memory | grep LocatorLocator: DIMM_A1Bank Locator: NODE 1Locator: DIMM_A2Bank Locator: NODE 1Locator: DIMM_B1Bank Locator: NODE 1Locator: DIMM_B2Bank Locator: NODE 1...Locator: DIMM_G1Bank Locator: NODE 2Locator: DIMM_G2Bank Locator: NODE 2Locator: DIMM_H1Bank Locator: NODE 2Locator: DIMM_H2Bank Locator: NODE 2

上面的示例输出显示共有8个通道,从AH,每个通道都有2个DIMM。

你也可以使用dmidecode来确定内存频率:

dmidecode -t memory | grep SpeedSpeed: 2133 MHzConfigured Clock Speed: 2134 MHzSpeed: UnknownConfigured Clock Speed: UnknownSpeed: 2133 MHzConfigured Clock Speed: 2134 MHzSpeed: Unknown...Speed: 2133 MHzConfigured Clock Speed: 2134 MHzSpeed: UnknownConfigured Clock Speed: UnknownSpeed: 2133 MHzConfigured Clock Speed: 2134 MHzSpeed: UnknownConfigured Clock Speed: Unknown

输出显示2133 MHz(DDR4)和未知(不存在)的速度。这与先前的输出一致,表明每个通道都有一个存储。

7.1.1. 网卡需求¶

使用 DPDK supported </doc/nics> 描述的高端NIC,如Intel XL710 40GbE。

确保每个网卡已经更新最新版本的NVM/固件。

使用PCIe Gen3 插槽,如 Gen3x8或者 Gen3x16,因为PCIe Gen2 插槽不能提供2 x 10GbE或更高的带宽。 可以使用lspci命令来检查PCI插槽的速率:

lspci -s 03:00.1 -vv | grep LnkStaLnkSta: Speed 8GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- ...LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ ...

当将NIC插入PCI插槽时,需要查看屏幕输出,如 CPU0 或 CPU1,以指示连接的插槽。

同时应该注意NUMA,如果使用不同网卡的2个或更多端口,最好确保这些NIC在同一个CPU插槽上,下面进一步展示了如何确定这一点。

7.1.2. BIOS 设置¶

以下是关于BIOS设置的一些建议。不同的平台可能会有不同的名字,因此如下仅用于参考:

开始之前,请考虑将所有BIOS设置为默认值禁用所有省电选项,如电源性能调整、CPU P-State, CPU C3 Report and CPU C6 Report。选择Performance作为CPU电源及性能策略。禁用Turbo Boost以确保性能缩放随着内核数量的增加而增加。将内存频率设置为最高可用的值,NOT auto。当测试NIC的物理功能时,禁用所有的虚拟化选项,如果要使用VFIO,请打开VT-dif you wants to use VFIO.

7.1.3. Linux引导选项¶

以下是GRUB启动选项的一些建议配置:

使用默认的grub文件作为起点

通过grub配置保留1G的hugepage。例如,保留8个1G大小的页面:

default_hugepagesz=1G hugepagesz=1G hugepages=8

隔离将用于DPDK的CPU core.如:

isolcpus=2,3,4,5,6,7,8

如果要使用VFIO,请使用以下附加的grub参数:

iommu=pt intel_iommu=on

7.2. 运行DPDK前的配置¶

构建目标文件,预留hugepage。参阅前面 在 Linux 环境中使用 Hugepages 描述。

以下命令为具体过程:

# Build DPDK target.cd dpdk_foldermake install T=x86_64-native-linuxapp-gcc -j# Get the hugepage size.awk '/Hugepagesize/ {print $2}' /proc/meminfo# Get the total huge page numbers.awk '/HugePages_Total/ {print $2} ' /proc/meminfo# Unmount the hugepages.umount `awk '/hugetlbfs/ {print $2}' /proc/mounts`# Create the hugepage mount folder.mkdir -p /mnt/huge# Mount to the specific folder.mount -t hugetlbfs nodev /mnt/huge

使用命令cpu_layout来检查CPU布局:

cd dpdk_folderusertools/cpu_layout.py

或者运行lscpu检查每个插槽上的core。

检查NIC ID和插槽ID:

# 列出所有的网卡的PCI地址及设备ID.lspci -nn | grep Eth

例如,假设你的输入如下:

82:00.0 Ethernet [0200]: Intel XL710 for 40GbE QSFP+ [8086:1583]82:00.1 Ethernet [0200]: Intel XL710 for 40GbE QSFP+ [8086:1583]85:00.0 Ethernet [0200]: Intel XL710 for 40GbE QSFP+ [8086:1583]85:00.1 Ethernet [0200]: Intel XL710 for 40GbE QSFP+ [8086:1583]

检测PCI设备相关联的NUMA节点:

cat /sys/bus/pci/devices/0000\:xx\:00.x/numa_node

通常的,0x:00.x表示在插槽0,而8x:00.x表示在插槽1。Note: 为了说去最佳性能,请保证core和NIC位于同一插槽中。 在上面的例子中85:00.0在插槽1,因此必须被插槽1上的core使用才能获得最佳性能。

将测试端口绑定到DPDK兼容的驱动程序,如igb_uio。例如,将两个端口绑定到兼容DPDK的驱动程序并检查状态:

# 绑定端口 82:00.0 和 85:00.0 到DPDK驱动./dpdk_folder/usertools/dpdk-devbind.py -b igb_uio 82:00.0 85:00.0# 检查端口驱动状态./dpdk_folder/usertools/dpdk-devbind.py --status

运行dpdk-devbind.py --help以获取更多信息。

有关DPDK设置和Linux内核需求的更多信息,请参阅 使用源码编译DPDK目标文件 。

7.3. 网卡最佳性能实践举例¶

以下是运行DPDKl3fwd例程并获取最佳性能的例子。使用 Intel 服务平台和Intel XL710 NICs。 具体的40G NIC配置请参阅i40e NIC指南。

本例场景是通过两个Intel XL710 40GbE端口获取最优性能。请参阅 Fig. 7.1 用于性能测试设置。

如果觉得《如何获取Intel平台上网卡的最佳性能 网卡与内存 cpu统一numa》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。