Я хочу настроить tcp_rmem таким образом, чтобы он работал как для низкой, так и для высокой задержки. И в то же время он не потребляет больше памяти для случаев использования с низкой задержкой. Можно ли этого добиться? Я думал о настройке более высоких значений для tcp_rmem, чтобы он работал с высокой задержкой. Представьте себе, если задержка мала, то сколько памяти выделяет каждое соединение для приемного буфера?
Например, если я установлю для tcp_rmem значение 1 МБ (мин.), 2 МБ (по умолчанию), 3 МБ (макс.). 1. Всегда ли оно выделяет 2 МБ на соединение или, если нужно, выделяет 2 МБ? 2. Начинается ли он с 1 МБ и когда видит, что 1 МБ недостаточно, затем выделяет 2 МБ, а когда видит, что 2 МБ недостаточно, выделяет 3 МБ. 3. Независимо от задержки, он всегда будет выделять 1 МБ, 2 МБ или 3 МБ в зависимости от входящей скорости?
Так что в моих тестах скорость постоянная, а задержка переменная. В 90% случаев задержка будет очень низкой. Но чтобы справиться с этими 10% случаев с высокой задержкой, мне нужно изменить tcp_rmem на высокое значение, что также влияет на 90% других сценариев ios.
Я не смог найти, как работает параметр tcp_moderate_rcvbuf? На основании каких параметров выделяется память.