Несогласованная доставка пакетов NIC, измерение производительности NIC

Один из наших клиентов испытывает проблемы с нашим потоковым приложением (win32). Кажется, что пакеты UDP (RTP), которые должны отправляться приложением с некоторым постоянным интервалом (скажем, 20 мс), на самом деле отправляются с сильно изменяющимися дельтами (скажем, 15 мс - 25 мс - 10 мс - 30 мс). Это единственный клиент, который столкнулся с проблемой, поэтому нашей основной подозрением является сетевая карта или другая сетевая инфраструктура ОС.

Вопрос в том, какая конфигурация сети может создать такую ​​проблему (AV?,QOS?).

И как я могу измерить время между фактическим вызовом функции "send" и моментом фактической доставки пакета в сеть? Есть ли какой-нибудь инструмент для этого?

3 ответа

Решение

Ребята, проблема была в том, что на самом деле функции синхронизации окон действительно оказываются, что Sleep() может иметь разрешение более 15 мс. если вы программно не установите его на 1 мс. Так что никакого отношения к NIC.

Я подозреваю, что любая проблема сети может вызвать эту проблему.

Там нет понятия QoS (качество обслуживания) с базовым UDP (даже до такой степени, что вы можете потерять пакеты, иметь дубликаты и т. Д.). Ваша сетевая карта должна ставить в очередь пакеты для записи в сеть, поэтому вы не можете гарантировать доставку, поскольку она ставит в очередь пакеты из разных приложений.

Маршрутизаторы также могут устанавливать приоритеты, и это повлияет на регулярность этих пакетов.

РЕДАКТИРОВАТЬ: Вы указали местный NIC, так что выше. маршрутизаторы не применяются в этой ситуации.

Короче говоря, нет никаких оснований ожидать, что вышесказанное является чем-то иным, чем приемлемым.

Если вы говорите, что измеряете это непосредственно на сетевой карте компьютера, фактически генерирующей пакеты (то есть, таким образом, можете обойти все сетевые влияния), то возможной причиной является нагрузка на сам компьютер.

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

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

Другие вопросы по тегам