我有相当强大的 Linux 服务器 - Dell PowerEdge R6515,它包含使用 AMD Epyc CPU 的 x64 内核。
另外还有专用的 LAN PCI:
lspci | grep 10G
41:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
41:00.1 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
我们将其用作 Strongswan 服务器的 VPN 服务器。问题是,对于约 500Mmb 加密 RX 流量,我们遇到了相当多的接口丢弃。按百分比计算,约 30k 个数据包中约有 30 个被接口丢弃。这占丢弃数据包的 0.1%。这不是很关键,但还有改进的空间。唯一与网络相关的配置是将 tunedadm 模式设置为网络吞吐量。
ifconfig p3p1
p3p1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::faf2:1eff:fed9:dc80 prefixlen 64 scopeid 0x20<link>
ether f8:f2:1e:d9:dc:80 txqueuelen 1000 (Ethernet)
RX packets 2637785997 bytes 1724447946355 (1.5 TiB)
RX errors 0 **dropped 1342892** overruns 0 frame 0
TX packets 2943486813 bytes 1844888609689 (1.6 TiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
我正在使用 Centos 7.9。
此外,恒定软中断计数约为 130k。当然,它不会在内核之间实现均衡负载,这就是为什么在其他站点上我们使用只有 12 个内核的 PowerEdge R340,它在丢弃甚至中断方面表现更好。
我认为这种行为与核心数量较大有关。有什么可以改进的吗?我看到有很多调整的可能性,但从我的个人经验来看,几乎每次调整都会带来一些缺点。