Глядя на руководства по оптимизации TCP в Интернете, общей темой является установка трехцелочисленного вектора tcp_mem, tcp_rmem или tcp_wmem на равные значения в файле sysctl.conf.
Заимствуя из страницы руководства TCP, функция значений описывается следующим образом:
низкий
давление
высокая
Возможно, я сумасшедший, но, исходя из этих описаний, установка равных значений может вызвать ужасный внутренний конфликт.
Может ли кто-нибудь более умный, чем я, относительно памяти TCP в ядре Linux рассказать о последствиях установки этих значений равными?
Вы правы, многие люди понятия не имеют, о чем они говорят, и не думают самостоятельно, поэтому они просто создают карго-культовые настройки из других источников, не понимая, что эти настройки делают или истинного значения настроек.
Очевидно, вы не из таких людей. Проголосуйте!
Установка всех трех значений tcp_.mem
настройки на одно и то же нарушили бы способность TCP автоматически настраивать размеры буфера и использование памяти ( net.ipv4.tcp_moderate_rcvbuf=1
tunable), что является хорошим преимуществом реализации TCP в Linux.
Если предположить, что все значения были высокими, это было бы неэффективным использованием памяти TCP.
Если было создано достаточно розеток, потолки, определяемые net.ipv4.tcp_mem
попадают (обратите внимание, что они измеряются в страницы, а не байты), тогда TCP будет более неэффективным, поскольку он начнет сворачивать буферы вместе, чтобы уменьшить использование памяти, что приведет к увеличению %sys
Использование ЦП, чем действительно требуется.
Если нехватка памяти была достаточной, ядро начало отбрасывать пакеты сначала из очереди не по порядку, а затем из основной очереди приема.
Правильное значение для tcp_rmem
tunables это:
Для 1 Гбит / с обычно достаточно 4–6 МБ. Для 10 Гбит / с вы можете увеличить до 16 Мб. Я не видел системы, которая была бы полезной выше, но, возможно, такая система существует.
Обычно вы можете оставить tcp_wmem
перестраиваемые как есть.
Чем дольше система работает и обслуживает сетевые соединения, тем лучше автоматическая настройка TCP позволяет прогнозировать идеальный размер буфера по умолчанию на основе BDP и RTT предыдущих подключений.