Автоматизация поиска оптимальных параметров сетевого UDP-соединения в многопоточных Java-программах | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 23 ноября, печатный экземпляр отправим 27 ноября.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №9 (68) июнь-2 2014 г.

Дата публикации: 06.06.2014

Статья просмотрена: 267 раз

Библиографическое описание:

Троян, А. С. Автоматизация поиска оптимальных параметров сетевого UDP-соединения в многопоточных Java-программах / А. С. Троян. — Текст : непосредственный // Молодой ученый. — 2014. — № 9 (68). — С. 38-41. — URL: https://moluch.ru/archive/68/11550/ (дата обращения: 15.11.2024).

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

Ключевые слова: многопоточное программирование, Java, UDP, сетевое программирование, автоматизация.

Объектом исследования в статье являются многопоточные сетевые Java-приложения, передающие с высокой скоростью UDP-трафик по локальной сети, в которой практически отсутствуют потери пакетов в промежуточных сетевых узлах. Данный объект исследования актуален, так как в современном мире все больше требуется удаленное взаимодействие. Например: оплата услуг различного рода, заказ билетов и т. д. При разработке таких приложений разработчики должны учитывать, что они должны обслуживать большое число пользователей одновременно и делать это качественно. С помощью разработанного автором приложения, можно найти оптимальные параметры при создании многопоточных сетевых приложений. Протокол UDP был выбран, т. к. чаще всего в локальной сети не требуется использовать сложные механизмы повторной передачи ТСР из-за низкого уровня потерь пакетов в промежуточных узлах локальной сети.

Предметом исследования является эффективность передачи трафика по компьютерной сети при использовании различных способов конфигурации многопоточного сетевого приложения. Первый показатель эффективности — процент потерь в результате переполнения выходного буфера на передающем узле. Второй показатель эффективности — скорость передачи трафика. В качестве критерия эффективности используется отсутствие потерь пакетов при максимизации скорости передачи.

Цель исследования — экспериментальным способом выявить, как влияет многопоточная архитектура передающего приложения на эффективность передачи трафика по компьютерной сети. Для достижения цели были решены следующие задачи:

1.                      Создать программный экспериментальный комплекс на языке программирования Java [1] для измерения производительности, включающий в себя многопоточный генератор трафика и конфигурируемое серверное приложение.

2.                      Исследовать эффективность передачи трафика при различных конфигурациях экспериментального комплекса.

3.                      Описать, какие параметры конфигурации многопоточного сетевого приложения наиболее существенно влияют на эффективность передачи трафика.

4.                      На основе анализа полученных результатов сформулировать рекомендации для проектирования многопоточных сетевых приложений.

При исследовании эффективности передачи трафика использовались методы организации и планирования машинного эксперимента [2]; при анализе результатов экспериментов использовались методы математической статистики. Так как каких-либо начальных или заданных параметров на проведение экспериментов не было, сначала проводились опорные эксперименты, в которых параметры изменялись в широком диапазоне и с большим шагом, а затем по полученным результатам проводилась оценка значений параметров, которые в дальнейшем будут использоваться в рабочих экспериментах.

Так как с помощью разработанного программного комплекса программ нужно было проводить эксперименты, имитирующие многопоточный сетевой трафик, нужно было решить, какие параметры требуется контролировать и менять в процессе проведения экспериментов. На рис. 1 представлен интерфейс разработанной программы, на котором присутствуют вышеописанные параметры:

1.                  Количество пакетов — в этом поле указывается количество отсылаемых пакетов для каждого эксперимента.

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

3.                  Количество прогонов каждого эксперимента — в это поле вводится общее число экспериментов.

4.                  Скорость передачи пакетов — задается в Мбитах в секунду (максимальное ограничение 100 Мбит/с).

5.                  Шаг — поля отвечающие зато на сколько будут увеличиваться соответствующие поля.

6.                  Размер пакета — в этом параметре указывается заброс размера пакета.

7.                  Количество потоков (начальное и конечное) — в них указывается количество потоков, с которого надо начать работу программы, и на каком количестве её закончить.

Рис. 1

Так же присутствует динамически изменяющаяся панель информации, в которой отображаются текущие данные по эксперименту. При запуске программы, поля которые не были заполнены, заполняются значениями по умолчанию. Например, пусть максимальный размер пакета будет 1000 байт а, минимальный 40 байт, тогда средний размер пакета будет рассчитываться как ((1000+40)/2), значение этого выражения будет равно 520 байт. После этого идет расчет среднего межпакетного интервала, он определяется как, средний размер пакета, в битах, деленный на скорость передачи. Пусть скорость будет равна 25 Мегабит в секунду, для правильности расчетов данную скорость, как и средний размер пакета, надо перевести в биты т. е. (25 * 1000000) а, (520 * 8) и получаем соответственно 25000000 бит в секунду и 4160 бит и в результате получаем (4160/25000000) 0,0001664. Так как секунда для машины это довольно большой промежуток времени то полученный результат нужно умножить на количество миллисекунд в секунде, что приводит нас к числу (0,1664) это количество миллисекунд и таков будет межпакетный интервал при данных параметрах. С введение в эксперименты числа потоков больше одного точность данного межпакетного интервала стала не удовлетворительной. В связи с этим было принято решение о введении пересчета в наносекунды, для этого полученное количество секунд нужно умножить на 1000000. Далее производится подсчет межпакетного интервала для каждого потока в мили и наносекунды.

Для начала проведения экспериментов нужно запустить серверную часть. Это делается из консоли, указывая при этом номер порта, который будет прослушиваться. Потом запускается клиентская часть приложения, и задаются параметры экспериментов. Задача сервера сводится к максимально быстрому приёму данных и записи их в удобном формате в файл. После сбора статистики, данные обрабатываются для расчёта процента ошибок с учётом доверительного интервала по Стьюденту с доверительной вероятностью 0.99.

В работе использовался лишь протокол передачи UDP. Указанный протокол выбран, так как чаще всего в локальной сети не требуется использовать сложные механизмы повторной передачи ТСР из-за низкого уровня потерь пакетов в промежуточных узлах локальной сети. При написании серверной части возникла проблема на клиентской части: клиент в процессе проведения серии экспериментов менял параметры и после чего формировал полноразмерный пакет для сообщения об этом серверу и после этого сразу начинал передачу. Сервер получал этот пакет и обрабатывал его, но так как значимая информация находилась лишь в начале пакета, а остальное было «мусором», на который сервер тратил много времени, и не успевал принимать следующие пакеты, вследствие чего происходила их фрагментация. Данная проблема была решена путем явного указания серверу, о том, что при получении такого пакета он должен обрабатывать только первые 100 байт, а остальную часть пакета игнорировать.

Для определения параметров проведения дальнейших более детальных исследований были проведены тестовые эксперименты. Параметрами тестовых экспериментов были таковы: количество пакетов, на которых проводились тесты, начиналось от 1000 до 10000 с шагом 1000 пакетов, скорость от 1 до 100 Мегабит в секунду, средний размер пакета был 700 байт, разброс колебался от 40 до 1400 байт, количество каждых под экспериментов от 1 до 100. Размер буфера получателя выставлялся по умолчанию системой. Для тестирования использовалась 32-х разрядная операционная система Microsoft Windows 7 Ultimate, четырех ядерный процессор Intel Corei5 с частотой работы 2,3 Гигагерца, сетевой интерфейс с максимальной пропускной способностью 100 Мегабит в секунду.

После проведения серии тестовых экспериментов на основе полученных данных для исследования были взяты следующие величины. Количество пакетов 10000, так как потери наблюдались на скоростях, близких к максимальным скоростям. Для тестирования была взята максимальная возможная скорость в 100 Мегабит в секунду. Дальнейшие эксперименты проводились с целью выявить закономерность: как размер буфера получателя, количество потоков, а так же разброс пакетов влияет на процент потерь. Размер буфера отправителя был выставлен с запасом в размере 2000 байт, чтобы гарантированно вмещать один пакет с максимальной длиной.

На рис. 2 отражены результаты экспериментов, в которых исследовалось влияние размера буфера, отправляющего сокета на вероятность потерь пакетов. Во всех экспериментах оставались неизменными следующие параметры: размер пакета задавался случайной равномерно распределенной величиной от 40 до 1360 байт; межпакетный интервал задавался детерминированной величиной так, чтобы скорость передачи была равна 100 Мбит/с; количество потоков (thread) равно 1.

По оси абсцисс на рис.2 указан размер буфера отправляющего сокета, выраженный в байтах. По оси ординат указана доля потерянных пакетов, выраженная в процентах. Большая и меньшая кривые на графике означают верхнюю и нижнюю границу доверительного интервала [3] (по Стьюденту) с доверительной вероятностью 0,999. Многочисленные точки вне кривых доверительного интервала означают значения, измеренные в индивидуальных прогонах эксперимента, которые затем усредняются и обобщаются с помощью доверительного интервала.

Рис. 2

При проведении экспериментов размер буфера варьировался от 1000 до 10000 байт с шагом 1000 байт. При этом на каждом шаге проводилось по 50 экспериментальных прогонов.

Анализируя данные на рис.2, можно сделать вывод, что с увеличением размера буфера передающего сокета доля потерь пакетов становится меньше. Этот результат можно считать очевидным и не требующим экспериментального подтверждения. Существенно больший интерес представляет характер исследуемой зависимости, например, при размере буфера 1000 байт можно было ожидать, что все пакеты размером более 1000 байт будут отброшены, что должно привести к потере 29 % пакетов. Эксперименты опровергают это предположение: доля потерь не превышает 2 %.

Отметим, что при проведении экспериментов на других операционных системах (например, Windows XP) доля потерь могла превышать 29 %. Из сказанного следует, что при выборе размера буфера программисту не следует ориентироваться на прямые расчёты возможных потерь. По всей видимости, операционная система вольна интерпретировать заданный размер буфера достаточно свободно, не гарантируя, что будут установлены указанные пользователем ограничения.

Литература:

1.                  Ноутон.П. Java 2. Наиболее полное руководство./П.Ноутон.Г.Шилдт:БХВ-Петербург,2006.-1050с.

2.                  Власов К. П. Методы научных исследований и организации эксперимента. — Санкт-Петербург, РИЦ СПГГИ, 2000. 116 с.

3.                  Гмурман В. Е. Теория вероятностей и математическая статистика: Учебное пособие для вузов. — 9-е изд. — М.: Высшая школа, 2003. — 479 с..

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


Ключевые слова

многопоточное программирование, Ява, UDP, сетевое программирование, автоматизация, Java

Похожие статьи

О методах внедрения цифровых водяных знаков в потоковое видео

В данной статье дан обзор наиболее распространенных методов внедрения цифровых водяных знаков в потоковое видео, применяемые российскими и зарубежными специалистами. Рассмотрены такие алгоритмы, как дискретное косинусное преобразование, вейвлет-преоб...

Влияние качества обслуживания на коммутацию IP-пакетов

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

Проблемы организации СУБД при параллельной архитектуре многопроцессорных вычислительных систем

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

Сравнение моделей качества программного обеспечения

В данной статье приводится пример разработки плана развития использования облачных технологий на предприятии на основе разработанной модели с использованием методов оптимизации — многокритериального линейного программирования, а также метода ограниче...

Позиционирование и взаимодействие в беспроводных сенсорных сетях

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

Методы оценки качества передачи речевых пакетов при исследовании надежности сети NGN

В статье рассмотрены различные методы оценки качества передачи речевых пакетов, которые используются при исследовании надежности сети NGN. Данные методы позволят правильно оценить основные параметры качества работы сети NGN. Получены временные характ...

Наполнение и поддержание актуальности содержимого базы данных товаров современного интернет-магазина

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

Сравнительный анализ видеотрафика системой АМС

В работе рассмотрена система АМС моделирования параметров трафика мультисервисных сетей, разработанная авторами на базе Visual Studio, на языке C#. Система базируется на принципах интервального метода анализа потоков общего вида систем массового обсл...

Алгоритм синтеза прогнозирующего управления электромеханическим объектом

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

Разработка веб-сервиса для хранения и передачи данных

В данной статье рассматривается процесс разработки веб-сервиса для облачного хранения и передачи данных, описываются основные аспекты создания серверной части с использованием фреймворка Spring и реализации клиентской части с использованием React, а ...

Похожие статьи

О методах внедрения цифровых водяных знаков в потоковое видео

В данной статье дан обзор наиболее распространенных методов внедрения цифровых водяных знаков в потоковое видео, применяемые российскими и зарубежными специалистами. Рассмотрены такие алгоритмы, как дискретное косинусное преобразование, вейвлет-преоб...

Влияние качества обслуживания на коммутацию IP-пакетов

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

Проблемы организации СУБД при параллельной архитектуре многопроцессорных вычислительных систем

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

Сравнение моделей качества программного обеспечения

В данной статье приводится пример разработки плана развития использования облачных технологий на предприятии на основе разработанной модели с использованием методов оптимизации — многокритериального линейного программирования, а также метода ограниче...

Позиционирование и взаимодействие в беспроводных сенсорных сетях

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

Методы оценки качества передачи речевых пакетов при исследовании надежности сети NGN

В статье рассмотрены различные методы оценки качества передачи речевых пакетов, которые используются при исследовании надежности сети NGN. Данные методы позволят правильно оценить основные параметры качества работы сети NGN. Получены временные характ...

Наполнение и поддержание актуальности содержимого базы данных товаров современного интернет-магазина

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

Сравнительный анализ видеотрафика системой АМС

В работе рассмотрена система АМС моделирования параметров трафика мультисервисных сетей, разработанная авторами на базе Visual Studio, на языке C#. Система базируется на принципах интервального метода анализа потоков общего вида систем массового обсл...

Алгоритм синтеза прогнозирующего управления электромеханическим объектом

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

Разработка веб-сервиса для хранения и передачи данных

В данной статье рассматривается процесс разработки веб-сервиса для облачного хранения и передачи данных, описываются основные аспекты создания серверной части с использованием фреймворка Spring и реализации клиентской части с использованием React, а ...

Задать вопрос