Исследование возможностей аппаратного модуля на базе программируемых логических интегральных схем для задач нагрузочного тестирования

Программные продукты и системы /Software & Systems

№ 4 (108), 2014

УДК 004.054 Дата подачи статьи: 25.04.2014

DOI: 10.15827/0236-235X.108.085-090

ИССЛЕДОВАНИЕ ВОЗМОЖНОСТЕЙ АППАРАТНОГО МОДУЛЯ НА БАЗЕ ПРОГРАММИРУЕМЫХ ЛОГИЧЕСКИХ ИНТЕГРАЛЬНЫХ СХЕМ ДЛЯ ЗАДАЧ НАГРУЗОЧНОГО ТЕСТИРОВАНИЯ

А.А. Бородин, ассистент, AntonioBorodin@gmail.com

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

Ключевые слова: нагрузочное тестирование, ПЛИС, аппаратный нагрузчик, запуск тестов, создание нагрузки.

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

Отметим, что научные исследования в данной сфере сосредоточены на вопросах создания тестов [1-7], автоматизации процессов анализа результатов тестирования [8, 9], а также адаптации существующих методов к проведению нагрузочного тестирования распределенных систем [10]. Многие методы имеют ad hoc-природу, то есть создаются для конкретного тестирования. Однако вопросы создания нагрузки, которая представляет собой множество тестовых запросов, направленных на тестируемую систему, исследованы недостаточно.

Абсолютное большинство информационных систем глобальной сети построено с помощью клиент-серверной архитектуры. В соответствии с ней в ответ на запросы со стороны клиента программы сервера предоставляют свои ресурсы в виде данных либо сервисных функций. Сами запросы представляют собой набор байтов. На начальных этапах нагрузочного тестирования до стадии запуска тестов (создания нагрузки) осуществляется создание тестовых скриптов, которые представляют собой имитацию типичных дейст-

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

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

85

Программные продукты и системы /Software & Systems

№ 4 (108), 2014

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

В данном исследовании предлагается иной подход. Вместо дополнительных компьютеров используется специализированный аппаратный блок на базе программируемых логических интегральных схем (ПЛИС). Его задачами являются создание нагрузки и сбор данных. Современные ПЛИС представляют собой мощные и удобные инструменты для решения различных задач - от цифровой обработки сигналов до управления авиационной электроникой [11, 12]. Как показывают результаты работы ученых Англии и США, применение ПЛИС для решения прикладных задач, связанных с сетью, имеет высокую эффективность [13-15]. В своих исследованиях они применяли подтип ПЛИС - программируемые пользователем вентильные матрицы (ППВМ, или FPGA - Field Programmable Gate Arrays).

Разработанная автором система представляет собой нагрузчик, не зависящий от тестируемого приложения и реализованный в виде прошивки для кристалла ПЛИС. Его задачи - формирование запросов, сбор метрик и отправка результатов в БД. Итогом работы являются записи в БД, состоящие из запросов, ответов, времени отправки запросов и времени получения ответов. В качестве аппаратной основы выступает плата «Altera DE2-115 Development and Education Board» компании Terasic с кристаллом ПЛИС типа FPGA «Altera Cyclone IV EP4CE115» [16]. Данная плата обладает большим количеством современных интерфейсов и достаточной памятью. Используемая FPGA имеет следующие характеристики: 114 480 логических элементов, 3 888 Кбит встроенной памяти, 266 встроенных умножителей 18x18, 528 пользовательских портов ввода/вывода, 4 элемента фазовой автоподстройки частоты (ФАПЧ) (PLL) общего назначения.

Взаимодействие с ПЛИС осуществляется посредством интерфейса USB JTAG. Прошивка создается с помощью САПР Quartus II. Обобщенная структура аппаратного нагрузчика представлена на рисунке 1. Его текущая реализация использует 17 098 логических элементов (15 % от общего объема логических ресурсов), 1 308 992 бита памяти (33 % от общего объема) и 2 элемента ФАПЧ (50 % от общего объема).

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

ры тестирования. Далее аппаратный нагрузчик начинает в автоматическом режиме создавать нагрузку и собирать метрики. При этом он генерирует большое количество сетевых пакетов с запросами, предназначенными для удаленного узла. Процесс генерации запросов включает выборку информации о TCP (Transmission Control Protocol) сессии из памяти, создание сетевых заголовков, подготовку данных к отправке и собственно передачу данных контроллеру Ethernet. Благодаря архитектуре ПЛИС некоторые стадии могут быть совмещены. Время генерации одного сетевого пакета определяется следующим образом: tgen = tss + +tghdp, где tss - время извлечения информации о сессии из памяти; tghdp - время генерации заголовка и подготовки данных к передаче.

Общее время, необходимое для генерации пакета и его отправки в контроллер среды передачи,

N

рассчитывается по формуле ttotal = tgen +—T , где

N - длина отправляемого пакета; D - ширина шины, по которой отправляются данные; T - период синхросигналов.

После завершения отправки сетевого пакета генерируется новый пакет в зависимости от состояния TCP-сессии. Таким образом, характеристики аппаратного нагрузчика зависят от производительности тестируемого узла. Например, перед передачей запроса необходимо отправить запрос на создание соединения, после чего ожидать подтверждения от тестируемого узла. Соответственно при ожидании ответов от удаленного узла растет время tss.

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

В ходе проведенного эксперимента за 10 секунд аппаратный нагрузчик сгенерировал 108 050 пакетов. В процессе этого были выделены две стадии. В ходе первой аппаратный нагрузчик создает большое количество соединений с тестируемым компьютером. Во время второй стадии тестируемой системе отправляются запросы. Производительность аппаратного нагрузчика во время первой стадии не зависит от тестируемого узла, а в ходе второй стадии зависит. Соответственно первая стадия позволяет определить характеристики аппаратного нагрузчика. Результаты ее измерений следующие: tgen worst = 340 нс, tgen best = — Yn t

= 220 нс, t = = 220,60нс .

g n

86

Программные продукты и системы /Software & Systems

№ 4 (108), 2014

Управляющая шина

Память полученных данных

Блок, реализующий интерфейс с Ethernet

Рис. 1. Обобщенная структура аппаратного нагрузчика Fig. 1. General structure of a hardware loader

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

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

87

Программные продукты и системы /Software & Systems

№ 4 (108), 2014

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

C =

1

+D

= 2 773 152,16 пакета/с,

С

1

t + — T

gen'worst j-y

= 2 083 333,33 пакета/с,

С

1

t +— T

gen best j-y

= 2 777 777,77 пакета/с.

Эти данные отражают пропускную способность для пакетов длиной 56 байт, содержащих служебную TCP-информацию. Пропускная способность аппаратного нагрузчика для пакетов длиной 232 байта, содержащих запрос к тестируемому приложению удаленного узла, следующая:

C = 1 249 062,45 пакета/с, Cworst = 1 086 956,52 пакета/с, Cbest = 1 250 000 пакетов/с. Зависимость интенсивности генерации сообщений от размера сообщения показана на рисунке 2.

Представленные графики демонстрируют высокую нагрузочную способность аппаратного нагрузчика с предельной пропускной способностью около 380 Мб в секунду. В худшем случае разработанной системе требуется 340 наносекунд для генерации одного сообщения. Для сравнения: время, необходимое одной лишь операционной системе компьютерного узла для обработки и формирования одного запроса, по данным английских исследователей [13], составляет около 15-20 микросекунд. Эти данные были получены на компьютере с четырехъядерным процессором 2,4 ГГц AMD Opteron и операционной системой RedHat Enterprise Linux 5. Автор данной статьи участвовал в серии экспериментов с целью определения нагрузочной способности компьютерных узлов. В рамках этих экспериментов измерялось время, необходимое операционной системе для обработки одного сообщения. В процессе работы применялись следующие компьютерные узлы:

5000000 -t

\

\

ЭОООООООООООООООО oooooooooooooooo fOtDCTlcNLncO^—l^fl^-OOOOOOO *H*H*H(N(N(NfOtDCT}0000 ro to CT1 о ro

Размер сообщения, байт

а) сообщение/сек.

Рис. 2. Зависимость пропускной способности прототипа от размера сообщения

Fig. 2. Prototype capacity depending on message size

- экспериментальная платформа (ЭП) № 1, компьютер Intel Core i7 920 2,67 ГГц, DDR3-1066 9 Гб, CentOS 6.4;

- ЭП № 2, ноутбук Samsung R580-JS03 Intel Core i5 430M 2,26 ГГц, DDR3-1066 3 Гб, Ubuntu 12.10;

- ЭП № 3, ноутбук MacBook Air Intel Core i7 3667U 2 ГГц, DDR3L-1600 МГц 8 Гб, OS X 10.9.2.

Результаты проведенных измерений представлены в таблице.

Результаты измерения времени обработки современных ОС The results of modern OS processing time measurement

ЭП Количество испытаний ^среднее ^min ^max Погрешность среднего

Общие показатели

№ 1 10 9,8 мкс 2 мкс 3279 мкс ± 2,8497 мкс

№ 2 10,27 мкс 2 мкс 3770 мкс ± 0,5950 мкс

№ 3 60,53 мкс < 0 мкс 2090 мкс ± 0,9771 мкс

Предельные показатели

№ 1 10 3,83 мкс 2 мкс 2527 мкс ± 0,0721 мкс

№ 2 8,20 мкс 2 мкс 3770 мкс ± 0,0779 мкс

№ 3 17,97 мкс < 0 мкс 2030 мкс ± 0,2056 мкс

88

Программные продукты и системы /Software & Systems

№ 4 (108), 2014

Таким образом, характеристики разработанного аппаратного нагрузчика на порядок превышают возможности существующих компьютерных систем. Применение подобного устройства позволит значительно повысить эффективность проведения стадии создания нагрузки и сбора результатов. На базе таких устройств можно строить распределенные вычисления, позволяющие создавать эксплуатационную нагрузку для крупнейших информационных систем глобальной сети. При этом для построения аппаратного нагрузчика могут применяться платы с FPGA, стоимость которых меньше стоимости полноценного компьютера или на уровне стоимости офисного компьютера. Предлагаемая версия разработанной системы может применяться для нагрузочного тестирования различных приложений, использующих транспортный протокол TCP. Учитывая распространенность этого протокола, устройство может применяться для тестирования широкого круга приложений - от веб-серверов и БД до систем пирингового обмена файлами и ряда мультимедиа-приложений. Аппаратный нагрузчик фактически является сетевым стеком, лишенным прикладного уровня. Соответственно выбор приложения зависит от того, какие запросы будут загружены в устройство из инструментального компьютера. Кроме того, благодаря реконфигурируемости этих устройств имеется возможность добавлять новые протоколы, функции и возможности, легко адаптировать аппаратный нагрузчик для различных целей нагрузочного тестирования. Возможности аппаратного нагрузчика позволяют применять его не только для задач нагрузочного тестирования, но и для стресс-тестирования и тестирования безопасности информационных систем.

Нагрузочное тестирование является одним из основных способов проверки работоспособности информационной системы в ходе эксплуатационной нагрузки. Исследование было направлено на поиск наиболее эффективных методов его проведения. Результатом исследования стал метод, основанный на применении аппаратного нагрузчика на базе FPGA ПЛИС.

Литература

1. Силаков Д.В. Автоматизация тестирования web-приложений, основанных на скриптовых языках // Тр. Ин-та системного программирования РАН. 2008. № 2. С. 159-178.

2. Сортов А., Хорошилов А. Функциональное тестирование Web-приложений на основе технологии UniTesK // Тр. Ин-та системного программирования РАН. № 8. 2004. С. 77-97.

3. Яковенко П.Н., Сапожников А.В. Инфраструктура тестирования веб-сервисов на базе технологии TTCN-3 и платформы .NET // Тр. Ин-та системного программирования РАН.

2009. № 17. С. 63-74.

4. Zhang P., Elbaum S., Dwyer M.B. Automatic Generation of Load Tests. Proc. 26th IEEE/ACM Intern. Conf. on Automated Software Engineering, 2011, pp. 43-52.

5. Zhang P., Elbaum S., Dwyer M.B. Compositional load test generation for software pipelines. Proc. Intern. Sympos. on Software Testing and Analysis, 2012, pp. 89-99.

6. Morrison K., Haddad H.M. Converting users to testers: an alternative approach to load test script creation, parameterization and data correlation. Journ. of Computing Sciences in Colleges, December 2012, vol. 28, iss. 2, pp. 188-196.

7. Cai Y., Grundy J., Hosking J. Synthesizing client load models for performance engineering via web crawling. Proc. 22nd IEEE/ACM Intern. Conf. on Automated Software Engineering, 2007, pp. 353-362.

8. Jiang Z.M. Automated analysis of load testing results. Proc. 19th Intern. Sympos. on Software Testing and Analysis, 2010, pp. 143-146.

9. Malik H. A Methodology to Support Load Test Analysis. Proc. 32nd ACM/IEEE Intern. Conf. on Software Engineering,

2010, vol. 2, pp. 421-424.

10. Ермыкин А.А. Разработка метода построения комплекса нагрузочного тестирования распределенной информационной системы: дис...канд. тех. наук. СПб, 2005. 147 с.

11. Программируемая пользователем вентильная матрица.

2013. URL: http://ru.wikipedia.org/wiki/Программируемая_поль-зователем_вентильная_матрица (дата обращения: 10.03.2014).

12. Guidance and Control. Altera Measurable Advantage,

2014. URL: http://www.altera.com/end-markets/military-aerospa-ce/guidance/mil-guidance.html (дата обращения: 10.03.2014).

13. Morris G.W., Thomas D.B., Luk W. FPGA Accelerated Low-Latency Market Data Feed Processing. Proc. 17th IEEE Sympos. on High Performance Interconnects, 2009, pp. 83-89.

14. Weaver N., Paxson V., Gonzalez J.M. The shunt: an FPGA-based accelerator for network intrusion prevention. Proc. of the ACM/SIGDA 15th Intern. Sympos. on Field Programmable Gate Arrays, 2007, pp. 199-206.

15. Muhlbach S., Koch A. A Scalable Multi-FPGA Platform for Complex Networking Applications. Proc. of the IEEE 19th Annual Intern. Sympos. on Field-Programmable Custom Computing Machines, 2011, pp. 81-84.

16. Altera DE2-115 Development and Education Board. 2013.

URL: http://www.terasic.com.tw/cgi-bin/page/archive.pULangu-

age=English&CategoryNo=139&No=502 (дата обращения: 10.03.2014).

DOI: 10.15827/0236-235X.108.085-090 Received 25.04.2014

ABILITY MEASURING RESEARCHES OF A FPGA HARDWARE MODULE FOR LOAD TESTING TASKS Borodin A.A., Assistant, AntonioBorodin@gmail.com

Abstract. Quality and reliability assurance of information system is an important task. Nowadays it is mostly solved using load testing. Constant progress of information technologies requires increasing testing efficiency. Load testing is a complicated process that includes many stages. Theory and practice analysis showed that researcher’s attention to test launching is not enough.

Efficiency of this stage depends on loader program performance quality and computer characteristics. Practically, resources of a single computer are not enough to produce the required amount of load. That is why there are load-creating

89

Программные продукты и системы /Software & Systems

№ 4 (108), 2014

methods based on distributed computing which have disadvantages. These methods include cloud and cluster computing as well as a group of computers connected together using local network. This paper presents experimental results of hardware loader characteristics measuring, created by the author based on FPGA to increase load creation stage efficiency. This device allows load testing process without using additional computers. During experiments, maximum load capability of a created prototype has been determined. The results were compared with characteristics of existing computer systems.

Keywords: load testing, FPGA, hardware loader, test launching, load creation.

References

1. Silakov D.V. Automated Testing of Web Applications Written in Scripting Languages. Trudy Instituta sistemnogo programmirovaniya RAN [Proceedings of ISP RAS]. 2008, vol. 14.2, pp. 159-178 (in Russ.).

2. Sortov A., Khoroshilov A. Functional testing of Web application based on the UniTesK technology. Trudy Instituta sistemnogo programmirovaniya RAN [Proceedings of ISP RAS]. 2004, vol. 8, pp. 77-97 (in Russ.).

3. Yakovenko P.N., Sapozhnikov A.V. Test infrastructure of web services based on the technology TTCN-3 and .NET. Trudy Instituta sistemnogo programmirovaniya RAN [Proceedings of ISP RAS]. 2009, vol. 17, pp. 63-74.

4. Zhang P., Elbaum S., Dwyer M.B. Automatic generation of load tests. ASE '11 Proc. 26th IEEE/ACMInt. Conf. on Automated Software Engineering. 2011, pp. 43-52.

5. Zhang P., Elbaum S., Dwyer M.B. Compositional load test generation for software pipelines. ISSTA 2012, Proc. of the Int. Symp. on Software Testing and Analysis. 2012, pp. 89-99.

6. Morrison K., Haddad H.M. Converting users to testers: an alternative approach to load test script creation, parameterization and data correlation. Journ. of Computing Sciences in Colleges. 2012, vol. 28, iss. 2, pp. 188-196.

7. Cai Y., Grundy J., Hosking J. Synthesizing client load models for performance engineering via web crawling. ASE'07 Proc. 22nd IEEE/ACM Int. Conf. on Automated Software Engineering. 2007, pp. 353-362.

8. Jiang Z.M. Automated analysis of load testing results. ISSTA'10 Proc. 19th Int. Symp. on Software Testing and Analysis. 2010, pp. 143-146.

9. Malik H. A methodology to support load test analysis. ICSE'10 Proc. 32nd ACM/IEEE Int. Conf. on Software Engineering. 2010, vol. 2, pp. 421-424.

10. Ermykin A.A. Razrabotka metoda postroeniya kompleksa nagruzochnogo testirovaniya raspredelennoy informatsionnoy sistemy [Development of a Method to Create a Distributed Information System Load Testing Complex]. PhD diss. St. Petersburg, St. Petersburg National Research Univ. of Information Technologies, Mechanics and Optics, 2005 (in Russ.).

11. Programmiruemaya polzovatelem ventilnaya matritsa [Field-programmable Gate Array]. Available at: http://en.wiki-pedia.org/wiki/Field-programmable_gate_array (accessed March 10, 2014).

12. Guidance and Control. Available at: http://www.altera.com/end-markets/military-aerospace/guidance/mil-gui-dance.html (accessed March 10, 2014).

13. Morris G.W., Thomas D.B., Luk W. FPGA Accelerated Low-Latency Market Data Feed Processing. HOTI'09 Proc. 17th IEEE Symp. on High Performance Interconnects. 2009, pp. 83-89.

14. Weaver N., Paxson V., Gonzalez J.M. The shunt: an FPGA-based accelerator for network intrusion prevention. FPGA'07 Proc. of the ACM/SIGDA 15th Int. Symp. on Field Programmable Gate Arrays. 2007, pp. 199-206.

15. Muhlbach S., Koch A. A Scalable Multi-FPGA Platform for Complex Networking Applications. FCCM'11 Proc. of the IEEE 19th Annual Int. Symp. on Field-Programmable Custom Computing Machines. 2011, pp. 81-84.

16. Altera DE2-115 Development and Education Board. Available at: http://www.terasic.com.tw/cgi-bin/page/archi-ve.pl?Language=English&CategoryNo=139&No=502 (accessed March 10, 2014).

Уважаемые читатели!

19-21 февраля 2015 г. в Минске (Республика Беларусь) пройдет V Международная конференция «Открытые семантические технологии проектирования интеллектуальных систем» (Open Semantic Technologies for Intelligent Systems - OSTIS-2015).

Конференция посвящена семантическим технологиям проектирования интеллектуальных систем. Мероприятия совпадут с 20-летием открытия специальности «Искусственный интеллект» в Белорусском государственном университете информатики и радиоэлектроники, а также создания кафедры интеллектуальных информационных технологий.

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

В рамках конференции будут проводиться конкурсы

- студенческих проектов интеллектуальных систем;

- докладов молодых ученых;

- проектов молодых ученых.

Информация о конференции размещена на сайте http://conf.ostis.net/

90