Я использую x86_64 RedHat 5.3 (ядро 2.6.18) и специально смотрю на net.core.rmem_max из sysctl -a в контексте попытки установить буферы UDP.Приложение получателя иногда пропускает пакеты, но я думаю, что буфер уже достаточно большой, в зависимости от того, что он означает:
Каковы единицы этого параметра - биты, байты, пакеты или страницы?Если это биты или байты, то это датаграмма / полезная нагрузка (например, 100 байтов) или размер MTU сети (~ 1500 байтов)?Если страниц, то какой размер страницы в байтах?
И это максимальный размер для системы, для физического устройства (NIC), для виртуального устройства (VLAN), для процесса, для потока, для сокета / для группы многоадресной рассылки?
Например, предположим, что мои данные имеют размер 100 байт на сообщение, и каждый сетевой пакет содержит 2 сообщения, и я хочу иметь возможность буферизовать 50 000 сообщений на сокет, и я открываю 3 сокета на поток на каждом из4 темы.Насколько большим должен быть net.core.rmem_max?Аналогично, когда я устанавливаю опции сокетов внутри приложения, будут ли байты полезной нагрузки модулей, то есть 5000000 для каждого сокета в этом случае?
Наконец, в общем, как мне найти детали модулей для параметров, которые я вижу черезsysctl -a?У меня есть похожие блоки и по X вопросы о других параметрах, таких как net.core.netdev_max_backlog и net.ipv4.igmp_max_memberships.
Спасибо.