تنظیم عملکرد هسته لینوکس برای سرورهای شبکه
سرورهای شبکه پرترافیک نیاز به تنظیم در سطح هسته فراتر از مقادیر پیشفرض دارند.
اندازههای بافر TCP
BASH
# /etc/sysctl.d/99-network-performance.conf
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
net.core.netdev_max_backlog = 300000
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15IRQ Affinity
وقفههای کارت شبکه را به هستههای CPU خاص اختصاص دهید تا کش missها کاهش یابد:
BASH
# لیست IRQها برای NIC شما
cat /proc/interrupts | grep eth0
# تنظیم Affinity
echo 4 > /proc/irq/45/smp_affinityتنظیم CPU Governor
BASH
apt install cpufrequtils
cpufreq-set -g performanceI/O Scheduler
برای درایوهای NVMe از none استفاده کنید؛ برای SSD از mq-deadline:
BASH
echo none > /sys/block/nvme0n1/queue/schedulerبنچمارک
BASH
# توان عملیاتی شبکه
iperf3 -s # روی سرور
iperf3 -c server_ip -P 8 -t 30 # روی کلاینت
# IOPS دیسک
fio --name=randread --ioengine=libaio --iodepth=32 --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60