From: Steven Sistare <steven.sistare@oracle.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, John Snow <jsnow@redhat.com>,
Cleber Rosa <crosa@redhat.com>, Eric Blake <eblake@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Daniel P. Berrange" <berrange@redhat.com>,
Eduardo Habkost <eduardo@habkost.net>,
Fabiano Rosas <farosas@suse.de>,
Laurent Vivier <lvivier@redhat.com>,
devel@lists.libvirt.org
Subject: Re: [PATCH V1 0/6] fast qom tree get
Date: Wed, 9 Apr 2025 10:06:00 -0400 [thread overview]
Message-ID: <507cd943-5922-44b2-a0cb-1b85f0cfd074@oracle.com> (raw)
In-Reply-To: <87mscp8nlu.fsf@pond.sub.org>
On 4/9/2025 9:34 AM, Markus Armbruster wrote:
> Steven Sistare <steven.sistare@oracle.com> writes:
>> On 4/9/2025 3:39 AM, Markus Armbruster wrote:
>>> Hi Steve, I apologize for the slow response.
>>>
>>> Steve Sistare <steven.sistare@oracle.com> writes:
>>>
>>>> Using qom-list and qom-get to get all the nodes and property values in a
>>>> QOM tree can take multiple seconds because it requires 1000's of individual
>>>> QOM requests. Some managers fetch the entire tree or a large subset
>>>> of it when starting a new VM, and this cost is a substantial fraction of
>>>> start up time.
>>>
>>> "Some managers"... could you name one?
>>
>> My personal experience is with Oracle's OCI, but likely others could benefit.
>
> Peter Krempa tells us libvirt would benefit.
>
>>>> To reduce this cost, consider QAPI calls that fetch more information in
>>>> each call:
>>>> * qom-list-get: given a path, return a list of properties and values.
>>>> * qom-list-getv: given a list of paths, return a list of properties and
>>>> values for each path.
>>>> * qom-tree-get: given a path, return all descendant nodes rooted at that
>>>> path, with properties and values for each.
>>>
>>> Libvirt developers, would you be interested in any of these?
>>>
>>>> In all cases, a returned property is represented by ObjectPropertyValue,
>>>> with fields name, type, value, and error. If an error occurs when reading
>>>> a value, the value field is omitted, and the error message is returned in the
>>>> the error field. Thus an error for one property will not cause a bulk fetch
>>>> operation to fail.
>>>
>>> Returning errors this way is highly unusual. Observation; I'm not
>>> rejecting this out of hand. Can you elaborate a bit on why it's useful?
>>
>> It is considered an error to read some properties if they are not valid for
>> the configuration. And some properties are write-only and return an error
>> if they are read. Examples:
>>
>> legacy-i8042: <EXCEPTION: Property 'vmmouse.legacy-i8042' is not readable> (str)
>> legacy-memory: <EXCEPTION: Property 'qemu64-x86_64-cpu.legacy-memory' is not readable> (str)
>> crash-information: <EXCEPTION: No crash occurred> (GuestPanicInformation)
>>
>> With conventional error handling, if any of these poison pills falls in the
>> scope of a bulk get operation, the entire operation fails.
>
> I suspect many of these poison pills are design mistakes.
>
> If a property is not valid for the configuration, why does it exist?
> QOM is by design dynamic. I wish it wasn't, but as long as it is
> dynamic, I can't see why we should create properties we know to be
> unusable.
>
> Why is reading crash-information an error when no crash occured? This
> is the *normal* case. Errors are for the abnormal.
>
> Anyway, asking you to fix design mistakes all over the place wouldn't be
> fair. So I'm asking you something else instead: do you actually need
> the error information?
I don't need the specific error message.
I could return a boolean meaning "property not available" instead of returning
the exact error message, as long as folks are OK with the output of the qom-tree
script changing for these properties.
- Steve
next prev parent reply other threads:[~2025-04-09 14:06 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-03 21:09 [PATCH V1 0/6] fast qom tree get Steve Sistare
2025-03-03 21:09 ` [PATCH V1 1/6] qom: qom_resolve_path Steve Sistare
2025-05-06 14:25 ` Philippe Mathieu-Daudé
2025-03-03 21:09 ` [PATCH V1 2/6] qom: qom-tree-get Steve Sistare
2025-03-03 21:09 ` [PATCH V1 3/6] python: use qom-tree-get Steve Sistare
2025-03-03 21:10 ` [PATCH V1 4/6] tests/qtest/qom-test: unit test for qom-tree-get Steve Sistare
2025-03-03 21:10 ` [PATCH V1 5/6] qom: qom-list-getv Steve Sistare
2025-03-03 21:10 ` [PATCH V1 6/6] tests/qtest/qom-test: unit test for qom-list-getv Steve Sistare
2025-04-09 7:39 ` [PATCH V1 0/6] fast qom tree get Markus Armbruster
2025-04-09 7:58 ` Peter Krempa
2025-04-11 10:11 ` Daniel P. Berrangé
2025-04-11 10:40 ` Management applications and CPU feature flags (was: [PATCH V1 0/6] fast qom tree get) Markus Armbruster
2025-04-11 10:43 ` Daniel P. Berrangé
2025-04-11 11:43 ` Management applications and CPU feature flags Markus Armbruster
2025-04-11 12:00 ` David Hildenbrand
2025-04-11 13:23 ` Jiri Denemark
2025-04-11 13:58 ` Cornelia Huck
2025-04-15 11:33 ` Jiří Denemark
2025-04-09 12:42 ` [PATCH V1 0/6] fast qom tree get Steven Sistare
2025-04-09 13:34 ` Markus Armbruster
2025-04-09 14:06 ` Steven Sistare [this message]
2025-04-09 14:44 ` Markus Armbruster
2025-04-09 15:14 ` Steven Sistare
2025-04-10 5:57 ` Markus Armbruster
2025-04-28 8:04 ` Markus Armbruster
2025-04-28 16:18 ` Steven Sistare
2025-04-29 6:02 ` Markus Armbruster
2025-05-02 16:19 ` Steven Sistare
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=507cd943-5922-44b2-a0cb-1b85f0cfd074@oracle.com \
--to=steven.sistare@oracle.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=crosa@redhat.com \
--cc=devel@lists.libvirt.org \
--cc=eblake@redhat.com \
--cc=eduardo@habkost.net \
--cc=farosas@suse.de \
--cc=jsnow@redhat.com \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).