رفتن به محتوا
بازگشت به وبلاگ
لینوکس

تنظیم عملکرد هسته لینوکس برای سرورهای شبکه

بهینه‌سازی پارامترهای هسته لینوکس برای سرورهای شبکه پرترافیک: بافرهای TCP، IRQ affinity، NUMA و زمان‌بند I/O.

تیر ۱۴۰۴
۱۵ دقیقه مطالعه

تنظیم عملکرد هسته لینوکس برای سرورهای شبکه

سرورهای شبکه پرترافیک نیاز به تنظیم در سطح هسته فراتر از مقادیر پیش‌فرض دارند.

اندازه‌های بافر 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 = 15

IRQ 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 performance

I/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