
У меня есть довольно мощный Linux-сервер - Dell PowerEdge R6515, он содержит ядра x64 с использованием процессора AMD Epyc.
Также имеются выделенные 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)
Мы используем его как VPN-сервер для сервера Strongswan. Проблема в том, что мы сталкиваемся с большим количеством отбрасываний интерфейса для ~500Mmb зашифрованного RX-трафика. В процентном отношении из ~30k пакетов интерфейс теряет около ~30 из них. Что составляет около 0,1% отброшенных пакетов. Это не очень критично, но есть возможности для улучшения. Единственная конфигурация, связанная с сетью, — это режим tunedadm, установленный на network-throughput.
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.
Также постоянное количество программных прерываний составляет ~130 тыс. Конечно, это не обеспечивает равномерную балансировку нагрузки между ядрами, поэтому на других сайтах мы используем PowerEdge R340, который имеет всего 12 ядер, но работает лучше на стороне Discards и даже прерываний.
Я думаю, что это поведение вполне связано с большим количеством ядер. Можно ли что-то улучшить? Я вижу, что есть много возможностей настройки, но из моего личного опыта почти каждая настройка имеет некоторые недостатки.