Оптимизация 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
    буду тестить, но может кто подскажет?
    как закрепить сообщение в топ?