On Sat, Nov 2, 2019 at 11:58 PM Jens Axboe <axboe@xxxxxxxxx> wrote: > > On 11/2/19 8:03 AM, Jens Axboe wrote: > > On 11/2/19 1:29 AM, Ming Lei wrote: > >> __blk_queue_split() may be a bit heavy for small block size(such as > >> 512B, or 4KB) IO, so introduce one flag to decide if this bio includes > >> multiple page. And only consider to try splitting this bio in case > >> that the multiple page flag is set. > >> > >> ~3% - 5% IOPS improvement can be observed on io_uring test over > >> null_blk(MQ), and the io_uring test code is from fio/t/io_uring.c > >> > >> bch_bio_map() should be the only one which doesn't use bio_add_page(), > >> so force to mark bio built via bch_bio_map() as MULTI_PAGE. > >> > >> RAID5 has similar usage too, however the bio is really single-page bio, > >> so not necessary to handle it. > > > > Thanks Ming, applied. > > Actually, I took a closer look at this. I thought the BIO_MAP_USER > overload would be ok, but that seems potentially fragile and so does > the fact that we need to now maintain an extra state for multipage. > Any serious objections to just doing the somewhat hacky bio->bi_vcnt > check? With a comment I think that's more acceptable, and it doesn't > rely on maintaining extra state. Particularly the latter is a big > win, imho. I am fine with checking bio->bi_vcnt with comment. Thanks, Ming Lei