SGL support of driver

Keith Busch keith.busch at intel.com
Mon Jul 27 10:13:02 PDT 2015


On Mon, 27 Jul 2015, Christoph Hellwig wrote:
> On Mon, Jul 27, 2015 at 04:50:25PM +0000, Keith Busch wrote:
>> The Linux driver never recieves an IO vector that requires double
>> buffering though, and usually not physically contiguous. I'm not sure
>> there is a case to support SGL in the linux-nvme driver. Maybe if it's
>> tied to block integrity extensions with interleaved metadata formats,
>> but it'd be odd to find a device that implements SGL but not separate
>> metadata.
>
> That's because it asks never to get one..
>
> vectored direct I/O is a case where NVMe currently has to split
> while most other block devices can handle it in a single I/O.  For
> some database workloads this does make a significant difference, and
> it's even more interesting for providing atomicy to userspace using
> a future O_ATOMIC.

Even vectored IO requires each be a block size multiple. Splitting isn't
so bad as double buffering.

Still, if a PRP split is less efficient than an unsplit SGL, that ought
to be compelling enough to apply.

> It also requires pagecache I/O to be split into multiple commands
> where other block devices can handle it a lot more efficiently.



More information about the Linux-nvme mailing list