Message ID | cover.1728828877.git.olivier@trillion01.com (mailing list archive) |
---|---|
Headers | show |
Series | napi tracking strategy | expand |
On Sun, 13 Oct 2024 14:28:05 -0400, Olivier Langlois wrote: > the actual napi tracking strategy is inducing a non-negligeable overhead. > Everytime a multishot poll is triggered or any poll armed, if the napi is > enabled on the ring a lookup is performed to either add a new napi id into > the napi_list or its timeout value is updated. > > For many scenarios, this is overkill as the napi id list will be pretty > much static most of the time. To address this common scenario, the concept of io_uring_napi_tracking_strategy has been created. > the tracking strategy can be specified when io_register_napi() is called. > > [...] Applied, thanks! [1/6] io_uring/napi: protect concurrent io_napi_entry timeout accesses commit: d54db33e51090f68645fecb252a3ad22f28512cf [2/6] io_uring/napi: fix io_napi_entry RCU accesses commit: 613dbde4863699fe88e601ddd7315f04c1aa3239 [3/6] io_uring/napi: improve __io_napi_add commit: e17bd6f1106d8c45e186a52d3ac0412f17e657c3 [4/6] io_uring/napi: Use lock guards commit: 6710c043c8e9d8fa9649fffd8855e3ad883bf001 [5/6] io_uring/napi: clean up __io_napi_do_busy_loop commit: c596060fbe5a1c094d46d8f7191a866879fe6672 [6/6] io_uring/napi: add static napi tracking strategy commit: cc909543d239912669b14250e796bbd877f8128a Best regards,
On 11/4/24 10:49 AM, Jens Axboe wrote: > > On Sun, 13 Oct 2024 14:28:05 -0400, Olivier Langlois wrote: >> the actual napi tracking strategy is inducing a non-negligeable overhead. >> Everytime a multishot poll is triggered or any poll armed, if the napi is >> enabled on the ring a lookup is performed to either add a new napi id into >> the napi_list or its timeout value is updated. >> >> For many scenarios, this is overkill as the napi id list will be pretty >> much static most of the time. To address this common scenario, the concept of io_uring_napi_tracking_strategy has been created. >> the tracking strategy can be specified when io_register_napi() is called. >> >> [...] > > Applied, thanks! > > [1/6] io_uring/napi: protect concurrent io_napi_entry timeout accesses > commit: d54db33e51090f68645fecb252a3ad22f28512cf > [2/6] io_uring/napi: fix io_napi_entry RCU accesses > commit: 613dbde4863699fe88e601ddd7315f04c1aa3239 > [3/6] io_uring/napi: improve __io_napi_add > commit: e17bd6f1106d8c45e186a52d3ac0412f17e657c3 > [4/6] io_uring/napi: Use lock guards > commit: 6710c043c8e9d8fa9649fffd8855e3ad883bf001 > [5/6] io_uring/napi: clean up __io_napi_do_busy_loop > commit: c596060fbe5a1c094d46d8f7191a866879fe6672 > [6/6] io_uring/napi: add static napi tracking strategy > commit: cc909543d239912669b14250e796bbd877f8128a Finally got around to this one, apologies for the delay. It looks really nice at this point. I'm assuming you have a liburing branch too, with the new register parts documented, and probably helpers for setting it up? Would be nice to have an addition to the napi test case as well, so this can get exercised as part of the usual testing.