Russian Qt Forum
Ноябрь 23, 2024, 04:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Исследование QUdpSocket REQ_REP  (Прочитано 2593 раз)
ammaximus
Гость
« : Февраль 03, 2015, 17:41 »

Исследую различные протоколы обмена, в данном случае UDP через QUdpSocket.
Две программы клиент и сервер, ничем особо не выделяются, стандартные как в примерах.
Клиент выполняет запрос к серверу, передавая X байт. Получив от клиента сообщение, сервер отвечает Y байт.
Получив ответ сервера, клиент сразу делает новый запрос и так далее. Модель Request-Reply.

Каждый раз я ограничиваю клиента, заставляя его делать C циклов. Засекается время выполнения всех С циклов, это значение Тобщ. Наконец Тобщ/С = Т1 - время выполнения одного полного запроса.

Ок, я запускал клиента и сервера на двух отдельных машинах, соединенных DLink 100мб/с персональным хабом. Адресация простая, никаких DHCP, никаких левых сообщений в канале.

Три линии на графике обозначают три варианта отправок, когда X=Y=500байт, X=5/Y=500, X=500/Y=5;
Тут я нашел интересные вещи:
во-первых, усиливая в два раза загрузку канала (отвечая 500 на 500) мы получаем не в два раза большее время работы, а процентов на 10. Здесь кроется интересная возможность для оптимизации собственного протокола, основанного на UDP, когда вместо "дай" ты можешь дешево посылать в запросе какую то дополнительную информацию.

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

Ну и самое странное.
На рисунке представлен график зависимости T1 от C! Нас интересует всплеск. Что это? Почему то при выполнении 10 итераций и при выполнении 100 итераций средняя скорость одного запроса примерно одинакова. Это вроде логично. Но при 30-50 итерациях, происходит какое-то замедление.

Клиент запускался с помощью баша с различными параметрами С. Таким образом и был составлен этот график. Каждая точка - это усредненный показатель по результатам 10 испытаний.

ЧЯДНТ? Есть ли какие-то особенности UDP протокола или IP протокола или моего хаба,когда при большом количестве ПОСЛЕДОВАТЕЛЬНЫХ запросов туда-сюда происходят какие-нибудь манипуляции или что это вообще?
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #1 : Февраль 04, 2015, 13:17 »

1. Что будет если dlink убрать и напрямую кабелем ?
2. Размер 500 влезает в MTU (на локалке он 1500) - а если 5000 (запрос ответ) ?
3. Рвется ли соединение между циклами запрос\ответ ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.122 секунд. Запросов: 23.