Тюнинг сети TCP/UDP

Небольшая наброска как улучшить производительности сети для приложений требующих высокой пропускной способности, актуально для сетей GigE+. Такими приложениями могут быть например NAS/SAN хранилища.

Шаги

Понятное дело все действия только от root

Наберем: sysctl -p | grep mem
Получим вывод всех текущих настроек, которые лучше сохранить, что бы была возможность вернуться назад если потребуется.

Набираем: sysctl -w net.core.rmem_max=8388608
Эта настройка задает максимальный размер буфера приема ОС для всех типов соединений.

Нибираем: sysctl -w net.core.wmem_max=8388608
Эта настройка задает максимальный размер буфера передачи ОС для всех типов соединений.

Нибираем: sysctl -w net.core.rmem_default=65536
Эта настройка задает размер буфера передачи по умолчанию ОС для всех типов соединений.

Нибираем: sysctl -w net.core.wmem_default=65536
Эта настройка задает азмер буфера передачи по умолчанию ОС для всех типов соединений.

Набираем: sysctl -w net.ipv4.tcp_mem=’8388608 8388608 8388608′
Настройка TCP автотюнинг. «Переменная tcp_mem определяет как стек протокола TCP должен себя вести когда дело доходит до использования памяти. … Первое значение указанное в переменной tcp_mem сообщает ядру нижний порог. Ниже этого значения, стек TCP не будет оказывать давление на использование памяти различными сокетами TCP. … Второе значение переменной сообщает ядру точку при пересечении которой начать использовать дополнительную память. … И последнее значение переменной сообщает ядру сколько страниц памяти можно использовать максимально. Если это значение будет достигнуто, количество TCP потоков и пакетов начнет снижаться пока мы не достигнем нижнего предела памяти. Эта переменная включает в себя все TCP сокеты используемые в настоящее время.»

Набираем: sysctl -w net.ipv4.tcp_rmem=’4096 87380 8388608′
Настройка TCP автотюнинг. «Первая переменная сообщает ядру минимальный размер буфера приема для каждого NCP соеденения, и этот буфер всегда выделяется но сокет TCP, даже под высоким давлением системы. … Второе значение указывет ядру настройки по умолчанию буфера приема выделяемого для каждого сокета TCP. Эта переменная пепеопределяет переменную /proc/sys/net/core/rmem_default используемую другими протоколами. … Последнее значение переменной задает максимальный размер буфера приема, который может быть выделе TCP сокету.»

Набираем: sysctl -w net.ipv4.tcp_wmem=’4096 65536 8388608′
Настройка TCP автотюнинг. «В этой переменной содержится три значения с информацией о том сколько памяти для TCP sendbuffer должен использоватьTCP сокет. Каждый TCP сокет будет использовать пространство буфера пока он не заполнится. Каждое значение используется при наступлении определенных условий. … Первое значение задает минимальный размер буфера отправки TCP доступный одному TCP сокету. … Второе значение переменной сообщает размер буфера по умолчанию доступный для одного TCP сокета. … Третье значение сообщает ядру максимальный размер буфера отправки TCP.»

Набираем:sysctl -w net.ipv4.route.flush=1
Это переменная обеспечит применения наших настроек ко всем последующим соеденениям.

Ну и что бы было удобно просто копируем и вставляем в терминал с правами root:

sysctl -w net.core.rmem_max=8388608
sysctl -w net.core.wmem_max=8388608
sysctl -w net.core.rmem_default=65536
sysctl -w net.core.wmem_default=65536
sysctl -w net.ipv4.tcp_rmem=’4096 87380 8388608′
sysctl -w net.ipv4.tcp_wmem=’4096 65536 8388608′
sysctl -w net.ipv4.tcp_mem=’8388608 8388608 8388608′
sysctl -w net.ipv4.route.flush=1

Оставить комментарий

*