LINUX.ORG.RU
решено ФорумAdmin

Мониторинг заполненности буфера сокетов


1

1

Добрый день.

Наверное вы знаете, что в сетевом стеке Linux есть буферы для приёма и отправки UDP через сокеты (может коряво выразился), которые настраиваются через

/proc/sys/net/core/rmem_max /proc/sys/net/core/wmem_max

Мой вопрос: можно ли как-то организовать отслеживание заполненности буфера приёма UDP в более ли менее реальном времени? Желательно в виде графика, хотя цифры тоже сойдут, если их можно записать в файл и построить график.


Ответ на: комментарий от anonymous

Я знаю как посмотреть потери UDP пакетов из-за переполнения буфера, но там нельзя посмотреть на сколько он заполнен, если потерь нет.

sorc17
() автор топика
Ответ на: комментарий от anonymous

netstat -s пишешь и там будет строчка «packet receive errors» это и есть выброшенные UDP пакеты из-за переполнения приёмного буфера.

Но мне не это нужно.

sorc17
() автор топика
Ответ на: комментарий от sorc17

это полная статистика по всем UDP соединениям суммарно, а тебе были нужны данные по конкретным соединениям отдельно, если я правильно понял

да и о чем речь то? я тебе сказал уже где взять количество байт по конкретному соединению, уже пришедших из сети, но еще не прочитанных приложением; если не нравится, ну ищи сам тогда другое место

anonymous
()
Ответ на: комментарий от anonymous

На сколько я знаю этот буфер общий дла всех сокетов всех интерфейсов. Иначе говоря, туда записываются все полученные UDP пакеты. Мне надо чтобы какая-то прога мне выводила статистику по этому буферу типа «на данный момент занято 2000 байт из 1000000» байт.

sorc17
() автор топика
Ответ на: комментарий от anonymous

В книжке по сетевому программированию в Unix написано что один для всей операционной системы. И по опытам у меня тоже получается, что это так.

sorc17
() автор топика
Ответ на: комментарий от anonymous

mbuffer?

Да вроде не то. Вообще не понял как он работает. Как промеждуточное звено что ли? Мне не подойдёт, если так.

sorc17
() автор топика
Ответ на: комментарий от anonymous

давай цитату

Перечитал, вроде и правда написано что у каждого сокета свой.

Почему тогда у меня происходит следующее:

Запускаю один поток 170 мегабит - приём нормальный Запускаю второй поток 170 мегабит - приём нормальный Запускаю третий поток 170 мегабит - приём нормальный Запускаю четвёртый поток 170 мегабит - ужасные потери UDP у всех четырёх приложений

Загружка по ЦП и IO мизерная.

Если у них у всех свой буфер, то какого чёрта четвёртый поток рушит приём UDP первых трёх? Это можно только объяснить единственный образом - буфер у них один и четвёртый поток его переполняет, что вызывает потери у всех.

sorc17
() автор топика
Ответ на: комментарий от sorc17

А хотя стоп. Я же не в том терминале смотрю. Загрузка 100% CPU :) Ладно, ясно. Похоже мониторить буфер мне не нужно.

sorc17
() автор топика
Ответ на: комментарий от sorc17

случайно посмотрел не туда — открыл новый закон!

:)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.