Message ID | 20220316135321.142850-1-nsaenzju@redhat.com |
---|---|
Headers | show |
Series | util/thread-pool: Expose minimun and maximum size | expand |
On Wed, Mar 16, 2022 at 02:53:20PM +0100, Nicolas Saenz Julienne wrote: > 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/ > > --- > 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 | 34 +++++++- > util/aio-posix.c | 1 + > util/async.c | 20 +++++ > util/main-loop.c | 65 ++++++++++++++ > util/thread-pool.c | 55 +++++++++++- > 13 files changed, 414 insertions(+), 65 deletions(-) > create mode 100644 event-loop-base.c > create mode 100644 include/sysemu/event-loop-base.h > > -- > 2.35.1 > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>