1

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

使用直接设备时,向量读写函数的对齐限制是什么?我假设操作的磁盘端仍然需要扇区对齐(毕竟它是在与幕后的块设备通信)。我的分散收集列表可以将小块散布到用户空间中的未对齐目标吗?

我正在研究 debian Jessie,并且已经验证了 libaio 中对矢量 I/O 的支持。

4

1 回答 1

0

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

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

于 2015-08-02T19:47:49.803 回答