Re: [PATCH 2/2] io_uring: switch local task_work to a mpscq
Jens Axboe <[email protected]>
| Newsgroups | org.kernel.vger.io-uring |
|---|---|
| Message-ID | <[email protected]> |
On 6/12/26 6:21 AM, Jens Axboe wrote: > On 6/11/26 11:24 PM, Caleb Sander Mateos wrote: >> On Thu, Jun 11, 2026 at 7:23?PM Jens Axboe <[email protected]> wrote: >>> >>> On 6/11/26 7:14 PM, Caleb Sander Mateos wrote: >>>> This is great stuff! I had also observed these hotspots on a ublk >>>> workload. Since incoming ublk requests post task work to the ublk >>>> server's io_urings and completed ublk requests post task work to the >>>> client's io_urings, there is significant cross-CPU contention on the >>>> task work queues. >>> >>> Glad you like it! Once I post v2 tomorrow, perhaps you can try and run >>> some tests with and without and see how it does for you? >> >> Haven't tested v2 yet, but v1 shows a 4% IOPS improvement on a ublk >> 4-KB read workload. The workload has 8 CPUs (unpaired hypertwins) >> running fio with io_uring submitting I/O to the ublk devices and 32 >> ublk server CPUs (paired hypertwins) servicing the requests, achieving >> around 4M IOPS. Both the client and server CPUs look completely busy. > > That's a pretty nice improvement! Would be curious to hear what v2 looks > like. And here's some more stuff on top you might find interesting. For a 6 NVMe drive test, it drops my task work usage from top-of-profiles to ~2%. https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux.git/log/?h=io_uring-tw-mpscq-batch The patches sit on top of the io_uring-tw-mpscq branch. -- Jens Axboe