Во-первых, номера, которые вы указали, не входят в байты как многие думают, они в дескрипторы (и размер дескриптора зависит от аппаратного обеспечения). Таким образом, когда вы увеличиваете длину кольца, вы запрашиваете выделение памяти в ядре для этих дескрипторов. В общем, вы хотите, чтобы эта память ядра находилась в кеше L1, чтобы обработка прерываний была максимально быстрой. Увеличение размера кольца делает это менее вероятным, а в некоторых случаях и вовсе невозможным.
Следующим шагом является объединение прерываний - в общем, когда вы увеличиваете размер кольцевого буфера, сетевая карта соответствующим образом регулирует свои низкие / высокие отметки и запускает прерывание, когда буферизуется больше данных (то есть реже). В результате также увеличится время, необходимое ядру для обработки этих больших объемов данных во время обработки прерывания.
Все вышеперечисленное приводит к простому эффекту ведра — при большем кольце снижается вероятность отбрасывания пакетов и увеличивается задержка в сети. Это может быть совершенно нормально, если вы передаете большие файлы по TCP, и может быть совершенно нежелательным, если вы представляете приложение с небольшими пакетами с малой задержкой (например, игры и т. Д.).
Числа по умолчанию, которые вы видите, являются разумным компромиссом между ними.