From mboxrd@z Thu Jan 1 00:00:00 1970 From: axboe@kernel.dk (Jens Axboe) Date: Tue, 4 Dec 2018 11:40:16 -0700 Subject: block and nvme polling improvements V3 In-Reply-To: <20181202164628.1116-1-hch@lst.de> References: <20181202164628.1116-1-hch@lst.de> Message-ID: <11a7106d-17e2-ceb4-bc16-22b447d0bc0f@kernel.dk> On 12/2/18 9:46 AM, Christoph Hellwig wrote: > Hi all, > > this series optimizes a few bits in the block layer and nvme code > related to polling. > > It starts by moving the queue types recently introduce entirely into > the block layer instead of requiring an indirect call for them. > > It then switches nvme and the block layer to only allow polling > with separate poll queues, which allows us to realize the following > benefits: > > - poll queues can safely avoid disabling irqs on any locks > (we already do that in NVMe, but it isn't 100% kosher as-is) > - regular interrupt driven queues can drop the CQ lock entirely, > as we won't race for completing CQs > > Then we drop the NVMe RDMA code, as it doesn't follow the new mode, > and remove the nvme multipath polling code including the block hooks > for it, which didn't make much sense to start with given that we > started bypassing the multipath code for single controller subsystems > early on. Last but not least we enable polling in the block layer > by default if the underlying driver has poll queues, as that already > requires explicit user action. > > Note that it would be really nice to have polling back for RDMA with > dedicated poll queues, but that might take a while. Also based on > Jens' polling aio patches we could now implement a model in nvmet > where we have a thread polling both the backend nvme device and > the RDMA CQs, which might give us some pretty nice performace > (I know Sagi looked into something similar a while ago). Applied, thanks. -- Jens Axboe