Появилась необходимость сделать тюнинг сетевой подсистемы FreeBSD и шейпера Dummynet в частности. В интернете на эту тему куча информации, но история использования FreeBSD растянута уже на много лет, и не совсем понятно какие методы актуальны а какие нет. Я собрал самые интересные на мой взгляд советы и прошу коротко прокомментировать, что есть что.
Да, система FreeBSD-10.1 Stable (сейчас обновляю как раз), сетевые igb Intel 82575EB, процессор Xeon E5620 2.40GHz 4 ядра, года этак 2012, Памяти 6 Гб.
1. Polling. Актуальна ли эта техника? Если да, то какое значение options HZ= нужно выставлять?
2. Рекоммендация исправить #define HASHSIZE 16 в /usr/src/sys/netinet/ip_dummynet.c. Такого файла не нашел. Это уже исправили или как то можно настроить через системные переменные?
3. Привязка dummynet к 1 ядру. Стоит ли это делать?
4. Параметры net.inet.ip.dummynet.io_fast=1 и net.inet.ip.fastforwarding=0. Встречал много советов «обязательно включать» и «ни в коем случае не включать». Кому верить?
5. Прокомментируйте пожалуйста другие рекомендованные тюны:
Код: Выделить всё
dev.igb.0.rx_processing_limit=4096
dev.igb.1.rx_processing_limit=4096
hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.max_interrupt_rate=32000
net.isr.defaultqlimit=4096
net.link.ifqmaxlen=10240
net.route.netisr_maxqlen=4096
sysctl kern.ipc.nmbclusters=400000
sysctl kern.ipc.maxsockbuf=83886080
sysctl kern.ipc.shmmax=67108864
sysctl net.inet.ip.dummynet.hash_size=65535 (встречал также 64) Такая большая разница?
sysctl net.inet.ip.dummynet.max_chain_len=16
sysctl net.inet.ip.dummynet.pipe_slot_limit=2048
sysctl net.inet.ip.intr_queue_maxlen=8192
sysctl net.inet.ip.fw.dyn_buckets=1024
sysctl net.inet.ip.intr_queue_maxlen=10240
sysctl net.inet.ip.fw.curr_dyn_buckets=256
sysctl net.inet.ip.fw.dyn_buckets=256
sysctl kern.ipc.somaxconn=32768
sysctl kern.ipc.nmbclusters=524288
sysctl kern.ipc.maxsockbuf=83886080
sysctl net.local.stream.recvspace=65535
sysctl net.local.stream.sendspace=65535
sysctl net.inet.ip.dummynet.expire=0
Код: Выделить всё
sysctl kern.maxfiles=204800
sysctl kern.maxfilesperproc=200000
sysctl kern.random.sys.harvest.ethernet=0
sysctl kern.random.sys.harvest.interrupt=0