Оптимизация PFS для 1G, 10G
-
И так, изучение мат. части сподвигло на некоторые настройки коробки ПФС.
увеличение скоростей передачи данных накладывает некоторые ограничения на устаревшие настройки сетевого оборудования.
предлагаю объеденить в данном посте наши знания.
будем собирать с миру по нитке. как говорят, одна голова хороша, а много лучше.все дополнения буду дописывать в шапку.
при множественных запросах, тем более параллельных запросах необходимо расширить размер буфера как приёма так и передачи (причём буфер приёма нужно сделать побольше, малоли очередь):
все настройки делаются через вэю морду,
system=>advanced=>System Tunables:
=> net.inet.tcp.sendspace 2097152
размер TCP буфера для отправки. Влияет на размер "окна переполнения".
=> net.inet.tcp.recvspace 4194304
размер TCP буфера для приема. Влияет на размер "скользящего окна".
=> kern.ipc.maxsockbuf 67108864
размер общего буфера приёма и передачи всех интерфейсов
углубляемся в протокол TCP
=> net.inet.tcp.rfc1323 1
использовать масштабирование TCP окна (window scaling), RFC 1323.
функция сложная по описаю, основывается на методе контроля доставки пакетов, смысл простой, с данной фунцией отправится намного больше маленьких пакетов за еденицу времени.
=>net.inet.ip.intr_queue_maxlen 5000
отвечает за максимальный размер очереди входящих пакетов
на скоростях в 1Г их уже много, а если они мелкие, а если интерфейсов 3 о0
–---------------------------------------------------------------------------------------------------------дальше режим работы с устройствами.
тут много за и против=режим по дефолту работает с прерываниями и это не есть гуд по ряду причин.
у меня дорогая интеловская 1G карта просто ушла в даун при отключении пулинга. как выяснилось до перезагрузки системы. провожу тестирование. загрузка процессора прерываниями в ночное время увеличилась на 1.5%, пулинг грузил один из горшков на 100%
если сетевая карта поддерживает отложенные прерывания, нужно активировать эту функцию в драйвере системы ( сам до этого еще не дошел) поидее это самый идеальный вариант.=пулинг в свою очередь грузит процессор, но при этом система ведёт себя более адекватно. но тоже очень много подводных камней, особенно с переполнением буфера приёма.
выбор режима нужно подбирать импирическим путём, то есть проводя синтетические тесты. есть достаточно много программ выдающих красивые графики.
паралельно вопрос задам, надстройка:
net.inet.tcp.tso TCP Offload Engine default (1)
не переходит в 0, когда выключаешь функцию Disable hardware checksum offload
буду тестить, но может кто подскажет?
как закрепить сообщение в топ?