public inbox for [email protected]
 help / color / mirror / Atom feed
* [PATCHSET 0/2] Reduce poll based overhead
@ 2022-03-16 23:03 Jens Axboe
  2022-03-16 23:03 ` [PATCH 1/2] io_uring: cache req->apoll->events in req->cflags Jens Axboe
  2022-03-16 23:03 ` [PATCH 2/2] io_uring: cache poll/double-poll state with a request flag Jens Axboe
  0 siblings, 2 replies; 3+ messages in thread
From: Jens Axboe @ 2022-03-16 23:03 UTC (permalink / raw)
  To: io-uring

Hi,

Networked workloads are intensive on the poll arming side, as most
receive operations will be triggered async by poll. For that kind
of poll triggering, we have allocated req->apoll dynamically and
that serves as our poll entry. This means that the poll->events
and poll->head are not part of the io_kiocb cachelines, and hence
often not hot in the completion path. When profiling workloads,
io_poll_check_events() shows up as hotter than it should be, exactly
because we have to pull in this cacheline separately.

Cache state in the io_kiocb itself instead, which avoids pulling
in unnecessary data in the poll task_work path. This reduces overhead
by about 3-4%.

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-03-16 23:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-16 23:03 [PATCHSET 0/2] Reduce poll based overhead Jens Axboe
2022-03-16 23:03 ` [PATCH 1/2] io_uring: cache req->apoll->events in req->cflags Jens Axboe
2022-03-16 23:03 ` [PATCH 2/2] io_uring: cache poll/double-poll state with a request flag Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox