PrestoServe/NVSIMM
Дисковые операции по своей
природе связаны с механическими
перемещениями головок диска,
поэтому они выполняются медленно.
Обычно UNIX буферизует операции
записи в основной памяти и
позволяет выдавшему их процессу
продолжаться, в то время как на
операционную систему ложится
задача физической записи данных на
диск. Синхронный принцип операций
записи в NFS означает, что они обычно
выполняются очень медленно
(значительно медленнее, чем
операции записи на локальный диск).
Если клиент выдает запрос записи,
требуется, чтобы сервер обновил на
диске сами данные, а также все
связанные с ними метаданные
файловой системы. Для типичного
файла необходимо выполнить до 4
записей на диск: каждая операция
должна обновить сами данные,
информацию в каталоге файла,
индицирующую дату последней
модификации, и косвенный блок; если
файл большой, то потребуется также
обновить второй косвенный блок.
Прежде, чем подтвердить завершение
запроса записи NFS, сервер должен
выполнить все эти обновления и
гарантировать, что они
действительно находятся на диске.
Операция записи NFS часто может
продолжаться в течение 150-200
миллисекунд (три или четыре
синхронных записи, больше чем по 40
миллисекунд каждая), по сравнению с
обычными 15-20 миллисекундами для
записи на локальный диск.
Для того чтобы существенно
ускорить операции записи NFS,
серверы могут использовать
стабильную память (non-volatile RAM - NVRAM).
Эта дополнительная возможность
опирается на тот факт, что протокол
NFS просто требует, чтобы данные
операции записи NFS были бы
зафиксированы в стабильной памяти
вместо их фиксации на диске. До тех
пор, пока сервер возвращает данные,
которые подтверждены предыдущими
операциями записи, он может
сохранять эти данные любым
доступным способом.
PrestoServe и NVRAM в точности реализуют
эту семантику. При установке этих
устройств в сервер драйвер
устройства NVRAM перехватывает
запросы синхронных операций записи
на диск. Данные не посылаются прямо
в дисковое устройство. Вместо
этого, результаты операций записи
фиксируются в стабильной памяти и
подтверждаются как завершенные.
Это намного быстрее, чем ожидание
окончания механической операции
записи данных на диск. Спустя
некоторое время данные фиксируются
на диске.
Поскольку одна логическая
операция записи NFS выполняет три
или четыре синхронные дисковые
операции, использование NVRAM
существенно ускоряет пропускную
способность операций записи NFS. В
зависимости от условий (состояния
файловой системы, наличия других
запросов к диску, размера и
месторасположения записи и т.п.)
использование NVRAM ускоряет
операции записи NFS в 2-4 раза.
Например, типичная пропускная
способность при выполнении
операций записи NFS под управлением
ОС Solaris 2 составляет примерно 450
Кбайт/с. При использовании NVRAM
скорость повышается примерно до 950
Кбайт/с и даже несколько выше, если
используется сетевая среда более
быстрая, чем Ethernet. Никаких
улучшений времени выполнения
операций чтения NVRAM не дает.
С точки зрения дисковой
подсистемы или клиентов NFS
дополнительные возможности PrestoServe
и NVSIMM функционально эквивалентны.
Основная разница заключается в том,
что NVSIMM более эффективны, поскольку
они требуют меньше манипуляций с
данными. Поскольку плата PrestoServe
физически размещается на шине SBus,
требуется, чтобы данные
копировались на нее через
периферийную шину. В отличие от
этого, NVSIMM размещаются прямо в
основной памяти. Записываемые на
диск данные не копируются в NVSIMM
через периферийную шину. Такое
копирование может быть выполнено
очень быстро с помощью операций
память-память. По этим причинам NVSIMM
оказываются предпочтительными в
ситуациях, когда обе возможности
NVSIMM и PrestoServe оказываются
доступными.
В связи с важностью получаемого
ускорения Sun рекомендует
использование NVRAM действительно во
всех своих системах, которые
обеспечивают универсальный сервис
NFS. Единственным исключением из
этого правила являются серверы,
которые обеспечивают только сервис
по чтению файлов. Наиболее
характерным примером такого
использования являются серверы,
хранящие двоичные коды программ
для большого коллектива клиентов.
(В Sun он известен как сервер /usr/dist
или softdist).
Поскольку драйвер устройства
NVSIMM/PrestoServe должен находится на
диске в корневой файловой системе,
ускорение с помощью NVRAM не может
быть получено для работы с самой
корневой файловой системы. Драйвер
NVRAM должен успевать откачивать
модифицированные буфера на диск
прежде, чем станет активным любой
другой процесс. Если бы и корневая
файловая система была ускорена, она
могла бы оказаться "грязной"
(модифицированной) после краха
системы, и драйвер NVRAM не мог бы
загрузиться.
Еще одно важное соображение при
сравнении серверов, которые
оборудованы NVRAM и без него,
заключается в том, что
использование такого ускорения
обычно снижает максимальную
пропускную способность системы
примерно на 10%. (Системы,
использующие NVRAM, должны управлять
кэшем NVRAM и поддерживать в
согласованном состоянии копии в
кэше и на диске). Однако время
ответа системы существенно
улучшается (примерно на 40%).
Например, максимальная пропускная
способность SPARCserver 1000 на тесте LADDIS
без NVSIMM составляет 2108 операций в
секунду с временем ответа 49.4 мс.
Таже система с NVSIMM может выполнять
только примерно 1928 операций в
секунду, но среднее время ответа
сокращается примерно до 32 мс. Это
означает, что клиенты NFS
воспринимают сервер, оборудованный
NVRAM, гораздо более быстрым, чем
сервер без NVRAM, хотя общая
пропускная способность системы
несколько сократилась. К счастью,
величина 10% редко оказывается
проблемой, поскольку возможности
максимальной пропускной
способности большинства систем
намного превышают типовые
нагрузки, которые вообще находятся
в диапазоне 10-150 операций в секунду
на сеть.
[Предыдущая глава]
[Оглавление] [Следующая
глава]
|