On Wed, 22 Jun 2022 06:40:20 -0700, Dylan Yudaken wrote: > Task work currently uses a spin lock to guard task_list and > task_running. Some use cases such as networking can trigger task_work_add > from multiple threads all at once, which suffers from contention here. > > This can be changed to use a lockless list which seems to have better > performance. Running the micro benchmark in [1] I see 20% improvment in > multithreaded task work add. It required removing the priority tw list > optimisation, however it isn't clear how important that optimisation is. > Additionally it has fairly easy to break semantics. > > [...] Applied, thanks! [1/8] io_uring: remove priority tw list optimisation commit: bb35381ea1b3980704809f1c13d7831989a9bc97 [2/8] io_uring: remove __io_req_task_work_add commit: fbfa4521091037bdfe499501d4c7ed175592ccd4 [3/8] io_uring: lockless task list commit: f032372c18b0730f551b8fa0a354ce2e84cfcbb7 [4/8] io_uring: introduce llist helpers commit: c0808632a83a7c607a987154372e705353acf4f2 [5/8] io_uring: batch task_work commit: 7afb384a25b0ed597defad431dcc83b5f509c98e [6/8] io_uring: move io_uring_get_opcode out of TP_printk commit: 1da6baa4e4c290cebafec3341dbf3cbca21081b7 [7/8] io_uring: add trace event for running task work commit: d34b8ba25f0c3503f8766bd595c6d28e01cbbd54 [8/8] io_uring: trace task_work_run commit: e57a6f13bec58afe717894ce7fb7e6061c3fc2f4 Best regards, -- Jens Axboe