Экспериментальное исследование кэшированного дискового ввода-вывода

ЭКСПЕРИМЕНТАЛЬНОЕ ИССЛЕДОВАНИЕ КЭШИРОВАННОГО

ДИСКОВОГО ВВОДА/ВЫВОДА В.С. Зотеев, В.В. Шефов, Б.Д. Тимченко

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

Введение

В современных системах обработки данных дисковая память, наряду с процессором и основной памятью, является ключевым ресурсом, определяющим качество обслуживания. Технические параметры накопителей, такие как время позиционирования, скорость вращения, плотность записи, постоянно улучшаются, что ведет к соответствующему увеличению их технической (номинальной) производительности. Одной из обычно используемых характеристик здесь является паспортная величина среднего времени доступа, либо его составляющие (см., например, [10]).

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

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

Работа дисковой памяти в системах обработки данных исследовалась как модель-но, так и экспериментально для различных аппаратно-программных платформ [1, 2, 6, 7]. Интерес к таким исследованиям сохраняется и в настоящее время в связи с тем, что узкие места при работе систем образуются в дисках гораздо чаще, чем это можно ожидать. Одной из причин этого является использование в системах накопителей большой единичной емкости, а также в общем не всегда эффективное управление размещением данных и логическими томами, особенно в серверах начального и среднего уровня.

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

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

2. Аналитическое моделирование, при котором используется модель производительности, реализуемая математически (расчетным путем) [6]. Такие модели чаще всего строятся в терминах абстрактных обслуживающих приборов - систем массового об-

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

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

Для проведения экспериментального исследования необходимы:

1. определенные концептуальные представления о структуре и организации исследуемой системы;

2. обоснованный выбор инструмента - мониторного средства;

3. способ (организация) измерений и обработки данных.

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

IRP

Приложение пользователя

Системный кэш

Драйвер FileMon

Драйвер ФС

Драйвер диспетчера логических томов

Драйвер System Monitor

Драйвер диска

IRP

Кэш устройства Устройство

Рис. 1. Выполнение запроса на ввод/вывод и его мониторинг

Здесь кэш устройства - внутренняя память контроллера диска (2-8 Мб и более для современных дисков), используемая обычно для упреждающего чтения (в нее считы-ваются как запрашиваемые данные, так и следующие за ними данные до конца дорожки диска) и отложенной записи (операция записи считается выполненной после попадания данных в кэш) [6]. Чаще всего возможно отключение кэширования записи на уровне устройства (физического тома).

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

взаимодействии с диспетчером виртуальной памяти. Прозрачные для приложений части файла проецируются на область адресов системного кэша, и операция ввода/вывода сводится к копированию данных из буфера пользовательского приложения в область кэша (нужную проекцию файла) при записи и в обратном направлении - при чтении [4]. Системное кэширование можно отключать на уровне отдельных файлов (путем указания особых флагов при создании/открытии файла [2]). Однако, как показали исследования [7], большинство операций ввода/вывода кэшируются со стороны Windows.

При вызове пользовательским приложением функции чтения/записи обычно (но не всегда) формируется пакет запроса ввода/вывода - IRP (I/O Request Packet), структура данных, описывающая запрос [3, 9]. В состав IRP входят поле типа операции, указатели на объект «файл», размер чтения/записи и другая информация. В случае некэши-рованного ввода/вывода IRP последовательно проходит через стек протоколов Windows сверху вниз - через драйверы фильтров файловой системы (в случае их наличия), драйвер файловой системы и так далее до драйвера диска. После выполнения устройством операции ввода/вывода IRP проходит стек снизу вверх, после чего результаты операции доступны пользовательскому приложению. Ряд мониторных средств использует данную организацию ввода/вывода и фиксирует временные метки прохождения IRP через различные драйверы (стандартный монитор Windows - System Monitor - применяет свой драйвер diskperf.sys [5], а FileMon - драйвер-фильтр файловой системы).

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

Выбор мониторного средства является принципиальным при проведении любых экспериментальных исследований. Поскольку в экспериментальном подходе большое значение имеет воспроизводимость экспериментов, предпочтительным является использование встроенных измерительных средств, которым в Windows является System Monitor [3]. Однако этот монитор обладает принципиальным недостатком: его разрешение ввода/вывода не превышает 1 мс. Так как в случае попадания в кэш при чтении и отложенной записи IRP не доходит до драйвера diskperf (или вообще не создается), System Monitor фактически не способен определять времена выполнения кэширован-ных операций чтения/записи. Поэтому нами было использовано другое средство - измеритель FileMon, специально предназначенный для мониторинга ввода/вывода на уровне IRP (сайт разработчиков - www.sysinternals.com). FileMon способен определять длительности операций ввода/вывода (в том числе кэшированного - путем перехвата вызовов функций диспетчера кэша) с разрешением в доли мкс.

Эксперименты проводились на ПК со следующей конфигурацией: ОС Windows XP HE SP1, RAM 512Мб, 2 HDD Seagate. Файлы, с которыми работали генераторы нагрузки, создавались на жестком диске, где отсутствовали файлы ОС, в разделе с ФС FAT32 (размер кластера 8 Кб).

В качестве генераторов нагрузки использовались две общедоступных утилиты -Intel IOMeter и SQLIO2 ([1]). SQLIO2 является приложением, используемым Microsoft NT Performance Group в исследованиях производительности Windows, а IOMeter (www.intel.com) - бенчмарк ввода/вывода фирмы Intel, имеющий функции генератора нагрузки и монитора.

Эксперименты проводились для различных параметров создаваемой нагрузки -последовательного/случайного кэшируемого/некэшируемого чтения/записи - в однозадачном режиме. Запись и чтение велись порциями, равными одному кластеру. Экспериментальные результаты в форме средних значений представлены на рис. 2, 3.

а

и

25 20 15 10 5 0

0,03

19

16

0,2

Я й

я «

« о

и я

о ч

& 8

И

Я

я

§ 3

2 о

Л К 14

еч

Я Я

й

эт И и О

Д а я 0

Последовательная

Случайная

Рис. 2. Значения среднего времени операции записи

о «

Л

га

12 10 8 6 4 2 0

10

0,02

0,25

Последовательное

Случайное

Кэширование ОС Без кэширования

Рис. 3. Значения среднего времени операции чтения

Главный вывод состоит в том, что кэширование (как на уровне жесткого диска, так и на уровне операционной системы) на несколько порядков уменьшает время операций последовательного чтения/записи. Физическая же операция записи (при последовательной записи) происходит только при отключенном на двух уровнях кэшировании. Ее средняя длительность при синхронной последовательной записи примерно равна времени полного оборота жесткого диска (1 / 7200 об/мин = 8,3 мс).

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

Заключение

5

9

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

сти, изучения работы системного кэша в мультипрограммном режиме и определения

влияния различных факторов на длительность операций ввода/вывода.

Литература

1. Chung L., Gray J., Worthington B., Horst R. Windows 2000 Disk IO Performance. Technical Report MS-TR-2000-55. June 2000. http://research.microsoft.com/BARC/sequential_IO/.

2. Disk Subsystem Performance Analysis for Windows. White paper. Microsoft Corporation, 2004.

3. Microsoft Developer Network Library-January 2004\Windows Development\Windows Base Services\Performance Monitoring.

4. Nagar R. Windows NT File System Internals. O'Reilly, 1997.

5. Pentakalos O., Friedman M. Windows 2000 Performance Guide. O'Reilly, 2002.

6. Shriver E. Performance modeling for realistic storage devices. Department of Computer Science, New York University, 1997.

7. Vogels W. File system usage in Windows NT 4.0. Department of Computer Science, Cornell University, 17th ACM Symposium on Operating Systems Principles (SOSP'99).

8. Основы теории вычислительных систем. / Под ред. С.А. Майорова. Учеб. пособие для вузов. М.: Высш. школа, 1978.

9. Соломон Д., Руссинович М. Внутреннее устройство Windows 2000. Мастер-класс. СПб: Питер, 2004.

10. Столлингс В. Операционные системы, 4-е издание. / Пер. с англ. М.: Издательский дом «Вильямс», 2002.

11. Феррари Д. Оценка производительности вычислительных систем. / Пер. с англ. А.И. Горлина, Ю.Б. Котова и Л.В. Ухова / Под ред. В.В. Мартынюка. М.: Мир, 1981.