Проблема производительности «Клиент - Сервер» - PullRequest
9 голосов
/ 24 октября 2011

У меня проблема с «Теорией очередей», когда необходимо выполнить следующее:

  • Разработать КЛИЕНТА для отправки непрерывных пакетов фиксированного размера на SERVER с фиксированной скоростью
  • SERVER имеетпоставить в очередь эти пакеты и отсортировать их перед обработкой этих пакетов
  • Затем нам нужно доказать (для некоторого размера пакета 'n' байтов и скорости 'r' Мбит / с) теоретическое наблюдение, что сортировка (n log n / CPU_FREQ) происходит быстрее, чем в очереди (n / r), и, следовательно, QUEUE вообще не должна накапливаться.

Однако я считаю, что очередь всегдасборка (работает на двух системах - клиентских и серверных ПК / ноутбуках),

Примечание. Когда я запускаю процессы в одной и той же системе, очередь не собирается, и большую часть времени она приближается к 1- 20 пакетов.

Нужен кто-то, чтобы проверить / просмотреть мой код.

Код вставлен здесь:

  1. Клиент (Single Class):

  2. Сервер(Несколько файлов классов Пакет: serverClasses :

  3. Пример графика для "QUEUE_LEN Vs.# ПАКЕТЫ "для пакетов размером 10 МБ / с и 10000 байт на длительность 30 - 35 секунд

enter image description here

1 Ответ

2 голосов
/ 25 октября 2011

На клиенте мне кажется, что timeinterval всегда будет 0. Было ли это намерением?Вы говорите секунды в коде, но пропускаете * 1000.

timeInterval = 1 / ( noOfPacketsToBeSent );

И затем вы звоните Thread.sleep((long) timeinterval).Так как sleep() занимает long, то это самое большее 1 мс и обычно (я подозреваю) 0 мс.Сон имеет разрешение только в миллисекундах.Если вам нужно разрешение в наносекундах, вам нужно будет сделать что-то вроде:

   TimeUnit timeUnit = TimeUnit.NANOSECONDS;
   ...
   timeUnit.sleep(50);  

Я подозреваю, что ваш ЦП ограничивает ваши запуски, когда и клиент, и сервер находятся в одном окне.Когда они находятся в разных ящиках, то происходит резервное копирование, потому что клиент фактически затопляет сервер из-за неправильного времени ожидания.

По крайней мере, это мое лучшее предположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...