O_DIRECT против AIO_RAW

При использовании асинхронного ввода-вывода POSIX, есть ли различия между O_DIRECT а также AIO_RAW? Или я / я могу использовать оба? Мы работаем над сервером баз данных NoSQL и ищем способы сделать асинхронный ввод-вывод более эффективным в системах POSIX.

открытый (2):

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

aiocb (5):

Вы можете установить AIO_RAW бит флага в элементе структуры aio_flags
когда асинхронный ввод-вывод выполняется для раздела с необработанным устройством.
Когда AIO_RAW установлен бит флага, возможно асинхронный ввод-вывод
более эффективным.

2

Решение

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

На момент написания Linux не поддерживает AIO_RAW потому что Глибц struct aiocb не имеет aio_flags член (https://www.gnu.org/software/libc/manual/html_node/Asynchronous-I_002fO.html ) и в ядре AIO (который не является POSIX) не поддерживает AIO_RAW значение. Так:

Есть ли различия между использованием O_DIRECT и AIO_RAW? Или я / я могу использовать оба?

Да, потому что не все операционные системы с поддержкой POSIX AIO (например, Linux) позволяют устанавливать AIO_RAW и учитывая, что определенно будут ситуации, когда вы не сможете использовать оба. Кроме того, на некоторых операционных системах, таких как Linux O_DIRECT может работать с файлами внутри файловых систем и на устройствах, тогда как AIO_RAW предназначен только для «сырого устройства». Судя по исходному коду dt это выглядит AIO_RAW Поддерживался только в HP-UX и SCO Unix, поэтому, вероятно, его использование ограничено другими операционными системами.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector