Главная » 2016 » Март » 28 » Прямой ввод-вывод
12:08
Прямой ввод-вывод
Ядро Linux, как и ядро любой другой современной операционной системы, реализуетсложный пласт возможностей кэширования, буферизации и управлениявводом-выводом между устройствами и приложением (см. раздел ?Внутреннееустройство ядра? в конце этой главы). Когда речь идет о быстродействующихприложениях, часто возникает желание обойти этот уровень сложности и реализоватьсобственные функции управления вводом-выводом.Однако развертывание собственной системы ввода-вывода обычно не стоитзатрачиваемых усилий, и в действительности инструменты, доступные на уровнеоперационной системы, скорее всего, позволят добиться намного более высокойпроизводительности, чем средства уровня приложений. И все же системыуправления базами данных зачастую используют собственные функции кэширования,чтобы минимизировать присутствие в них операционной системы, кактолько это возможно.Когда вы добавляете флаг 0 DIRECT в вызов орепО, ядро минимизируетуправление вводом-выводом и ввод-вывод осуществляется напрямую из буферовв пользовательском пространстве в устройство, обходя страничный кэш.Все операции ввода-вывода синхронизируются и не возвращают значение дотех пор, пока полностью не завершаются.При использовании прямого ввода-вывода длина запроса, выравнивание буфераи смещения файлов — все должны быть целыми числами, кратными размерусектора соответствующего устройства — обычно он составляет 512 байт.До появления ядра Linux 2.6 это требование было еще строже: в версии 2.4 вседолжно было быть выровнено по размеру логического блока файловой системы(обычно 4 Кбайт). Для обеспечения совместимости приложения должны использоватьвыравнивание по размеру самого большого логического блока (чточаще всего наименее удобно).
Просмотров: 477 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar