On 3/22/20 10:24 AM, Pavel Begunkov wrote: > On 22/03/2020 19:09, Pavel Begunkov wrote: >> On 19/03/2020 21:56, Jens Axboe wrote: >>> We always punt async buffered writes to an io-wq helper, as the core >>> kernel does not have IOCB_NOWAIT support for that. Most buffered async >>> writes complete very quickly, as it's just a copy operation. This means >>> that doing multiple locking roundtrips on the shared wqe lock for each >>> buffered write is wasteful. Additionally, buffered writes are hashed >>> work items, which means that any buffered write to a given file is >>> serialized. >>> >>> When looking for a new work item, build a chain of identicaly hashed >>> work items, and then hand back that batch. Until the batch is done, the >>> caller doesn't have to synchronize with the wqe or worker locks again. > > I have an idea, how to do it a bit better. Let me try it. Sure, go ahead! -- Jens Axboe