我有一个英特尔 82598EB 10GBE 网卡。
我需要在不丢失数据包的情况下接收流量。
数据速率为 4-5 Gbps,数据包大小为 1500-9600 字节。
我已经配置了 smb 和 irq 亲和力。我还尝试使用数据包套接字( PF_PACKET )。
这些都没有帮助。小损失总是存在的。
现在我计划通过禁用任何增加 sk_buff 大小的配置设置并禁用 IOMMU 来编译内核。
还有哪些其他方法可以提高 rx 性能?
如果您的系统是 numa 节点设置,则 Rx 或 Tx 性能可能会下降。如果您的系统有 numa 节点,则在将 10G 卡放入 PCI_E 插槽时,检查您要放置的 CPU PCI-E 插槽,然后根据将 irq 分配给特定 CPU 内核,看看是否有帮助。
白天我正在更改驱动程序设置和网络子系统设置。发现只有 net.core.rmem_default 有影响(我使用的是 UDP)。
某些 nic 默认 rx 未默认设置为 max。可以使用 找到 rx/tx 的默认值和最大值ethtool -g <interface>
,并使用 command 进行修改ethtool -G <interface> rx value
。