ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ДЛЯ ИЗМЕРЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ НЕКОТОРЫХ ФУНКЦИЙ ОПЕРАЦИОННЫХ
СИСТЕМ
Мартышкин Алексей Иванович
к-т. техн. наук, доцент кафедры вычислительных машин и систем Пензенского
государственного технологического университета, 440039, Россия, г. Пенза, проезд Байдукова/ул. Гагарина, 1а/11
E-mail: [email protected]
SOFTWARE FOR MEASURE THE PERFORMANCE OF SOME FUNCTIONS
OF OPERATING SYSTEMS
Martyshkin Alexey Ivanovich
candidate of technical sciences, associate Professor at the Department of computers
and systems Penza State Technological University, 440039, Russia, Penza, Proyezd Baydukova / Gagarin Street, 1a/11,
E-mail: [email protected]
АННОТАЦИЯ
В настоящей статье дается описание созданного программного комплекса с графическим интерфейсом для измерения производительности некоторых функций операционных систем. Целью работы является разработка программного обеспечения, необходимого для анализа времени выполнения программных функций однопроцессорных и многопроцессорных операционных систем. Программа выполняет анализ следующих функций операционных систем: мьютексов, семафоров, блокировок чтения-записи, каналов FIFO и PIPE, сокетов TCP и UDP, переключения контекста, системных вызовов (чтение, запись, открытие, закрытие). Преимущество перед аналогами состоит в том, что в отличие от аналогов, данное программное обеспечение представлено удобным графическим интерфейсом пользователя, за реализацию которого отвечают библиотеки Qt и Qwt, характеризуемые богатым набором виджетов, с помощью которых можно создавать сложный графический интерфейс. Используемые библиотеки являются кроссплатформенными, что позволяет сделать более простой процедуру переноса приложений на разные операционные системы. Применяется сглаживание графиков результатов тестирования. В конце работы приводятся результаты тестовых измерений и даются соответствующие выводы.
ABSTRACT
This article provides description of the developed software complex with a graphical interface to measure the performance of some functions of operating systems. The aim of this work is to develop the software needed to analyze the run-time software functions single-processor and multiprocessor operating systems. The program performs the analysis of the following operating systems: mutexes, semaphores, locks a read-write channel FIFO and PIPE, sockets, TCP and UDP, context switches, system calls (read, write, open, close). Advantage over similar products is that unlike analog, the software presents a convenient graphical user interface, for implementation of which are consistent with the Qt library and Qwt, which is characterized by a rich set of widgets with which you can create complex GUI. Used libraries are cross-platform, allowing you to make simpler the procedure of porting applications to different operating systems. The amount of smoothing of the graphs of the test results. In the end, the results of test measurements and are given the appropriate conclusions.
Ключевые слова: Linux, функции операционных систем, библиотеки QT и QWT, отладка, тестирование, язык С++.
Keywords: Linux, functions of operating systems, libraries QT and QWT, debugging, testing, C++language.
Введение
Современные операционные системы (ОС) предоставляют разработчикам программного обеспечения (ПО) большое количество разнообразных средств создания сложных систем, состоящих из нескольких процессов, которые могут выполняться на разных ЭВМ, средства для обмена информацией между ними и способы синхронизации их совместной работы [1].
Цель данной работы - создать ПО, предназначенное для анализа времени выполнения программных функций однопроцессорных и многопроцессорных ОС.
Измерение производительности различных функций ОС необходимо не только разработчикам ОС, для оценки эффективности реализации той или иной функции и сравнения производительности реализации в других ОС, но и прикладным программистам, которым измерение производительности функций ОС необходимо для выбора наиболее подходящих средств реализации своих проектов. Реализации одних и тех же функций ОС могут значительно отличаться в разных ОС как по производительности, так и по способам работы с ними [1].
Постановка задачи
ПО должно выполнять тестирование функций ОС, таких как: средства синхронизации процессов: взаимные исключения (мьютексы), семафоры, блокировки чтения-записи; средства межпроцессного обмена: именованные каналы FIFO, неименованные каналы PIPE, сокеты TCP и UDP; переключение контекста; системные вызовы (чтение, запись, открытие, закрытие).
В настоящее время получил широкое распространение программный комплекс Lmbench, позволяющий проводить тестирование шх-совместимых систем, имея в своём составе широкий спектр тестов для разных подсистем ОС. В состав Lmbench входят тесты для определения следующих характеристик: средств межпроцессного обмена: сетевой подсистемы, неименованных и именованных каналов; средств синхронизации процессов: взаимные исключения, семафоры, блокировки чтения-записи; системных вызовов; переключения контекста [2, 3, 4].
Таким образом, данный пакет позволяет получить довольно целостное представление о проверяемой ОС, выявить сильные и слабые стороны реализации конкретных функций. Но, с другой стороны, пакет Lmbench не имеет графического интерфейса и каждый вид тестирования представлен отдельной программой, которая должна быть запущена из командной строки с передачей некоторых аргументов. Так как работа других приложений и служб ОС оказывают сильное влияние на конечный результат тестирования, рекомендуется производить тестирование конкретной тестовой программой десять раз подряд, получить среднее арифметическое результатов тестирования, что даёт результат, наиболее приближенный к истинному значению.
Из вышесказанного ясно, что пакет LMbench имеет ряд недостатков, которые делают работу с ним не удобной, требующей многократного повторения однотипных действий и выполнения дополнительных вычислений для получения результатов. Многократный вызов программы тестирования, также делает процедуру тестирования при помощи Lmbench громоздкой, требующей больших затрат времени. Полученные после выполнения тестов данные являются промежуточными и требуют дополнительной обработки, что также требует дополнительных затрат времени и может привести к ошибкам в процессе вычислений. Таким образом, разработанное ПО для тестирования функций операционных систем делает работу тестирования более удобной, более продуктивной и доступной, чем пакет LMbench.
Формализация задачи
Для разработки ПО обозначены задачи, которые предполагается решать с его помощью: 1) Выбор тестируемых функций; 2) Сбор результатов тестирования; 3) Обработка полученных результатов; 4) Отображение полученной статистики в виде графиков; 5) Отображение результатов в отдельном окне; 6) Настройку цветов для 48
отображения данных; 7) Сглаживание графиков. Анализируя поставленные задачи, делаем вывод о входных и выходных данных разрабатываемого ПО. Входные данные: а) название тестируемой функции; б) цветовая палитра для отображения результатов; Выходные данные: а) Графики полученных результатов; б) Отображение результатов, не требующих представления в виде графиков.
На рисунке 1 представлен алгоритм работы созданного ПО.
Начало программы
Выбор ф тести ункции для эования
Запуск выпол тести процесса, няющего рование
Выполнение тестирования
Возврат данных прог олученных основную рамму
Обработка резул полученных тьтатов
Отображени резул 1е полученных тьтатов
^ Конец программы
Рисунок 1 - Алгоритм работы ПО
Архитектура программного обеспечения
Работа с ПО осуществляется на ЭВМ под управлением ОС семейства Linux. На сегодняшний день наиболее распространенными дистрибутивами данной ОС являются - Ubuntu, Fedora и Mandriva. Для обеспечения работоспособности программы требуется nix-совместимая ОС с установленными библиотеками Qt и Qwt. Проанализировав по достоинствам и недостаткам современные языки программирования, делаем вывод о том, что более целесообразно для решения поставленных в работе задач использовать язык C++, по ряду причин: поддержка парадигмы объектно-ориентированного программирования, высокое быстродействие программ, наличие большого числа готовых библиотек, использование которых существенным образом упрощает процесс разработки и экономит значительное количество времени.
Разработка программы
В соответствии с технологией RAD выделим три этапа в разработке ПО: разработка графического интерфейса для взаимодействия пользователя с программой; разработка функциональных модулей, решающих задачи, оговоренные в задании на разработку; привязка реализации функциональной части к графическому интерфейсу.
За основу пользовательского интерфейса взят многооконный интерфейс. Для различных решаемых задач создаются отдельные окна.
В разработанном ПО применяется сглаживание графиков - технология, используемая для устранения эффекта «зубчатости», возникающего на краях одновременно выводимого на экран множества отдельных друг от друга плоских, или объёмных изображений. Если данные сильно зашумлены, нужно произвести их сглаживание, обычно применяемое для получения информации о возможном выборе типа параметрической модели, а сам процесс подбора параметров параметрической модели проводят для исходных данных. Сглаживание производится по нескольким расположенным подряд данным, причем их число обычно подбирается экспериментально.
На рисунках 2-4 приведены графики результатов тестов (мьютекса, семафора, переключения контекста).
Рисунок 2 - Тест мьютекса: установка параметров (а), без сглаживания (б), с применением наиболее вероятного сглаживания (в)
Рисунок 3 - Тест семафора: установка параметров (а), без сглаживания (б), с применением наиболее вероятного сглаживания (в)
Р»ивр npo.eccoe
>е количестю ooueccoe
Ф»*л тесгиро»ан/е сглажиеа-ие графг"«ов Свойств»
Время переключения контекста
15 20
ФаЛл тестирован/е сглашив»-ие граф«<ов Свойства
Время переключения контекста
М/ i Í i.....t......p.
......i ii Г i. f...............
1
iy V
• £
Количество процессов
Рисунок 4 - Тест времени переключения контекста: установка параметров (а), без сглаживания (б), с применением наиболее вероятного сглаживания (в)
Разработанное ПО зарегистрировано в Федеральной службе по интеллектуальной собственности (свидетельство № 2013611118).
Работа выполнена при поддержке стипендии Президента РФ (СП-828.2015.5).
Выводы
Было разработано ПО для тестирования функций ОС: мьютексов, семафоров, блокировок чтения-записи, каналов FIFO и PIPE, сокетов TCP и UDP, переключения контекста, системных вызовов.
В отличие от аналогов, данная программа представлена удобным графическим интерфейсом пользователя, за реализацию которого отвечают библиотеки Qt и Qwt, которые имеют богатый набор виджетов с чьей помощью можно создавать сложный графический интерфейс. Используемые библиотеки являются кроссплатформенными, что позволяет более просто переносить приложение на разные ОС.
Используемый при создании данного ПО язык программирования C++ способствует упрощению переноса программы на другие платформы и достаточно высокому быстродействию программы, что весьма сказывается на точности результатов тестирования.
Список литературы:
1. Таненбаум Э., Бос Х. Современные операционные системы.-СПб.: Питер, 2G15. - 1120с.
2. Стивенс У.Р. UNIX: взаимодействие процессов. - Питер, 2003. - 576 с.
3. Стивенс У.Р. UNIX: разработка сетевых приложений. - Питер, 2007. - 1039 с.
4. Родригес К.З., Фишер Г., Смолски С. Linux. Азбука ядра. - Кудиц-пресс, Москва, 2007. - 584 с.
References:
1. E. Tanenbaum, H. Bos. Modern Operating Systems. - St. Petersburg: Peter, 2G15. -112G p.
2. UP. Stevens WR UNIX: The Interaction of Processes. - Peter, 2GG3. - 576 p.
3. UP. Stevens WR UNIX: The Development of Network Applications. - Peter, 2GG7. - 1G39p.
4. K.Z Rodriguez, G. Fischer, S. Smolski. Linux. The ABC Core. - Kudits Press, Moscow, 2GG7. - 584 p.