>> +-----------+-----------+--------+--------+ >> | io_uring | bio(base) | blk-mq | delta | >> +-----------+-----------+--------+--------+ >> | read | 577 | 446 | -22.7 | >> | randread | 504 | 416 | -17.46 | >> | write | 554 | 424 | -23.47 | >> | randwrite | 484 | 381 | -21.28 | >> +-----------+-----------+--------+--------+ >> >> +-----------+-----------+--------+--------+ >> | libaio | bio(base) | blk-mq | delta | >> +-----------+-----------+--------+--------+ >> | read | 412 | 341 | -17.23 | >> | randread | 389 | 335 | -13.88 | >> | write | 401 | 329 | -17.96 | >> | randwrite | 351 | 304 | -13.39 | >> +-----------+-----------+--------+--------+ > > This is pretty much expected, as blk-mq adds a bunch of things that > brd doesn't really care about. One example of such would be tag > management. Got it. That was my conclusion as well. > My reaction to your initial report wasn't a surprise that blk-mq > would be slower than bio based for this use case, rather that > io_uring was slower than libaio. > Yeah! So with nowait option, that isn't the case anymore. I will park this effort as blk-mq doesn't improve the performance for brd, and we can retain the submit_bio interface. Thanks for the input Jens, Christoph and Ming!