Что делает net.ipv4.tcp_app_win?

Я не могу понять, почему эти переменные сосуществуют в Linux. Информация от человека tcp говорит (Ubuntu 12.04):

Для tcp_adv_win_scale:

tcp_adv_win_scale (integer; по умолчанию: 2; с Linux 2.4)

Count buffering overhead as bytes/2^tcp_adv_win_scale, if tcp_adv_win_scale is greater than 0; or bytes- bytes/2^(-tcp_adv_win_scale), if tcp_adv_win_scale is less than or equal to zero. The socket receive buffer space is shared between the applica‐ tion and kernel. TCP maintains part of the buffer as the TCP window, this is the size of the receive window advertised to the other end. The rest of the space is used as the "application" buffer, used to isolate the network from scheduling and applica‐ tion latencies. The tcp_adv_win_scale default value of 2 implies that the space used for the application buffer is one fourth that of the total. 

И для tcp_app_win:

 tcp_app_win (integer; default: 31; since Linux 2.4) This variable defines how many bytes of the TCP window are reserved for buffering overhead. A maximum of (window/2^tcp_app_win, mss) bytes in the window are reserved for the application buffer. A value of 0 implies that no amount is reserved. 

Поэтому я не уверен в том, что точно изменит tcp_app_win. Мне кажется, что обе переменные могут использоваться для настройки буфера TCP-приложений, поэтому нет необходимости изменять их. Я прав?

One Solution collect form web for “Что делает net.ipv4.tcp_app_win?”

Я нашел эту информацию, которая рассказывает о tcp_adv_win_scale . Страница называется: настройка производительности TCP – как настроить Linux .

выдержка

Производительность TCP ограничена задержкой и размером окна (и накладными расходами, что снижает эффективный размер окна) с помощью window_size / RTT (это количество данных, которые могут быть «в пути» по ссылке в любой момент).

Чтобы получить реальную скорость передачи данных, вы должны разделить полученное окно на латентность (в секундах):

Накладные расходы: window / 2 ^ tcp_adv_win_scale (значение tcp_adv_win_scale по умолчанию равно 2)

Таким образом, для параметров linux по умолчанию для получающего окна (tcp_rmem): 87380 – (87380/2 ^ 2) = 65536.

Учитывая трансатлантическое соединение (150 мс RTT), максимальная производительность заканчивается: 65536 / 0.150 = 436906 байт / с или около 400 кбайт / с, что сегодня очень медленно.

С увеличенным размером по умолчанию: (873800 – 873800/2 ^ 2) /0.150 = 4369000 байт / с или около 4 Мбайт / с, что является резонансным для современной сети. И обратите внимание, что это значение по умолчанию, если отправитель настроен с большим размером окна, он будет с радостью масштабироваться до 10 раз (8738000 * 0,75 / 0,150 = ~ 40 Мбайт / с), что очень хорошо для современной сети.

2.6.17 и более поздние версии имеют очень хорошие значения по умолчанию и фактически настраивают размер окна до максимально допустимого, если другая сторона поддерживает его. Поэтому с тех пор большая часть этого руководства не нужна. Для хорошей пропускной способности на большие расстояния, возможно, необходимо увеличить значение maxiumum.

Я смог следовать этому, но не совсем понял отношения, если они есть, между этими двумя переменными.

Я лишь слегка понял, что это пыталось объяснить. По сути, это похоже на этот параметр, чтобы масштабировать объем пространства буферизации, который будет использоваться для TCP и для приложения.

В поисках чего-то большего я нашел эти объяснения, которые имели больше смысла. Страница была названа: Ipsysctl tutorial 1.0.4 – Глава 3. Ссылка на переменную IPv4 .

выдержка

3.3.2. tcp_adv_win_scale

Эта переменная используется для указания ядру, сколько пространства буфера сокета должно использоваться для размера окна TCP и сколько нужно сохранить для буфера приложения. Если tcp_adv_win_scale отрицательный, для вычисления накладных расходов буфера для масштабирования окна используется следующее уравнение:

Где байты – количество байтов в окне. Если значение tcp_adv_win_scale является положительным, для вычисления накладных расходов буфера используется следующее уравнение:

Переменная tcp_adv_win_scale принимает целочисленное значение и по умолчанию устанавливается равным 2. Это, в свою очередь, означает, что буфер приложения составляет 1/4-го от общего объема буфера, указанного в переменной tcp_rmem.

3.3.3. tcp_app_win

Эта переменная сообщает ядру, сколько байтов зарезервировано для определенного окна TCP в буфере памяти сокетов TCP, где передается конкретное окно TCP. Это значение используется в вычислении, которое определяет, сколько резервной копии резервируется, которая выглядит как следующие:

ss формулы

Как вы можете понять из приведенного выше расчета, чем больше это значение, тем меньше будет пространство буфера для конкретного окна. Единственным исключением из этого расчета является 0, который сообщает ядру зарезервировать место для этого конкретного соединения. Значение по умолчанию для этой переменной равно 31 и, как правило, должно быть хорошим значением. Не изменяйте это значение, если вы не знаете, что делаете.

Основываясь на этих объяснениях, это похоже на первый параметр, tcp_adv_win_scale контролирует разделение пространства буфера сокета с точки зрения того, как оно получается, для использования окна TCP и буфера приложения.

В то время как второй параметр tcp_app_win указывает количество байтов для резервирования для буфера приложения, упомянутого в описании tcp_adv_win_scale .

  • «Tcpdump» для захвата последних пакетов
  • Отключение автосогласования PHY во время загрузки Linux на Xilinx
  • Есть ли способ идентифицировать путь приложения для процесса, который пытается получить доступ к Интернету в дистрибутиве Linux?
  • Как tcp связывается с приложением?
  • Невозможно выяснить, как маршрутизировать пакет через многожильный nic
  • ip_conntrack и FreeBSD
  • Неправильно ли выбрать опцию «запомнить меня» в браузерах скомпрометированной машины?
  • ICMP: ошибка порта недоступна, даже если порт открыт
  • Как безопасно выполнить приведенные ниже изменения сетевых параметров в Solaris 10?
  • Простой сценарий оболочки для отправки сообщения сокета
  • Как я могу отредактировать / proc / net / tcp?
  • Interesting Posts

    В моем сценарии bash не отображается окно консоли при выполнении

    Измените определенную строку с помощью sed

    Измените umask другого пользователя на macosx

    Как перечислить все файлы, используемые при загрузке Linux

    терминал висит, когда потерянное соединение и ssh включено

    Эмуляция файла

    Станьте оператором на всех каналах ircd-hybrid

    top не работает в пакетном режиме: 'dumb': неизвестный тип терминала

    Что такое «яровая паника»?

    В чем разница между консолью, оболочкой, терминалом, эмулятором терминала, терминальным мультиплексором и диспетчером окон?

    Как rsync файлы между двумя пультами с явным портом и разными именами пользователей?

    Передать переменную Shell в awk

    В чем разница между «сырым» и «приготовленным» драйвером устройства?

    Chromium не отображает Flash в Debian Wheezy

    Сценарий для получения данных из файла csv и выполнения связанных операций в базе данных

    Linux и Unix - лучшая ОС в мире.