Zhang Chen <[email protected]> writes:
> Extend the 'IOThreadInfo' structure to include attachment metrics.
> This allows users to monitor the associated devices by identify them
> by their QOM paths.
>
> New fields added to IOThreadInfo:
> - @holders: A string containing of QOM paths for the attached devices.
>
> These fields are also exposed via the Human Monitor Interface (HMP)
> command 'info iothreads' to assist with manual debugging and
> performance tuning.
>
> Signed-off-by: Zhang Chen <[email protected]>
[...]
> diff --git a/qapi/misc.json b/qapi/misc.json
> index 1f5062df2a..a381074c04 100644
> --- a/qapi/misc.json
> +++ b/qapi/misc.json
> @@ -76,6 +76,15 @@
> #
> # @thread-id: ID of the underlying host thread
> #
> +# @holders: The parameter is an array of QOM paths indicating how many
> +# active devices are currently associated with this iothread
> +# (e.g. virtio-blk). In hotplug scenarios, users can
> +# pre-allocate multiple iothread objects to serve as a persistent
> +# thread pool. When a device is hot-unplugged, the corresponding
> +# IOThread is released but remains available, allowing subsequent
> +# hot-plugged devices to attach to and reuse the existing thread.
> +# Returns empty if no devices are attached. (since 11.0)
Let me try to polish this a bit:
# @holders: QOM paths of the devices currently associated with this
# iothread. Users can pre-allocate multiple iothread objects to
# serve as a persistent thread pool. When a device is
# hot-unplugged, it is detached from its iothread, but the
# iothread remains available, allowing future hot-plugged devices
# to attach to it.
> +#
> # @poll-max-ns: maximum polling time in ns, 0 means polling is
> # disabled (since 2.9)
> #
> @@ -93,6 +102,7 @@
> { 'struct': 'IOThreadInfo',
> 'data': {'id': 'str',
> 'thread-id': 'int',
> + 'holders': ['str'],
> 'poll-max-ns': 'int',
> 'poll-grow': 'int',
> 'poll-shrink': 'int',
> @@ -118,6 +128,8 @@
> # {
> # "id":"iothread0",
> # "thread-id":3134,
> +# "holders":["/machine/peripheral/blk1/virtio-backend",
> +# "/machine/peripheral/blk0/virtio-backend"],
> # "poll-max-ns":32768,
> # "poll-grow":0,
> # "poll-shrink":0,
> @@ -126,6 +138,7 @@
> # {
> # "id":"iothread1",
> # "thread-id":3135,
> +# "holders":["/machine/peripheral/blk2/virtio-backend"],
> # "poll-max-ns":32768,
> # "poll-grow":0,
> # "poll-shrink":0,
With a bit of doc polish:
Acked-by: Markus Armbruster <[email protected]>