Here are some recommendations for setting up a server on which Accel-ppp will work.
1) In the BIOS, disable Hyper-threading so that the softirq load from the network card is not distributed to virtual cores, by the way, when HT is enabled and since there are more cores with virtual, and if virtual cores are not used, then on Zabbix charts the average CPU utilization is lower, although it is not and is confusing, therefore, I recommend monitoring the loading of each kernel, and not in general, for example, as I wrote in the article: Monitoring CPU usage in Zabbix
See the general softirq graph with Hyper-threading on and off::
2) If irqbalance doesn’t distribute the network adapter interruptions by processor cores, then disable irqbalance and manually configure RPS/RSS.
Distribution of network card interrupts across processor cores
3) In the BIOS, select the plan “CPU performance”, and also set other possible options to “Performance”.
Also, select “Always Power ON”, so that the server will turn on itself after the power disappears and appears.
Also in the operating system, set “performance” as I described in this article:
Changing CPU Scaling Governor on Linux
4) Disable unnecessary offloads on network interfaces, I note that they are needed to improve performance, but sometimes because of them the shaper does not work correctly, for example, I had a very low upload speed, so I disabled it:
ethtool -K ens2f1 tso off gro off gso off
5) Update the driver for the network adapter, I note that on some versions of the drivers, the occupied space of RAM can quickly increase.
If it increases, you can, for example, unload and load the ixgbe module to see if it has a problem (attention, the connection to the server will be lost):
rmmod ixgbe && modprobe ixgbe
6) Enable forwarding of packages, increase the “nf_conntrack_max” and optimize other parameters in /etc/sysctl.conf.
7) If Zabbix with a standard Linux template is used on the server, then disable “Network interface discovery” in the template or for the network node, otherwise, for example, with a large number of ipoe interfaces and when Zabbix scans them all the time, there will be performance problems.
8) Enable rp_filter (I strongly recommend not to disable it, except in extreme cases, or specify 2 instead of 1):
sysctl -a | grep "rp_filter" nano /etc/sysctl.conf net.ipv4.conf.default.rp_filter=1 net.ipv4.conf.all.rp_filter=1 sysctl -p
See also my articles:
- How to disable auto-update on Ubuntu 18
- Configuring the Network in Linux
- Installing Accel-ppp on Ubuntu 18
- Setting up BGP in Quagga
- Test iops using fio