* [PATCH 0/2] small optimisations
@ 2021-09-01 23:38 Pavel Begunkov
2021-09-01 23:38 ` [PATCH 1/2] io_uring: don't disable kiocb_done() CQE batching Pavel Begunkov
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Pavel Begunkov @ 2021-09-01 23:38 UTC (permalink / raw)
To: Jens Axboe, io-uring
I think it'd better to have at least the first patch in 5.15
Pavel Begunkov (2):
io_uring: don't disable kiocb_done() CQE batching
io_uring: prolong tctx_task_work() with flushing
fs/io_uring.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--
2.33.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] io_uring: don't disable kiocb_done() CQE batching
2021-09-01 23:38 [PATCH 0/2] small optimisations Pavel Begunkov
@ 2021-09-01 23:38 ` Pavel Begunkov
2021-09-01 23:38 ` [PATCH 2/2] io_uring: prolong tctx_task_work() with flushing Pavel Begunkov
2021-09-02 2:41 ` [PATCH 0/2] small optimisations Jens Axboe
2 siblings, 0 replies; 4+ messages in thread
From: Pavel Begunkov @ 2021-09-01 23:38 UTC (permalink / raw)
To: Jens Axboe, io-uring
Not passing issue_flags from kiocb_done() into __io_complete_rw() means
that completion batching for this case is disabled, e.g. for most of
buffered reads.
Signed-off-by: Pavel Begunkov <[email protected]>
---
fs/io_uring.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/io_uring.c b/fs/io_uring.c
index ef0c7ecc03a0..14b074575eb6 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -2656,7 +2656,7 @@ static void __io_complete_rw(struct io_kiocb *req, long res, long res2,
{
if (__io_complete_rw_common(req, res))
return;
- __io_req_complete(req, 0, req->result, io_put_rw_kbuf(req));
+ __io_req_complete(req, issue_flags, req->result, io_put_rw_kbuf(req));
}
static void io_complete_rw(struct kiocb *kiocb, long res, long res2)
--
2.33.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] io_uring: prolong tctx_task_work() with flushing
2021-09-01 23:38 [PATCH 0/2] small optimisations Pavel Begunkov
2021-09-01 23:38 ` [PATCH 1/2] io_uring: don't disable kiocb_done() CQE batching Pavel Begunkov
@ 2021-09-01 23:38 ` Pavel Begunkov
2021-09-02 2:41 ` [PATCH 0/2] small optimisations Jens Axboe
2 siblings, 0 replies; 4+ messages in thread
From: Pavel Begunkov @ 2021-09-01 23:38 UTC (permalink / raw)
To: Jens Axboe, io-uring
io_submit_flush_completions() may enqueue linked requests for task_work
execution, so don't leave tctx_task_work() right after the tw list is
exhausted, but try to flush and then retry.
Signed-off-by: Pavel Begunkov <[email protected]>
---
fs/io_uring.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/io_uring.c b/fs/io_uring.c
index 14b074575eb6..2bde732a1183 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -2102,6 +2102,9 @@ static void tctx_task_work(struct callback_head *cb)
while (1) {
struct io_wq_work_node *node;
+ if (!tctx->task_list.first && locked && ctx->submit_state.compl_nr)
+ io_submit_flush_completions(ctx);
+
spin_lock_irq(&tctx->task_lock);
node = tctx->task_list.first;
INIT_WQ_LIST(&tctx->task_list);
--
2.33.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] small optimisations
2021-09-01 23:38 [PATCH 0/2] small optimisations Pavel Begunkov
2021-09-01 23:38 ` [PATCH 1/2] io_uring: don't disable kiocb_done() CQE batching Pavel Begunkov
2021-09-01 23:38 ` [PATCH 2/2] io_uring: prolong tctx_task_work() with flushing Pavel Begunkov
@ 2021-09-02 2:41 ` Jens Axboe
2 siblings, 0 replies; 4+ messages in thread
From: Jens Axboe @ 2021-09-02 2:41 UTC (permalink / raw)
To: Pavel Begunkov, io-uring
On 9/1/21 5:38 PM, Pavel Begunkov wrote:
> I think it'd better to have at least the first patch in 5.15
Let's just shove both in, they are minor enough.
--
Jens Axboe
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-09-02 2:41 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-09-01 23:38 [PATCH 0/2] small optimisations Pavel Begunkov
2021-09-01 23:38 ` [PATCH 1/2] io_uring: don't disable kiocb_done() CQE batching Pavel Begunkov
2021-09-01 23:38 ` [PATCH 2/2] io_uring: prolong tctx_task_work() with flushing Pavel Begunkov
2021-09-02 2:41 ` [PATCH 0/2] small optimisations Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox