From: Markus Armbruster <armbru@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Luiz Capitulino <lcapitulino@redhat.com>,
qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v4 6/6] trace: Add QAPI/QMP interfaces to query and control per-vCPU tracing state
Date: Mon, 20 Jun 2016 14:13:48 +0200 [thread overview]
Message-ID: <878ty06osj.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <8760t4uoey.fsf@fimbulvetr.bsc.es> ("Lluís Vilanova"'s message of "Mon, 20 Jun 2016 12:48:05 +0200")
Lluís Vilanova <vilanova@ac.upc.edu> writes:
> Markus Armbruster writes:
>
>> Lluís Vilanova <vilanova@ac.upc.edu> writes:
>>> Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
>>> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
>>> ---
>>> monitor.c | 4 +-
>>> qapi/trace.json | 20 ++++++--
>>> qmp-commands.hx | 17 ++++++-
>>> trace/qmp.c | 143 ++++++++++++++++++++++++++++++++++++++++++++-----------
>>> 4 files changed, 147 insertions(+), 37 deletions(-)
>>>
>>> diff --git a/monitor.c b/monitor.c
>>> index a27e115..bb89877 100644
>>> --- a/monitor.c
>>> +++ b/monitor.c
>>> @@ -910,7 +910,7 @@ static void hmp_trace_event(Monitor *mon, const QDict *qdict)
>>> bool new_state = qdict_get_bool(qdict, "option");
>>> Error *local_err = NULL;
>>>
>>> - qmp_trace_event_set_state(tp_name, new_state, true, true, &local_err);
>>> + qmp_trace_event_set_state(tp_name, new_state, true, true, false, 0, &local_err);
>>> if (local_err) {
>>> error_report_err(local_err);
>>> }
>>> @@ -1069,7 +1069,7 @@ static void hmp_info_cpustats(Monitor *mon, const QDict *qdict)
>>>
>>> static void hmp_info_trace_events(Monitor *mon, const QDict *qdict)
>>> {
>>> - TraceEventInfoList *events = qmp_trace_event_get_state("*", NULL);
>>> + TraceEventInfoList *events = qmp_trace_event_get_state("*", false, 0, NULL);
>>> TraceEventInfoList *elem;
>>>
>>> for (elem = events; elem != NULL; elem = elem->next) {
>
>> The new feature remains inaccessible in HMP. Any plans to extend HMP?
>> Any reasons not to?
>
> My bad, I forgot about it. I'll see to adding it.
>
>
>>> diff --git a/qapi/trace.json b/qapi/trace.json
>>> index 01b0a52..25d8095 100644
>>> --- a/qapi/trace.json
>>> +++ b/qapi/trace.json
>>> @@ -1,6 +1,6 @@
>>> # -*- mode: python -*-
>>> #
>>> -# Copyright (C) 2011-2014 Lluís Vilanova <vilanova@ac.upc.edu>
>>> +# Copyright (C) 2011-2016 Lluís Vilanova <vilanova@ac.upc.edu>
>>> #
>>> # This work is licensed under the terms of the GNU GPL, version 2 or later.
>>> # See the COPYING file in the top-level directory.
>>> @@ -29,11 +29,12 @@
>>> #
>>> # @name: Event name.
>>> # @state: Tracing state.
>>> +# @vcpu: Whether this is a per-vCPU event (since 2.7).
>>> #
>>> # Since 2.2
>>> ##
>>> { 'struct': 'TraceEventInfo',
>>> - 'data': {'name': 'str', 'state': 'TraceEventState'} }
>>> + 'data': {'name': 'str', 'state': 'TraceEventState', 'vcpu': 'bool'} }
>>>
>>> ##
>>> # @trace-event-get-state:
>>> @@ -41,13 +42,18 @@
>>> # Query the state of events.
>>> #
>>> # @name: Event name pattern (case-sensitive glob).
>>> +# @vcpu: #optional The vCPU to check (any by default; since 2.7).
>>> #
>>> # Returns: a list of @TraceEventInfo for the matching events
>>> #
>>> +# For any event without the "vcpu" property:
>
>> All events have the vcpu property, but for some of them the property's
>> value is false.
>
> Hmmm, do you mean in the generated event array? Here, I was referring to wether
> an event has the "vcpu" property in "trace-events". I can clarify that.
What is "trace-events"? The file in the source tree?
>>> +# - If @name is a pattern and @vcpu is set, events are ignored.
>
>> I figure "ignored" means they're not included in the return value.
>> Correct?
>
> Exactly.
>
>
>>> +# - If @name is not a pattern and @vcpu is set, an error is raised.
>
>> Perhaps we could clarify as follows:
>
>> # Returns: a list of @TraceEventInfo for the matching events
>> #
>> # An event matches if
>> # - its name matches the @name pattern, and
>> # - if @vcpu is given, its vCPU equals @vcpu.
>> # It follows that with @vcpu given, the query can match only per-vCPU
>> # events. Special case: if the name is an exact match, you get an error
>> # instead of an empty list.
>
> Doesn't sound entirely right to me:
>
> # Returns: a list of @TraceEventInfo for the matching events
> #
> # An event matches if
> # - its name matches the @name pattern, and
> # - if @vcpu is given, the event is a per-vCPU one (has the "vcpu" property in
> # "trace-events").
Fails to mention that @vcpu selects the TraceEventInfo for that
particular VCPU. That's what I tried to express by "its vCPU equals
@vcpu".
> #
> # Therefore, if @vcpu is given, the query will only match per-vCPU events.
> # Special case: if @name is an exact match and @vcpu is given, you will get an
> # error if the event does not have the "vcpu" property.
>
>
>>> +#
>>> # Since 2.2
>>> ##
>>> { 'command': 'trace-event-get-state',
>>> - 'data': {'name': 'str'},
>>> + 'data': {'name': 'str', '*vcpu': 'int'},
>>> 'returns': ['TraceEventInfo'] }
>>>
>>> ##
>>> @@ -58,8 +64,14 @@
>>> # @name: Event name pattern (case-sensitive glob).
>>> # @enable: Whether to enable tracing.
>>> # @ignore-unavailable: #optional Do not match unavailable events with @name.
>>> +# @vcpu: #optional The vCPU to act upon (all by default; since 2.7).
>>> +#
>>> +# For any event without the "vcpu" property:
>>> +# - If @name is a pattern and @vcpu is set, events are ignored.
>>> +# - If @name is not a pattern and @vcpu is set, an error is raised.
>
>> Likewise.
>
> Ok.
>
>
>>> #
>>> # Since 2.2
>>> ##
>>> { 'command': 'trace-event-set-state',
>>> - 'data': {'name': 'str', 'enable': 'bool', '*ignore-unavailable': 'bool'} }
>>> + 'data': {'name': 'str', 'enable': 'bool', '*ignore-unavailable': 'bool',
>>> + '*vcpu': 'int'} }
>>> diff --git a/qmp-commands.hx b/qmp-commands.hx
>>> index 28801a2..c9eb25c 100644
>>> --- a/qmp-commands.hx
>>> +++ b/qmp-commands.hx
>>> @@ -4676,7 +4676,7 @@ EQMP
>>>
>>> {
>>> .name = "trace-event-get-state",
>>> - .args_type = "name:s",
>>> + .args_type = "name:s,vcpu:i?",
>>> .mhandler.cmd_new = qmp_marshal_trace_event_get_state,
>>> },
>>>
>>> @@ -4686,6 +4686,11 @@ trace-event-get-state
>>>
>>> Query the state of events.
>>>
>>> +Arguments:
>>> +
>>> +- "name": Event name pattern (json-string).
>>> +- "vcpu": Specific vCPU to query, any vCPU by default (json-int, optional).
>>> +
>
>> Less information than you give in the schema. Easy enough to fix.
>
> I guess you mean extending the docs here to cover the same info given in the
> JSON file.
Yes.
I hope we can get rid of the duplication some day. Marc-André has
patches.
[...]
next prev parent reply other threads:[~2016-06-20 12:13 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-14 13:10 [Qemu-devel] [PATCH v4 0/6] trace: Per-vCPU tracing states Lluís Vilanova
2016-06-14 13:10 ` [Qemu-devel] [PATCH v4 1/6] trace: Identify events with the 'vcpu' property Lluís Vilanova
2016-06-14 13:11 ` [Qemu-devel] [PATCH v4 2/6] disas: Remove unused macro '_' Lluís Vilanova
2016-06-14 13:11 ` Lluís Vilanova
2016-06-17 15:25 ` [Qemu-arm] " Stefan Hajnoczi
2016-06-17 15:25 ` [Qemu-devel] " Stefan Hajnoczi
2016-06-14 13:11 ` [Qemu-devel] [PATCH v4 3/6] [trivial] trace: Cosmetic changes on fast-path tracing Lluís Vilanova
2016-06-14 13:11 ` [Qemu-devel] [PATCH v4 4/6] trace: Add per-vCPU tracing states for events with the 'vcpu' property Lluís Vilanova
2016-06-17 15:24 ` Stefan Hajnoczi
2016-06-17 20:16 ` Lluís Vilanova
2016-06-20 12:05 ` Stefan Hajnoczi
2016-06-20 12:40 ` Lluís Vilanova
2016-06-21 9:21 ` Stefan Hajnoczi
2016-06-14 13:11 ` [Qemu-devel] [PATCH v4 5/6] trace: Conditionally trace events based on their per-vCPU state Lluís Vilanova
2016-06-14 13:11 ` [Qemu-devel] [PATCH v4 6/6] trace: Add QAPI/QMP interfaces to query and control per-vCPU tracing state Lluís Vilanova
2016-06-20 7:23 ` Markus Armbruster
2016-06-20 10:48 ` Lluís Vilanova
2016-06-20 12:13 ` Markus Armbruster [this message]
2016-06-20 12:44 ` Lluís Vilanova
2016-06-20 10:53 ` Lluís Vilanova
2016-06-20 12:17 ` Markus Armbruster
2016-06-20 12:37 ` Lluís Vilanova
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=878ty06osj.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=ehabkost@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/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 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.