Прямой ввод/вывод

Оценить
(0 голоса)

Прямой ввод/вывод в том виде, в котором он был первоначально реализован, не всегда приводил к повышению производительности, и в результате был создан более обширный набор оптимизаций для того, чтобы приблизить производительность файлов базы данных в файловой системе UFS к уровню производительности, достигаемому на низкоуровневых устройствах. Усовершенствования, полученные в результате реализации этого проекта, стали доступными в релизе 1/01 операционной системы Solaris 8.

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

По соображениям целостности данных стандарт POSIX определяет, что синхронные операции записи в файлы выполняются в представленном порядке. Синхронные операции записи (обращения write(2) и pwrite(2) к файлам, открытым с флагом 0_SYNC) используются некоторыми СУБД для того, чтобы выгружать измененные страницы из буферного кэша в таблицы, сохраняемые в файлах базы данных файловой системы UFS. В случае низкоуровневых устройств СУБД ожидает момента, чтобы стать единственным владельцем устройства, и определяет порядок, в котором выполняются операции чтения и записи. В отличие от этого, Solaris управляет операциями записи на страницы файловой системы, и операционная система должна разрешать операции записи, потенциально исходящие из множества различных источников, в некоторый файл.

Чтобы гарантировать совместимость со стандартом POSIX, операционная система Solaris поддерживает единственную блокировку записи для каждого файла. Пока выполняется некоторая запись, все операции чтения и записи для данного файла блокируются до тех пор, пока эта операция записи не будет завершена. Если доступ к данному файлу разрешен только для чтения, эта особенность не будет иметь никакого воздействия. А вот для рабочих нагрузок с большим числом обновлений, генерирующих множество операций записи в один и тот же файл, воздействие на производительность может быть очень существенным.

Новая реализация прямого ввода/вывода преодолевает ограничение, налагаемое единственной блокировкой операций чтения/записи. Испытания, проведенные на рабочих нагрузках с большим количеством внутренних операций записи, показали, что производительность прямого ввода/вывода может достигать до 90% производительности, обеспечиваемой при использовании низкоуровневых устройств.

Другие оптимизации ввода/вывода
Поддержка больших файлов
Другие оптимизации
Единообразно объявленная память совместного использования
Динамическая реконфигурация

Добавить комментарий


Защитный код
Обновить