Документация libaio по использованию с прямыми устройствами говорит, что смещения чтения и записи должны быть выровнены по секторам, например. кратно 512 байтам для типичного SSD/HDD. Некоторая информация, доступная в Интернете, также говорит о том, что буферы пользовательского пространства, используемые в качестве источника и назначения, также должны быть выровнены.
Каковы ограничения выравнивания для векторных функций чтения и записи при использовании прямого устройства? Я предполагаю, что дисковая сторона операции все равно должна быть выровнена по секторам (в конце концов, это разговор с блочным устройством под прикрытием). Могут ли мои списки сбора разброса распределяться небольшими фрагментами по невыровненным целям в пользовательском пространстве?
Я работаю над Debian Jessie и проверил поддержку векторного ввода-вывода в libaio.