On 10/8/19 10:43 AM, Pavel Begunkov wrote: > On 08/10/2019 06:16, Jens Axboe wrote: >> On 10/7/19 5:18 PM, Pavel Begunkov (Silence) wrote: >>> From: Pavel Begunkov <asml.silence@xxxxxxxxx> >>> >>> Any changes interesting to tasks waiting in io_cqring_wait() are >>> commited with io_cqring_ev_posted(). However, io_ring_drop_ctx_refs() >>> also tries to do that but with no reason, that means spurious wakeups >>> every io_free_req() and io_uring_enter(). >>> >>> Just use percpu_ref_put() instead. >> >> Looks good, this is a leftover from when the ctx teardown used >> the waitqueue as well. >> > BTW, is there a reason for ref-counting in struct io_kiocb? I understand > the idea behind submission reference, but don't see any actual part > needing it. In short, it's to prevent the completion running before we're done with the iocb on the submission side. > Tested with another ref-counting patch and got +5-8% to > nops performance. > > -- Jens Axboe