реклама на сайте
подробности

 
 
> Передача по UDP., Почему так медленно?
b-volkov
сообщение Jan 26 2014, 08:51
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Сразу оговариваюсь: только начинаю разбираться с IP, и посему извиняюсь за возможные некорректные формулировки и вопросы.
Изначально стоит задача обмена по UDP между железкой и PC но для "отработки технологии" я попробовал организовать связь между двумя РС. Программировал в Builder XE5 (если это играет какую-то роль) + Winsock. Схема максимально примитивная: на сервере зациклен receivefrom() а клиент выполнят 10 раз подряд sendto() пакета размером 1400 байт.

Прикрепленное изображение


На картинке снифера видно, что на все это уходит целых 7мс, т.е. получаем всего 2 мегабайта/с sad.gif. Не маловато для сети 100 Мбит? Предположил, что лишнее время уходит на вызов sendto() и какие-то действия внутри нее и решил передавать данные более крупными кусками - не вышло, передается только один пакет максимального размера. Все-таки UDP должен уметь нарезать передаваемые данные на несколько ethernet-пакетов или за этим только к TCP?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
krux
сообщение Feb 2 2014, 14:26
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



если у вас сделан просто цикл, то win его искуственно прерывает (для выполнения других задач)
принудительный context switch производится со скоростью примерно 35 раз в секунду, даже если PC больше делать нечего.

про "700 мкс" вам никто ничего вразумительного не скажет поскольку много неизвестных. начиная от скорости процессора и заканчивая версией драйвера вашей сетевой карты, тем более что PC это не real-time система.

код с event-ами (waitformultipleobjects или подобные аналоги) вместо тупого цикла однозначно будет выполняться оперативнее, но насколько точно вам сможет сказать только профилировщик.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
b-volkov
сообщение Feb 4 2014, 13:51
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Цитата(krux @ Feb 2 2014, 18:26) *
если у вас сделан просто цикл, то win его искуственно прерывает (для выполнения других задач)
принудительный context switch производится со скоростью примерно 35 раз в секунду, даже если PC больше делать нечего.

про "700 мкс" вам никто ничего вразумительного не скажет поскольку много неизвестных. начиная от скорости процессора и заканчивая версией драйвера вашей сетевой карты, тем более что PC это не real-time система.

PC то она мож и ралтайм... вот Винь...
Но моя проблема не имеет отношения к "задумчивости" винды, поскольку задержки равномерно распределяются между всеми посылками, а быстродействия процессора хватает с запасом на несколко порядков.

Как выяснилось, проблема имеет место на моем рабочем компе и еще одном очень похожем по конфигурации (на обоих Винь 7), но отсутствует на на трех ноутах (два ХР и 8-ка). На ноутах задержки на порядок меньше. Буду копать дальше, железо или ось.

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 23:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01782 секунд с 7
ELECTRONIX ©2004-2016