Научная статья на тему 'Анализ эффективности применения методов хеширования в файловых системах, работающих в пользовательском режиме'

Анализ эффективности применения методов хеширования в файловых системах, работающих в пользовательском режиме Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
588
52
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ФАЙЛОВАЯ СИСТЕМА / FILE SYSTEM / ОПЕРАЦИОННАЯ СИСТЕМА / OPERATING SYSTEM / МИКРОЯДЕРНАЯ ОС / MICROKERNEL OS / МЕТОДЫ ХЕШИРОВАНИЯ / HASHING METHODS / ПРОТОКОЛЫ ВЗАИМОДЕЙСТВИЯ ВФС И ФС / VFS AND FS INTERACTION PROTOCOLS / MINIX 3 / PUFFS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Иванов Евгений Юрьевич, Косяков Михаил Сергеевич

Рассмотрены особенности протоколов взаимодействия виртуальной файловой системы и файловой системы, их влияние на производительность микроядерных операционных систем. На примере файловой системы ext2, реализованной для операционной системы MINIX 3, установлено, что время идентификации файлового объекта в микроядерных операционных системах может увеличиваться до 26 раз по сравнению с монолитными системами. Показано, что при использовании рекомендованных в работе методов хеширования можно добиться производительности рассматриваемой части стека ввода–вывода, практически не уступающей производительности монолитных операционных систем.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Иванов Евгений Юрьевич, Косяков Михаил Сергеевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

EFFICIENCY ANALYSIS OF HASHING METHODS FOR FILE SYSTEMS IN USER MODE

The article deals with characteristics and performance of interaction protocols between virtual file system and file system, their influence on processing power of microkernel operating systems. User mode implementation of ext2 file system for MINIX 3 OS is used to show that in microkernel operating systems file object identification time might increase up to 26 times in comparison with monolithic systems. Therefore, we present efficiency analysis of various hashing methods for file systems, running in user mode. Studies have shown that using hashing methods recommended in this paper it is possible to achieve competitive performance of the considered component of I/O stacks in microkernel and monolithic operating systems.

Текст научной работы на тему «Анализ эффективности применения методов хеширования в файловых системах, работающих в пользовательском режиме»

7. Богатырев В.А., Демидов Д.В., Алексанков С.М. Оценка надежности дублированных комплексов с учетом контроля // Materiali VII mezinarodni vedecko-prakticka konference Aktyalni vymozenosti vedy. -2011. Чехия, Прага 27.06.2011-05.07.2011. - Прага: Education and science, 2011. - С. 57-58.

8. Bogatyrev V.А. Exchange of Duplicated Computing Complexes in Fault Tolerant Systems // Automatic Control and Computer Sciences. - 2011. - V. 46. - № 5. - P. 268-276.

9. Богатырев В.А., Бибиков С.В. Оценка функциональной безопасности систем, связанных с безопасностью // Технико-технологические проблемы сервиса. - 2011. - № 4. - С. 45-47.

10. Богатырев В. А. Надежность вариантов размещения функциональных ресурсов в однородных вычислительных сетях // Электронное моделирование. - 1997. - № 3. - С. 21-27.

11. Богатырев В. А., Богатырев С.В. Объединение резервированных серверов в кластеры высоконадежной компьютерной системы // Информационные технологии. - 2009. - № 6. - С. 41-47.

12. Богатырев В.А. Надежность функционально-распределенных резервированных структур с иерархической конфигурацией узлов // Изв. вузов. Приборостроение. - 2000. - № 4. - С. 67-70.

13. Богатырев В.А. Надежность отказоустойчивых вычислительных систем реального времени, компонуемых из многофункциональных модулей // Информационные технологии. - 2000. - № 10. - С. 11-16.

14. Богатырев В.А. Отказоустойчивые кластеры дублированных вычислительных комплексов // Информационные технологии. - 2012. - № 1. - С. 9-15.

Богатырев Владимир Анатольевич - Санкт-Петербургский национальный исследовательский университет

информационных технологий, механики и оптики, доктор технических наук, профессор, [email protected]

Алексанков Сергей Михайлович - Санкт-Петербургский национальный исследовательский университет

информационных технологий, механики и оптики, студент, [email protected]

Демидов Даниил Валентинович - Санкт-Петербургский национальный исследовательский университет

информационных технологий, механики и оптики, студент, [email protected]

Беззубов Владимир Федорович - Санкт-Петербургский национальный исследовательский университет

информационных технологий, механики и оптики, аспирант, [email protected]

УДК 004.451

АНАЛИЗ ЭФФЕКТИВНОСТИ ПРИМЕНЕНИЯ МЕТОДОВ ХЕШИРОВАНИЯ В ФАЙЛОВЫХ СИСТЕМАХ, РАБОТАЮЩИХ В ПОЛЬЗОВАТЕЛЬСКОМ

РЕЖИМЕ Е.Ю. Иванов, М.С. Косяков

Рассмотрены особенности протоколов взаимодействия виртуальной файловой системы и файловой системы, их влияние на производительность микроядерных операционных систем. На примере файловой системы ext2, реализованной для операционной системы MINIX 3, установлено, что время идентификации файлового объекта в микроядерных операционных системах может увеличиваться до 26 раз по сравнению с монолитными системами. Показано, что при использовании рекомендованных в работе методов хеширования можно добиться производительности рассматриваемой части стека ввода-вывода, практически не уступающей производительности монолитных операционных систем. Ключевые слова: файловая система, операционная система, микроядерная ОС, методы хеширования, протоколы взаимодействия ВФС и ФС, MINIX 3, PUFFS.

Введение

Несмотря на достижения современных исследований в области надежности операционных систем (ОС) и верификации программного обеспечения, отказы ОС, вызванные аппаратными и программными ошибками, по-прежнему приводят к снижению доступности прикладных сервисов, в том числе в системах стратегического назначения [1]. По некоторым оценкам, в ОС на каждую тысячу строк кода приходится до шести ошибок [2, 3]; размер же современных ОС превышает 6 000 000 строк кода. Согласно [4], до 85% ошибок находится в коде драйверов устройств и файловых систем (ФС), причем в случае монолитных ядер ОС любая из них потенциально может привести к краху всей системы. Считается, что переход к модульным микроядерным ОС, в которых основной функционал реализован в виде системных процессов, работающих в непривилегированном пользовательском режиме, позволяет решить данную проблему [5].

Отказоустойчивость микроядерных ОС основана на принципе минимальных привилегий и изоляции ошибок в системных компонентах (модулях), в частности, в драйверах и ФС: при отказе одного из компонентов ядро ОС продолжает функционирование и в состоянии перезапустить сбойный системный процесс. Время восстановления одного компонента значительно меньше, чем время восстановления всей

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

Функционирование драйверов и ФС в виде отдельных процессов пользовательского режима приводит к потере производительности микроядерных ОС по сравнению с монолитными ОС [6]. Одной из причин снижения производительности является отсутствие возможности совместного использования служебных структур данных различными компонентами ОС. В микроядерных ОС системные процессы вынуждены явным образом обмениваться данными, используя средства ядра ОС, и осуществлять преобразование данных из одного формата в другой при их передаче согласно специальным протоколам взаимодействия. В частности, подобные накладные расходы появляются в микроядерных ОС из-за выделения виртуальной файловой системы (ВФС) и файловой системы в независимые процессы. При этом эффективность механизма их взаимодействия становится основным фактором, определяющим производительность этой части стека ввода-вывода в сравнении с монолитными ОС.

С целью увеличения производительности микроядерных ОС в данной работе проанализирована эффективность применения различных методов хеширования в ФС, работающих в пользовательском режиме, и рассмотрена целесообразность предоставления ВФС дополнительной информации о структурах данных, поддерживаемых ФС, как, например, в протоколе PUFFS взаимодействия ВФС и ФС для ОС NetBSD [7]. Для этого в микроядерной ОС MINIX 3 авторами реализована ФС ext2, что позволило, кроме прочего, провести сравнение производительности рассматриваемой части стека ввода-вывода в микроядерных ОС с аналогичными решениями для монолитных систем, а именно с ФС ext2, работающей в ОС Linux [8]. Показано, что при использовании рекомендованных в работе методов хеширования можно добиться производительности рассматриваемой части стека ввода-вывода микроядерных ОС, практически не уступающей производительности монолитных ОС.

Структурная организация стека ввода-вывода

На рис. 1 показана структурная организация стека ввода-вывода в монолитных и микроядерных ОС. При обращении к файлу пользовательский процесс выполняет системный вызов, передавая ОС дескриптор файла fd (file descriptor). Для монолитных ОС система переводится в режим ядра, а управление передается ВФС, которая по fd находит объект vnode (virtual node), содержащий высокоуровневое описание файла. Среди прочего, vnode предоставляет указатель на структуру данных ФС istruct (inode struct), описывающую сам файловый объект. ВФС использует этот указатель на istruct при вызове соответствующего обработчика запроса ФС. Таким образом, ВФС идентифицирует запрашиваемый файловый объект посредством прямого доступа к istruct. Данное описание применимо к Linux [8] и к большинству других UNIX-подобных ОС.

В микроядерных ОС ВФС и ФС представляют собой отдельные независимые процессы, работающие в пользовательском режиме. Как и в монолитной системе, ВФС использует fd для поиска соответствующего vnode. Затем, согласно протоколу взаимодействия ВФС и ФС, ВФС осуществляет запрос к ФС, используя некоторый идентификатор файла id. Использование в качестве id непосредственно адреса istruct является нежелательным, так как в этом случае нарушается принцип изоляции, и ФС не сможет перемещать istruct в памяти между вызовами со стороны ВФС. Тем не менее, некоторые протоколы взаимодействия ВФС и ФС, например, протокол PUFFS, реализованный для ОС NetBSD, в целях повышения производительности позволяют ВФС хранить и передавать адреса структур данных istruct, поддерживаемых ФС [7].

Другие протоколы, такие как протокол взаимодействия ВФС и ФС в ОС MINIX 3, в качестве id используют числовой идентификатор inum, получаемый от ФС при создании или открытии файла [9]. Использование идентификатора inum, отличного от адреса istruct, приводит к необходимости хранения в ФС таблицы соответствий inum адресам istruct и поиска по ней при идентификации файлового объекта. Так как эта операция используется при каждом обращении к ФС, ее неэффективная реализация может сказаться на производительности файловой системы. Стоит отметить, что данная проблема отличается от поиска vnode по значению файлового дескриптора fd в ВФС. В последнем случае количество хранимых fd, среди которых осуществляется поиск, соответствует числу файлов, открытых одним вызывающим процессом, т. е. относительно невелико. По этой причине операция поиска vnode по fd практически не оказывает влияния на время обслуживания запроса в ВФС. Поиск же адреса istruct по inum осуществляется среди всех идентификаторов файлов, открытых всеми процессами. Кроме того, ФС обычно кэширу-ет сами структуры istruct на случай повторного обращения к недавно закрытым файлам, что приводит к дополнительному увеличению пространства поиска и, как следствие, времени выполнения запроса.

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

нагрузки, широко используемые для оценки производительности стека ввода-вывода ОС [10]. В качестве характеристики производительности используется величина, обратная времени выполнения, что соответствует числу задач, исполненных в единицу времени.

Процесс, дескриптор файла fd

Монолитная ОС -' > Сист. вызов (fd) 1-

Г"

ВФС, fd ^ (vonde+istruct)

Г "

| Вызов функ. (istruct) ■ ■, ФС, istruct

ВФС, fd ^ (vonde+inum)

Ввод-вывод (№ блока) .

Драйвер диска, № блока

Микроядерная ОС

ВФС-ФС (inum)

ФС, inum ^ istruct

Рис. 1. Структурная организация стека ввода-вывода в монолитных и микроядерных ОС Параметры проведения экспериментов

Эксперименты проводились на реализованной в работе файловой системе ext2 для микроядерной ОС MINIX 3, функционирующей на персональном компьютере с процессором Intel Pentium 4 2.80 ГГц, оперативной памятью DDR 512 МБ и диском Seagate 40 ГБ 7200 rpm. Рассматривались следующие типы эталонных пользовательских нагрузок:

- «Сборка». Сборка ОС MINIX 3 из каталога lusrlsrc, включая ядро, драйверы, ФС и библиотеки. Полное время выполнения этой задачи T составляло около 40 мин.

- «Копирование». Копирование дерева каталогов с исходными файлами lusrlsrc на целевую файловую систему ext2. Общий объем данных составлял порядка 170 МБ, число файлов 24 694 (1 620 каталогов), средняя глубина каталогов равнялась четырем. Время T равнялось примерно 20 с.

- «Статистика». Вызов системной команды stat для всех файлов из каталога lusrlsrc в случайном порядке. В отличие от нагрузки «Копирование», в результате которой происходят последовательные обращения к диску, в нагрузке «Статистика» обращения к блокам диска осуществляются в произвольном порядке. Время T равнялось примерно 50 с.

Медленные дисковые операции значительно более сильно влияют на производительность стека ввода-вывода, чем вычислительные операции внутри ФС, что затрудняет измерение времени т поиска адреса istruct по числовому идентификатору файла inum. Кроме того, при учете времени выполнения дисковых операций резко увеличивается длительность проведения экспериментов. В связи с этим авторами, в том числе, анализировалась работа указанной части стека ввода-вывода изолированно без учета дисковых операций. Функционирование такой части осуществлялось в специальном программном окружении, имитирующем остальные компоненты ФС. Для этого случая нагрузка на исследуемую часть стека ввода-вывода создавалась путем воспроизведения записанных ранее операций ФС, сформированных при выполнении перечисленных выше пользовательских задач.

С целью повышения точности измерений функция Hyper-Threading процессора была отключена. Процессу, исполняющему код исследуемой части стека ввода-вывода, был присвоен наивысший абсолютный приоритет, что исключало прерывание его работы для предоставления процессорного времени другим процессам. Подкачка страниц виртуальной памяти была запрещена. В качестве inum и адреса istruct в протоколе взаимодействия ВФС и ФС в ОС MINIX 3 используются целые 32-разрядные числа, поэтому их обработка на 32-битном процессоре не требует дополнительных накладных расходов.

Анализ эффективности методов хеширования

Результаты экспериментов показали, что при линейном поиске адреса istruct по inum и при ограничении максимального числа n хранимых структур istruct значениями до 512 время идентификации файлового объекта т увеличивается до 26 раз по сравнению со временем, наблюдаемым при прямой адресации, используемой в монолитных системах. Для увеличения производительности рассматриваемой части стека ввода-вывода рассмотрена эффективность применения различных методов хеширования при реализации таблицы соответствий inum адресам структур данных istruct.

Производительность хеш-таблиц напрямую зависит от выбора хеш-функции, метода разрешения коллизий и размера хеш-таблицы. В работе использованы эталонные реализации хеш-таблиц на основе открытой адресации с квадратичной последовательностью проб (Google dense) и двойным хешированием (GNU libiberty). Для оценки эффективности хеш-таблиц с разрешением коллизий при помощи цепочек использована собственная реализация, позволяющая, в отличие от других, полностью контролировать все параметры вычисления. Например, в популярной реализации hashmap, входящей в GNU GCC, размер хеш-таблицы динамически изменяется в зависимости от коэффициента заполнения а. Кроме того, результаты экспериментов показали, что собственная реализация работает быстрее, чем hash map при аналогичных параметрах.

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

- модульное хеширование «MOD»: h(inum) = inum modm. Применяется в GNU libiberty и hash map;

- модульное хеширование «AND» для случаев, когда m является степенью двойки: h(inum) = inum and (m - 1). Данная функция проста в вычислительном плане и дает распределение, схожее с распределениями модульных хеш-функций общего вида [11]. Используется в Google dense и в авторской реализации хеш-таблицы.

Собственная реализация хеш-таблицы, кроме хеш-функции «AND», поддерживает хеш-функцию «MOD», мультипликативное и универсальное хеширование, популярную хеш-функцию «MurmurHash» [12]. Наши результаты показали, что, несмотря на большую вычислительную сложность, перечисленные функции не дают заметного преимущества в распределении хеш-значений по сравнению с хеш-функцией «AND».

В таблице приведено среднее время т идентификации файлового объекта при реализации различных типов файловых нагрузок для случая n = 512. Размер хеш-таблиц для Google dense и реализации авторов m = 2048, для libiberty m = 2039. Разница между наблюдаемыми минимальными и максимальными значениями т составляла не более 7% от представленных средних значений.

Тип нагрузки Таблицы соответствий inum адресам istruct

Google dense libiberty Авторская реализация Прямая адресация Линейный поиск

«Сборка» 354 410 214 165 4315

«Копирование» 21 24 11 9 237

«Статистика» 10 13 6 5 104

Таблица. Среднее время идентификации файлового объекта т, мс

Согласно полученным результатам, для случая работы с файлами разрешение коллизий на основе цепочек работает быстрее, чем открытая адресация. Преимущество метода «цепочек» сохраняется также при изменении размеров хеш-таблиц. Это объясняется высокой интенсивностью открытия и закрытия файлов при выполнении нагрузок, что требует частого удаления элементов из таблицы соответствий. При использовании открытой адресации удаленные элементы продолжают храниться в хеш-таблице, тем самым увеличивая время поиска. Более низкая производительность открытой адресации с двойным хешированием по сравнению с квадратичной последовательностью проб указывает на то, что время, затрачиваемое на вычисление дополнительных хеш-значений, превышает потери времени на дополнительных пробах [13]. Кроме того, видно, что при использовании авторской реализации хеш-таблицы с разрешением коллизий при помощи цепочек время идентификации файлового объекта лишь немногим превосходит соответствующее время, наблюдаемое при прямой адресации, используемой в монолитных системах. В этой связи в дальнейшем в работе рассматривается именно авторская реализация хеш-таблицы.

На рис. 2 показана зависимость времени т от размера т хеш-таблицы для нагрузки «Сборка» при ограничении на число хранимых п = 512. Графики, представленные пунктиром, получены при кэ-

шировании последнего найденного сопоставления тит адресу что позволяет реже выполнять

поиск в таблице соответствий. При значениях т > 4096, соответствующих коэффициенту заполнения а = п / т < 0,25, значение т становится практически идентичным результатам, полученным при использовании прямой адресации. Эксперименты показали, что данная зависимость справедлива и для других значений п при а < 0,25. Кроме того, при таких значениях коэффициента заполнения а выигрыш от кэширования результатов последней операции поиска становится совсем незначительным. Перечисленные утверждения остаются верными и для других файловых нагрузок, так как идентификация файлового объекта необходима при выполнении любой файловой операции.

Результаты измерения полного времени Т выполнения пользовательских задач с учетом дисковых операций показали, что при небольших п < 1024 значения ТЛП, получаемые для случая линейного поиска адреса istruct по iпит со средним временем О(п), практически совпадают со значениями 7ХТ для случая применения хеш-таблиц со средним временем поиска О(1). Это объясняется тем, что медленные диско-

вые операции оказывают значительно большее влияние на время Т, чем вычислительные операции внутри ФС. Однако при увеличении числа п хранимых в памяти istruct отношение времен тлп/Тхт выполнения пользовательских задач для этих случаев также возрастает и достигает двух раз уже при п ~ 4096.

Т, мс

—н— хеш-таблица х хсщ-твблнца + кэш —в— ликепнып поиск D штксйниЛ тгонск + к^ш - прям;«л адресация

Рис. 2. Зависимость среднего времени идентификации файлового объекта т от размера хеш-таблицы m

на примере нагрузки «Сборка»

Заключение

В работе рассмотрены особенности протоколов взаимодействия ВФС и ФС и их влияние на производительность микроядерных ОС, обладающих повышенной надежностью в сравнении с монолитными системами. Для детального изучения этой части стека ввода-вывода была разработана реализация файловой системы ext2, функционирующая в микроядерной ОС MINIX 3. С ее помощью было показано, что протоколы взаимодействия ВФС и ФС, использующие числовой идентификатор inum для поиска файловой структуры istruct, описывающей запрашиваемый файловый объект, привносят значительные накладные расходы. А именно, время идентификации файлового объекта увеличивается до 26 раз по сравнению с монолитными системами, что особенно заметно при рассмотрении работы ФС без учета дисковых операций, например, при доступе к блокам файла, находящимся в кэше ФС.

В качестве возможного пути решения этой проблемы в работе рассматривается подход, реализованный в протоколе PUFFS взаимодействия ВФС и ФС для ОС NetBSD, позволяющий ВФС хранить адреса структур данных, поддерживаемых ФС, в частности адреса istruct. К сожалению, данный подход нарушает принцип изоляции компонентов микроядерных ОС и ведет к существенной зависимости функционирования ВФС от работы ФС, тем самым понижая надежность ОС.

В этой связи в работе предлагается использовать альтернативный путь увеличения производительности рассматриваемой части стека ввода-вывода, позволяющий сохранить изоляцию ВФС от ФС и основанный на применении хеш-таблиц в ФС для поиска адресов istruct по inum. Результаты измерений времени идентификации файлового объекта при использовании различных методов хеширования показали допустимость применения простой в вычислительном плане модульной хеш-функции при размере хеш-таблицы m = 2х. Было установлено, что для рассматриваемого случая работы с файлами разрешение коллизий при помощи цепочек работает быстрее, чем метод открытой адресации. Показано, что использование указанных методов хеширования позволяет достичь сопоставимых, а при увеличении размера хеш-таблицы - практически идентичных значений времени идентификации файловых объектов для микроядерных ОС в сравнении с монолитными системами. Это позволяет авторам сделать вывод о нецелесообразности применения подхода, реализованного в протоколе PUFFS.

Анализ работы всего стека ввода-вывода микроядерной ОС MINIX 3 с учетом дисковых операций показал, что при ограничении максимального числа хранимых структур istruct значениями до 1024 добавление хеш-таблиц не привносит заметного увеличения производительности. Это связано с тем, что медленные дисковые операции значительно сильнее влияют на производительность стека ввода-вывода, чем вычислительные операции внутри файловой системы. Однако с ростом числа хранимых в памяти istruct, вызванным как увеличением максимального числа открытых файлов, так и кэшированием самих структур istruct на случай повторного обращения к недавно закрытым файлам, использование хеш-таблицы становится необходимым.

Реализация ext2 для MINIX 3 выполнена при поддержке свободного университета Амстердама (VU University Amsterdam) и входит в состав операционной системы MINIX, начиная с версии 3.1.8. Авторы выражают признательность своему коллеге, научному программисту университета VU T. Veerman за плодотворное сотрудничество по тематике работы и полезные замечания.

В.А. Богатырев, А.В. Богатырев, И.Ю. Голубев, С.В. Богатырев

Литература

1. Титов А.В. Методика оценки надежности встроенных программных средств при редких отказах // Изв. вузов. Приборостроение. - 2010. - Т. 53. - № 10. - С. 38-41.

2. Ostrand T.J., Weyuker E.J. The distribution of faults in a large industrial software system // SIGSOFT Softw. Eng. Notes. - 2002. - V. 27. - № 4. - P. 55-64.

3. Ostrand T.J., Weyuker E.J., Bell R.M. Where the bugs are // SIGSOFT Softw. Eng. Notes. - 2004. - V. 29. -№ 4. - P. 86-96.

4. Chou A., Yang J., Chelf B. et al. An empirical study of operating systems errors // SIGOPS Oper. Syst. Rev. - 2001. - V. 35. - № 5. - P. 73-88.

5. Herder J.N., Bos H., Gras B. et al. Construction of a Highly Dependable Operating System // Proceedings of the Sixth European Dependable Computing Conference. EDCC '06. Washington, DC, USA: IEEE Computer Society. - 2006. - P. 3-12.

6. Leslie B., Chubb P., Fitzroy-dale N. et al. User-level Device Drivers: Achieved Performance // Journal of Computer Science and Technology. - 2005. - V. 20. - P. 654-664.

7. Kantee A. puffs - Pass-to-Userspace Framework File System // Proceedings of the AsiaBSDCon. - 2007. -P. 29-42.

8. Лав Р. Ядро Linux. Описание процесса разработки: Пер. с англ. - 3-е изд. - М.: Вильямс, 2013. - 496 с.

9. The VFS-FS protocol. MINIX 3 Developers Guide [Электронный ресурс]. - Режим доступа: http://wiki.minix3.org/en/DevelopersGuide/VfsFsProtocol, своб. Яз. англ. (дата обращения: 02.03.2013).

10. Traeger A., Zadok E., Joukov N., Wright C.P. A nine year study of file system and storage benchmarking // ACM Transactions on Storage (TOS). - 2008. - V. 4. - № 2. - P. 1-56.

11. Седжвик Р. Фундаментальные алгоритмы на C++. Части 1-4: Анализ/Структуры данных/Сортировка/Поиск: Пер. с англ. - Киев: Издательство «ДиаСофт», 2001. - 688 с.

12. Appleby A. Murmurhash v3 [Электронный ресурс]. - Режим доступа: http://sites.google.com/site/murmurhash/, свободный. Яз. англ. (дата обращения 16.03.2013).

13. Кнут Д.Э. Искусство программирования. Т. 3. Сортировка и поиск: Пер. с англ. - 2-е изд. - М.: Вильямс, 2000. - 832 с.

Иванов Евгений Юрьевич - Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, студент [email protected]

Косяков Михаил Сергеевич - Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, кандидат технических наук, доцент, [email protected]

УДК 004.738

ОПТИМИЗАЦИЯ РАСПРЕДЕЛЕНИЯ ЗАПРОСОВ МЕЖДУ КЛАСТЕРАМИ ОТКАЗОУСТОЙЧИВОЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ В.А. Богатырев, А.В. Богатырев, И.Ю. Голубев, С.В. Богатырев

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Ключевые слова: оптимизация, надежность, перераспределение запросов, кластер, отказоустойчивость.

Введение

Повышение отказоустойчивости, надежности и производительности распределенных вычислительных систем, объединяющих в единую систему множество отдельных кластеров [1-3], достигается в результате динамического перераспределения запросов [4-7] между ними с учетом изменений загруженности кластеров, отказов и временных отключений их узлов.

В распределенной инфраструктуре [1-3], консолидирующей множество ресурсов, объединенных в кластеры, перераспределение запросов (нагрузки) может осуществляться между узлами как одного, так и различных кластеров, соединенных через сеть. При перераспределении запросов между кластерами увеличиваются издержки на взаимосвязь через сеть, но возрастают возможности балансировки загрузки и адаптации к отказам и отключениям узлов, что обусловливает актуальность оптимизации процесса распределения запросов [8, 9].

Задача оптимизации системы

Объектом исследования является распределенная вычислительная система (рис. 1), включающая М локальных кластеров и общедоступный кластер, объединяющий т серверов.

i Надоели баннеры? Вы всегда можете отключить рекламу.