All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/4] util/thread-pool: Expose minimun and maximum size
@ 2022-04-01  9:35 Nicolas Saenz Julienne
  2022-04-01  9:35 ` [PATCH v4 1/3] Introduce event-loop-base abstract class Nicolas Saenz Julienne
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Nicolas Saenz Julienne @ 2022-04-01  9:35 UTC (permalink / raw)
  To: kwolf, stefanha, berrange
  Cc: fam, eduardo, qemu-block, michael.roth, mtosatti, qemu-devel,
	armbru, hreitz, pbonzini, Nicolas Saenz Julienne, eblake

As discussed on the previous RFC[1] the thread-pool's dynamic thread
management doesn't play well with real-time and latency sensitive
systems. This series introduces a set of controls that'll permit
achieving more deterministic behaviours, for example by fixing the
pool's size.

We first introduce a new common interface to event loop configuration by
moving iothread's already available properties into an abstract class
called 'EventLooopBackend' and have both 'IOThread' and the newly
created 'MainLoop' inherit the properties from that class.

With this new configuration interface in place it's relatively simple to
introduce new options to fix the even loop's thread pool sizes. The
resulting QAPI looks like this:

    -object main-loop,id=main-loop,thread-pool-min=1,thread-pool-max=1

Note that all patches are bisect friendly and pass all the tests.

[1] https://patchwork.ozlabs.org/project/qemu-devel/patch/20220202175234.656711-1-nsaenzju@redhat.com/

@Stefan I kept your Signed-off-by, since the changes trivial/not
thread-pool related

---
Changes since v3:
 - Avoid duplication in qom.json by creating EventLoopBaseProperties.
 - Fix failures on first compilation due to race between
   event-loop-base.o and qapi header generation.

Changes since v2:
 - Get rid of wrong locking/waiting
 - Fix qapi versioning
 - Better commit messages

Changes since v1:
 - Address all Stefan's comments
 - Introduce new fix

Nicolas Saenz Julienne (3):
  Introduce event-loop-base abstract class
  util/main-loop: Introduce the main loop into QOM
  util/event-loop-base: Introduce options to set the thread pool size

 event-loop-base.c                | 140 +++++++++++++++++++++++++++++++
 include/block/aio.h              |  10 +++
 include/block/thread-pool.h      |   3 +
 include/qemu/main-loop.h         |  10 +++
 include/sysemu/event-loop-base.h |  41 +++++++++
 include/sysemu/iothread.h        |   6 +-
 iothread.c                       |  68 +++++----------
 meson.build                      |  26 +++---
 qapi/qom.json                    |  40 +++++++--
 util/aio-posix.c                 |   1 +
 util/async.c                     |  20 +++++
 util/main-loop.c                 |  65 ++++++++++++++
 util/thread-pool.c               |  55 +++++++++++-
 13 files changed, 416 insertions(+), 69 deletions(-)
 create mode 100644 event-loop-base.c
 create mode 100644 include/sysemu/event-loop-base.h

-- 
2.35.1



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

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

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-01  9:35 [PATCH v4 0/4] util/thread-pool: Expose minimun and maximum size Nicolas Saenz Julienne
2022-04-01  9:35 ` [PATCH v4 1/3] Introduce event-loop-base abstract class Nicolas Saenz Julienne
2022-04-01  9:35 ` [PATCH v4 2/3] util/main-loop: Introduce the main loop into QOM Nicolas Saenz Julienne
2022-04-22 11:13   ` Markus Armbruster
2022-04-22 11:40     ` Nicolas Saenz Julienne
2022-04-22 11:55       ` Nicolas Saenz Julienne
2022-04-01  9:35 ` [PATCH v4 3/3] util/event-loop-base: Introduce options to set the thread pool size Nicolas Saenz Julienne
2022-04-22 11:15   ` Markus Armbruster
2022-04-22 11:51     ` Nicolas Saenz Julienne
2022-04-22 12:45       ` Markus Armbruster
2022-04-04  8:42 ` [PATCH v4 0/4] util/thread-pool: Expose minimun and maximum size Nicolas Saenz Julienne
2022-04-04  9:29 ` Stefan Hajnoczi
2022-04-19 10:12   ` Nicolas Saenz Julienne

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.