LINUX.ORG.RU
ФорумAdmin

Как высчитать размер буфера под сетевые подключения исходя из количества RAM

 , , , ,


0

2

Привет, у меня под контролем высоконагруженный сервер который обрабатывает много UDP трафика, но почему-то иногда данные «теряются» (я сейчас в процессе ресёрча, пока не понял что происходит). В логах иногда вижу recv buff error.

В sysctl.conf назначил размер rmem и wmem на 128 мегабайт, но вот тут вопрос - эти размеры памяти сразу резервируются в RAM для будущих подключений? Допустим у меня 100 подключений, на каждый резервируется 128 мегабайт, итого выходит 12 800 мегабайт на буфер?

Пытаюсь понять как посчитать нужный размер буфера, но и чтобы без свободной RAM не остаться.

И еще вытекающий вопрос - free -h показывает что у меня free всего 1.8gb, а cache/buff 159gb, всего 187gb. Такое количество памяти резервируется как раз под мои настройки сетевых буферов?

В общем мне бы какие-то entrypoint’ы дать для погружения в эту тему, был бы очень благодарен.



Последнее исправление: scriptkitty (всего исправлений: 2)

В логах иногда вижу recv buff error.

В каких логах?

Ядро молча выкидывает не влезшие в приёмный буфер udp-пакеты и никаких ошибок про это не пишет. Твои логи скорее всего про что-то другое.

firkax ★★★★★
()

Ну и еще для понимания масштабов твоего желания зафигачить 128MB размер буфера:

У меня довольно нагруженный VPN сервер с ~150-200Мбит постоянной нагрузки от пиров. UDP OpenVPN. Размеры буфера приложения 512Kb…

BOOBLIK ★★★★
()
Последнее исправление: BOOBLIK (всего исправлений: 1)
Ответ на: комментарий от BOOBLIK

Спасибо за ссылку!

Возможно тут и не в буферах дело, вот пытаюсь разобраться как это работает. Вижу что буфер у меня почти заполнен, то есть возможно процессора не хватает для обработки, либо для записи результатов на диск…

scriptkitty
() автор топика