tcp_mem более важен, потому что он определяет, как должен вести себя стек tcp, когда речь идет об использовании памяти. Буфер отправки и получения IMO должен быть кратным tcp_mem. Вот ссылка на формулу для буфера приема: http://www.acc.umu.se/~maswan/linux-netperf.txt . Короче говоря:
Служебные расходы: 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 Мбайт / с), что очень хорошо для современной сети.
Вот что говорится в статье о tcp_mem:
То, что вы удаляете, - это искусственное ограничение производительности TCP, без которого вы ограничены доступной сквозной пропускной способностью и потерями. Таким образом, вы можете закончить насыщение восходящей линии более эффективно, но tcp хорошо справляется с этим.
IMO большее среднее значение tcp_mem ускоряет соединение при потере меньшей безопасности и немного увеличивает использование памяти.
Вы можете контролировать сетевой стек с помощью:
grep skbuff /proc/slabinfo