СПИСОК ЛИТЕРАТУРЫ
1. North, D. Behavior modification: the evolution of behavior-driven development [Текст] / D. North. -Better Software. -March 2006.
2. Beck, K. Aim, Fire [Текст] / K. Beck // IEEE Software. -2001. -Vol. 18. -№ 5. -P. 87-89.
3. Solis, C. A study of the characteristics of behaviour driven development [Текст] / C. Solis, X. Wang // In Proc. of 37th EUROMICRO Conf. on Software Engineering and Advanced Applications (SEAA). -Oulu, Aug 30-Sep 2. 2011.
4. Janzen, D. Test-driven development: concepts, taxonomy, and future directions [Text] / D. Janzen, D.H. Saiedi-an // Computer. -2005. -Vol. 38. -№ 9. -P. 43-50.
5. Janzen, D. Does test-driven development really improve software design quality? [Текст] / D. Janzen, D.H. Saiedian // IEEE Software. - March/Apr., 2008. -Vol. 25. -№ 2. -P. 77-84.
6. What is JBehave? [Электронный ресурс]. -Режим
доступа: http://jbehave.org (Дата обращения 2012)
7. Sanderson, S. Behavior driven development (BDD) with SpecFlow and ASP.NET MVC [Электронный ресурс] / S. Sanderson. -Режим доступа: http://blog.steven-sanderson.com/2010/03/03/behavior-driven-development-bdd-with-specflow-and-aspnet-mvc/ (Дата обращения 2010)
8. Pyshkin, E. On requirements for acceptance testing automation tools in behavior driven software development [Электронный ресурс] / E. Pyshkin, M. Mozgovoy, M. Glukhikh // In Proc. of the Central & Eastern European Software Engineering Conf. Russia (CEE-SEC(R) 2012). -Nov. 1-2, Moscow, Russia. -Режим доступа: http:// www.secr.ru/2012/presentations/pyshkin-mozgovoy-glukhikh_80_article.pdf (Дата обращения 2012)
9. Borg, R. Automated acceptance test refactoring [Электронный ресурс] / R. Borg, M. Kropp // In Proc. of WRT'11. -Waikiki, Honolulu, HI, USA. -May 22, 2011.
УДК 004.415
Л.Ю. Лабошин, А.А. Лукашин, В.Б. Семеновский
ПОДДЕРЖКА ВЫЧИСЛЕНИЙ НА ГРАФИЧЕСКИХ УСКОРИТЕЛЯХ В ВИРТУАЛЬНОЙ СРЕДЕ XEN ДЛЯ ОБРАБОТКИ ПОТОКОВ ДАННЫХ
РОБОТОТЕХНИЧЕСКИХ СИСТЕМ
Перспективы применения графических ускорителей
Современные робототехнические системы испытывают необходимость обработки массивов потоковых данных в режиме реального времени. Актуальны задачи обработки видеопотоков, решения систем алгебраических уравнений и расчета поведения динамических систем. Перспективным направлением решения этих задач является передача потоков данных по телематическим каналам в центры обработки данных (ЦОД). Современные ЦОД базируются на технологиях виртуализации и облачных вычислений.
Для эффективной обработки потоков данных, поступающих с робототехнических систем, могут использоваться графические процессорные устройства (GPU), изначально предназначенные для обработки видеоинформации, но на данное время активно применяемые для проведения научных и инженерных расчетов. Параллельные
участки кода могут быть перенесены на GPU, где будут выполняться множеством нитей (threads). В целом работа нитей на GPU соответствует архитектуре SIMD (Single Instructions - Multiple Data), однако имеется существенное различие. Только нити в пределах одной группы выполняются физически одновременно. Нити различных групп могут находиться на разных стадиях выполнения программы. Такой метод обработки данных обозначается термином SIMT (Single Instructions -Multiple Threads) [1]. Управление работой групп производится на аппаратном уровне.
Вычислительные системы, в которых часть вычислительной нагрузки принимают на себя графические процессорные устройства, потенциально сравнимы с суперкомпьютерами в решении некоторых классов вычислительно емких задач, таких, как, например, численные методы, молекулярная динамика, квантовая химия [2]. Для решения задач на графических процессорах существу-
Научно-технические ведомости СПбГПУ 6' 2012 Информатика. Телекоммуникации. Управление
ет ряд средств и технологий программирования, в частности, OpenCL [3] и CUDA [4].
Несмотря на то что использование многопоточных вычислительных систем позволяет получить значительный прирост производительности на системе с графическим процессором по сравнению с процессором общего назначения, существующие системы используют GPU монопольно, что препятствует использованию преимуществ технологий виртуализации как средства совместного использования и консолидации ресурсов. В статье предложена методика, позволяющая использовать графические процессорные устройства для ускорения параллельных вычислений в виртуальных машинах, что делает возможным осуществление потоковых вычислений в виртуа-лизованных ЦОД.
Метод передачи графического ускорителя в виртуальную среду
Существует два подхода к обеспечению доступа виртуальной машины к PCI-устройствам [5]. Первый подход называется паравиртуализа-ция и предполагает использование специализированных драйверов. Создание таких драйверов для современных графических ускорителей не представляется возможным ввиду их закрытой архитектуры. Второй подход - обеспечение непосред-
ственного доступа гостевой ОС к физическому устройству. В этом случае в виртуальную машину отображаются определенные участки памяти и прерывания физической машины. Такое отображение стало возможным с появлением технологий аппаратной виртуалиации ввода-вывода под общим названием IOMMU (Input/Output Memory Management Unit). В этом случае для работы с устройством можно использовать драйверы, предоставляемые производителем. Возможность непосредственной передачи реализована в большинстве современных мониторов виртуальных машин и хорошо работает с рядом периферийных устройств на шине PCI, например сетевыми адаптерами и обеспечивает производительность, близкую к непосредственной. Однако графический контроллер, являясь PCI-устройством, имеет ряд особенностей, усложняющих организацию его передачи.
Аппаратные платформы с архитектурой x86 имеют функцию прерывания E820, использующуюся для получения информации о распределении адресного пространства, имеющейся оперативной памяти и зарезервированных адресах. Видеокарта имеет зарезервированный диапазон видеопамяти, в котором размещаются данные, отображаемые на экране. Область видеопамяти для кратковременного хранения одного или неТаблица 1
Модель памяти архитектуры х86
Диапазон адресов Тип памяти Назначение
00000000-000003FF Conventional memory Real Mode Interrupt Vector Table
00000400-000004FF BIOS Data Area
00000500-00007BFF Conventional Memory
00007C00-00007DFF Boot Secor
00007E00-0009FBFF Convevtional Memory
0009FC00-0009FFFF Extended BIOS Data Area
000A0000-000AFFFF Upper Memory VGA Graphics Mode Video RAM
000B0000-000B7FFF VGA Monochrome Text Mode Video RAM
000B8000-000BFFFF VGA Color Text Mode Video RAM
000C0000-000C7FFF VGA Video BIOS ROM
000C8000-000CBFFF IDE Hard Disk BIOS ROM
000CC000-000DFFFF Optional Adapter ROM BIOS or RAM UMBs
000E0000-000EFFFF System BIOS PnP Extended Information
000F0000-000FFFFF System BIOS ROM
00100000-0010FFEF High Memory High Memory Area
0010FFF0-... Extended Memory Extended Memory
скольких видеокадров в цифровом виде называется фреймбуфером и располагается в памяти машины по фиксированному диапазону адресов 0xA0000 - 0xC0000. Для того чтобы операционная система могла адресовать видеоадаптер, этот раздел памяти должен быть отображен в адресное пространство виртуальной машины. Так как VGA адаптер не назначает адреса динамически, монитор виртуальных машин не может использовать стандартный механизм прямой передачи PCI-устройства, и логический адрес не может быть странслирован в физический средствами гипервизора, поэтому необходима специальная проверка для дипазонов VGA адресов. Адреса, которые необходимо отобразить в физическую память, представлены в табл. 1.
VGA BIOS расположен по адресам 000C0000-000C7FFF и необходим только во время загрузки операционной системы, после того как ОС получает контроль над устройством, он больше не требуется. Для того чтобы позволить виртуальной машине должным образом инициализировать графический контроллер, он должен быть выполнен, однако «простого» копирования этого диапазона в адресное пространство виртуальной машины недостаточно, потому что во время выполнения его хост-системой он может быть изменен для некоторых графических карт. Поэтому необходимо заранее извлечь VGA BIOS карты с помощью утилиты производителя непосредственно с устройства и привязать его к адресу OxC0000 гостевой ОС.
При передаче GPU в виртуальную машину необходимо также предотвратить загрузку эмулированного графического адаптера и запретить использование адаптера хост-системой.
Таким образом, для реализации передачи графического адаптера в виртуальную машину необходимо предпринять следующие шаги:
• определить идентификатор графического контроллера;
• скрыть необходимое устройство от хосто-вой ОС, с использованием модуля pci-stub;
• предотвратить загрузку эмулированного графического адаптера виртуальной машиной;
• разрешить доступ к портам ввода-вывода, специфичным для видеокарт 0x3B0 - 0x3BC, 0x3C0 - 0x3E0;
• обеспечить отображение диапазона MMIO видеобуфера карты (0xA0000-0xBFFFF) в виртуальную машину;
• извлечь VGA BIOS графического контроллера непосредственно с устройства и скопировать его в гостевую операционную систему по адресу 0xC000 и обеспечить его выполнение во время загрузки виртуальной машины.
Исследование эффективности
применения графического ускорителя в виртуальной машине
В рамках исследования разработали стенд с характеристиками, описанными в табл. 2, осуществили необходимые шаги и модифицировали код гипервизора в соответствии с разработанной методикой для обеспечения поддержки графического ускорителя [6].
В образы протестированных виртуальных машин предустановили драйвера графического адаптера (Developer Drivers for WinXP (версия 270.81), Developer Drivers for Linux (версия 270.41.19)) и средства для произведения потоковых вычислений (Cuda Toolkit 4.0).
Для оценки эффективности графического процессора в виртуальной машине провели тесты, основанные на программе генерации крипто-валюты Bitcoin [7], использующей интенсивный обмен данными между оперативной памятью и памятью графического процессора. Алгоритм ра-
Таблица 2
Экспериментальный стенд
Аппаратная платформа Монитор виртуальных машин Хостовая операционная система Графический контроллер Гостевые операционные системы
IntelSR2600, с поддержкой технологии аппаратной виртуализации Intel vt-d Гипервизор Xen версии 4.2 Ubuntu 11.Ш 64-бит nVidia GT43G Windows XP SP3 32-бит
OpenSuse 11.4 64-бит
4
Научно-технические ведомости СПбГПУ 6' 2012 Информатика. Телекоммуникации. Управление
Т аб лица З
Производительность Bitcoin, млн хешей в секунду
ОС Windows XP ОС OpenSUSE
Без виртуализации С виртуализацией Без виртуализации С виртуализацией
Центральный процессор G,5 G,24 1,З2 G,4
Графический процессор 14,28 14,15 14,24 14,24
боты программы - это поиск уникального хеша с определенным количеством ведущих нулей. Компьютер генерирует миллионы хешей; после вычисления хеша, удовлетворяющего условиям, результат отправляется для проверки. Программа максимально использует ресурсы компьютера для перебора хешей, поэтому хорошо иллюстрирует вычислительные возможности графического и центрального процессоров. Клиентское приложение реализовано на языке java и использует для доступа к вычислительным возможностям GPU язык OpenCL. Результаты данного теста сведены в табл. 3.
Для исследования скорости обмена данными между операционной системой и графическим ускорителем были проведены тесты пропускной способности, которые входят в набор разработчика, поставляющийся с программной оболочкой CUDA. Результаты тестов приведены на графике.
Предложен метод переноса графического ускорителя в виртуальную машину. Проведенные исследования показали, что с применением данного метода затраты на реализацию не приводят к существенной потере производительности вычислений на графическом процессорном устройстве. Это объясняется тем, что когда переданы необходимые данные, устройство работает независимо.
Скорость передачи данных между ОС и устройством
Таким образом, снижение производительности обусловлено только разницей в скорости обмена данными между памятью устройства и оперативной памятью виртуализованной и невиртуализо-ванной систем, и составляет не более 15 %.
Результаты проведенного исследования могут применяться для решения задачи параллельной обработки интенсивного потока данных, поступающего с робототехнических систем с использованием графических процессоров в виртуальных машинах современных ЦОД, что позволит повысить вычислительные возможности робототехни-ческих систем.
Работа выполнена при финансовой поддержке Министерства образования и науки РФ, контракт № 14.A18.21.0593.
СПИСОК ЛИТЕРАТУРЫ
1. Боресков, A.B. Основы работы с технологией CUDA [Текст] / A.B. Боресков, A.A. Харламов. -СПб.: ДМК Пресс, 2010. -232 с.
2. GPU Technology Conference. 2012 [Электронный ресурс] / Режим доступа: http://www.gputechconf.com (Дата обращения 07.06.2012)
3. OpenCL - The open standard for parallel programming of heterogeneous systems [Электронный ресурс] / Режим доступа: http://www.khronos.org/opencl (Дата обращения 07.06.2012)
4. Параллельное программирование и вычислительная платформа CUDA [Электронный ресурс] /
Режим доступа: http://www.nvidia.ru/object/cuda_home_ new_ru.html (Дата обращения G7.G6.2G12)
5. Williams, D.E. Virtualization with Xen [Text] / D.E. Williams; Ed. by J. Garcia. -Burlington: Syngress-Publishing, 2GG7. -З64 p.
6. Bitcoin P2P Digital Currency [Электронный ресурс] / Режим доступа: http://www.bitcoin.org (Дата обращения G7.G6.2G12)
7. Лабошин, Л. Методы и средства использования специализированных PCI-устройств в виртуальной среде: Дипломная работа [Текст] / Л. Лабошин -СПб.: СПбГПУ 2G12.