• Jens Axboe's avatar
    nvme: implement mq_ops->commit_rqs() hook · 04f3eafd
    Jens Axboe authored
    Split the command submission and the SQ doorbell ring, and add the
    doorbell ring as our ->commit_rqs() hook. This allows a list of
    requests to be issued, with nvme only writing the SQ update when
    it's necessary. This is more efficient if we have lists of requests
    to issue, particularly on virtualized hardware, where writing the
    SQ doorbell is more expensive than on real hardware. For those cases,
    performance increases of 2-3x have been observed.
    
    The use case for this is plugged IO, where blk-mq flushes a batch of
    requests at the time.
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    04f3eafd
pci.c 76.6 KB