与直接设备一起使用的libaio文档说读写偏移量必须与扇区对齐,例如典型SSD / HDD的512字节的倍数。 Web上的一些可用信息还说,用作源和目标的用户空间缓冲区也需要对齐。

使用直接设备时,矢量读取和写入功能的对齐限制是什么?我认为操作的磁盘侧仍需要对齐扇区(毕竟是在与幕后的块设备通信)。我的散点图收集列表能否将小块内容散布到用户空间中未对齐的目标上?

我正在研究Debian Jessie,并验证了libaio中对向量I / O的支持。

最佳答案

通过编写一些测试代码建立的简短答案为否。传输的磁盘侧和内存侧都必须对齐。对于非扇区对齐操作,事件中返回的错误代码为-22(未知错误)。

如果这行得通,那将很有趣。基础硬件(与SSD和AHCI兼容的控制器)能够对任何偶数地址进行DMA。

09-11 19:00
查看更多