Рубрики
network \ сеть

debian / ethtool / net tweak / производительность сетевой карты

ссылка

https://wiki.mikbill.pro/billing/howto/accel_nic_settings
https://wiki.mikbill.pro/billing/howto/irq_affinity

Настройки сетевой карты /etc/network/interfaces

auto eth0
iface eth0 inet static
	address x.x.x.x
	netmask y.y.y.y
	pre-up /sbin/ifconfig $IFACE txqueuelen 1000 > /dev/null 2>&1;\
	       /sbin/ethtool --offload $IFACE rx off tx off > /dev/null 2>&1;\
	       /sbin/ethtool -K $IFACE rxvlan off txvlan off > /dev/null 2>&1;\
	       /sbin/ethtool -G $IFACE rx 2048 tx 2048 > /dev/null 2>&1;\
	       /sbin/ethtool -A $IFACE autoneg off rx off tx off > /dev/null 2>&1;\
	       /sbin/ethtool -K $IFACE tso off gso off gro off lro off > /dev/null 2>&1

Рассмотрим каждую команду более подробнее:

Длина очереди передачи.
В современных сетях для 1G используется значение 1000, для 10G используется значение 10000.
/sbin/ifconfig eth0 txqueuelen 1000

Отключаем checksum offload для правильной работы шейперов
/sbin/ethtool --offload eth0 rx off tx off

Отключаем аппаратную поддержку 802.1q
/sbin/ethtool -K eth0 rxvlan off txvlan off

Увеличивает размер буфера, чтобы избежать дропов.
Убедитесь, что ваша сетевая поддерживает такой размер буфера выполнив ethtool -g ethX
/sbin/ethtool -G eth0 rx 2048 tx 2048

Отключает авто определение скорости порта
/sbin/ethtool -A eth0 autoneg off rx off tx off

Отключим оффлоады для лучшей производительности TCP
/sbin/ethtool -K eth0 tso off gso off gro off lro off


файлик /etc/sysctl.conf


# custom
net.ipv4.ip_forward=1
net.ipv4.tcp_max_tw_buckets = 65536
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_max_syn_backlog = 131072
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 8
net.ipv4.tcp_rmem = 16384 174760 349520
net.ipv4.tcp_wmem = 16384 131072 262144
net.ipv4.tcp_mem = 262144 524288 1048576
net.ipv4.tcp_max_orphans = 65536
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_low_latency = 1
net.ipv4.tcp_syncookies = 0
net.netfilter.nf_conntrack_max = 1048576

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216