diff mbox

[RFC,6/6] docs: Document QMP event rate limiting

Message ID 1443189647-11417-7-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster Sept. 25, 2015, 2 p.m. UTC
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 docs/qmp/qmp-events.txt | 12 ++++++++++++
 docs/qmp/qmp-spec.txt   |  5 +++++
 2 files changed, 17 insertions(+)

Comments

Eric Blake Sept. 25, 2015, 7:33 p.m. UTC | #1
On 09/25/2015 08:00 AM, Markus Armbruster wrote:
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  docs/qmp/qmp-events.txt | 12 ++++++++++++
>  docs/qmp/qmp-spec.txt   |  5 +++++
>  2 files changed, 17 insertions(+)

Obvious rebase implied if your other patch to s,docs/qmp/,docs/, goes
through.

> 
> diff --git a/docs/qmp/qmp-events.txt b/docs/qmp/qmp-events.txt
> index d92cc48..d2f1ce4 100644
> --- a/docs/qmp/qmp-events.txt
> +++ b/docs/qmp/qmp-events.txt
> @@ -28,6 +28,8 @@ Example:
>      "data": { "actual": 944766976 },
>      "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
>  
> +Note: this event is rate-limited.

Marc-Andre's series moves all the documentation into the .json files;
maybe we could make it easier by just listing rate-limiting in the .json
files for now, rather than having to churn through which file(s)
document things.

Do we want to document that VSERPORT_CHANGE rate limiting is per-"id"?

> +++ b/docs/qmp/qmp-spec.txt
> @@ -175,6 +175,11 @@ The format of asynchronous events is:
>  For a listing of supported asynchronous events, please, refer to the
>  qmp-events.txt file.
>  
> +Some events are rate-limited to at most one per second.  If more
> +events arrive within one second, all but the last one are dropped, and
> +the last one is delayed.  Rate-limiting applies to each kind of event
> +separately.

Do we also want to document that limits might be further tuned according
to other elements of the event, with VSERPORT_CHANGE "id" as the example?
Markus Armbruster Sept. 28, 2015, 8:38 a.m. UTC | #2
Eric Blake <eblake@redhat.com> writes:

> On 09/25/2015 08:00 AM, Markus Armbruster wrote:
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
>>  docs/qmp/qmp-events.txt | 12 ++++++++++++
>>  docs/qmp/qmp-spec.txt   |  5 +++++
>>  2 files changed, 17 insertions(+)
>
> Obvious rebase implied if your other patch to s,docs/qmp/,docs/, goes
> through.
>
>> 
>> diff --git a/docs/qmp/qmp-events.txt b/docs/qmp/qmp-events.txt
>> index d92cc48..d2f1ce4 100644
>> --- a/docs/qmp/qmp-events.txt
>> +++ b/docs/qmp/qmp-events.txt
>> @@ -28,6 +28,8 @@ Example:
>>      "data": { "actual": 944766976 },
>>      "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
>>  
>> +Note: this event is rate-limited.
>
> Marc-Andre's series moves all the documentation into the .json files;
> maybe we could make it easier by just listing rate-limiting in the .json
> files for now, rather than having to churn through which file(s)
> document things.

As long as qmp-events.txt exists, shouldn't we document rate-limiting
there?

> Do we want to document that VSERPORT_CHANGE rate limiting is per-"id"?

I did:

    @@ -632,6 +640,8 @@ Example:
         "data": { "id": "channel0", "open": true },
         "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }

    +Note: this event is rate-limited separately for each "id".
    +
     WAKEUP
     ------

>> +++ b/docs/qmp/qmp-spec.txt
>> @@ -175,6 +175,11 @@ The format of asynchronous events is:
>>  For a listing of supported asynchronous events, please, refer to the
>>  qmp-events.txt file.
>>  
>> +Some events are rate-limited to at most one per second.  If more
>> +events arrive within one second, all but the last one are dropped, and
>> +the last one is delayed.  Rate-limiting applies to each kind of event
>> +separately.
>
> Do we also want to document that limits might be further tuned according
> to other elements of the event, with VSERPORT_CHANGE "id" as the example?

You need to interpret "each kind of event" in a sufficiently fuzzy
manner :)

Seriously, I'm open to suggestions for better language here.
Eric Blake Sept. 28, 2015, 3:15 p.m. UTC | #3
On 09/28/2015 02:38 AM, Markus Armbruster wrote:

>>> +++ b/docs/qmp/qmp-spec.txt
>>> @@ -175,6 +175,11 @@ The format of asynchronous events is:
>>>  For a listing of supported asynchronous events, please, refer to the
>>>  qmp-events.txt file.
>>>  
>>> +Some events are rate-limited to at most one per second.  If more
>>> +events arrive within one second, all but the last one are dropped, and
>>> +the last one is delayed.  Rate-limiting applies to each kind of event
>>> +separately.
>>
>> Do we also want to document that limits might be further tuned according
>> to other elements of the event, with VSERPORT_CHANGE "id" as the example?
> 
> You need to interpret "each kind of event" in a sufficiently fuzzy
> manner :)
> 
> Seriously, I'm open to suggestions for better language here.

Maybe:

Some events are rate-limited to at most one per second. If more events
of the same type (along with any other fields that an event documents as
being significant) arrive within one second, ...

or:

Some events are rate-limited to at most one per second, either for the
event type in general, or additionally considering other significant
fields as documented by a specific event.  If more equivalent events
arrive within one second, ...

But since you did point out that VSERPORT_CHANGE mentions the filtering
on "id", I guess I won't try too much harder to paint the bikeshed any
further.
Markus Armbruster Sept. 29, 2015, 8:06 a.m. UTC | #4
Eric Blake <eblake@redhat.com> writes:

> On 09/28/2015 02:38 AM, Markus Armbruster wrote:
>
>>>> +++ b/docs/qmp/qmp-spec.txt
>>>> @@ -175,6 +175,11 @@ The format of asynchronous events is:
>>>>  For a listing of supported asynchronous events, please, refer to the
>>>>  qmp-events.txt file.
>>>>  
>>>> +Some events are rate-limited to at most one per second.  If more
>>>> +events arrive within one second, all but the last one are dropped, and
>>>> +the last one is delayed.  Rate-limiting applies to each kind of event
>>>> +separately.
>>>
>>> Do we also want to document that limits might be further tuned according
>>> to other elements of the event, with VSERPORT_CHANGE "id" as the example?
>> 
>> You need to interpret "each kind of event" in a sufficiently fuzzy
>> manner :)
>> 
>> Seriously, I'm open to suggestions for better language here.
>
> Maybe:
>
> Some events are rate-limited to at most one per second. If more events
> of the same type (along with any other fields that an event documents as
> being significant) arrive within one second, ...
>
> or:
>
> Some events are rate-limited to at most one per second, either for the
> event type in general, or additionally considering other significant
> fields as documented by a specific event.  If more equivalent events
> arrive within one second, ...
>
> But since you did point out that VSERPORT_CHANGE mentions the filtering
> on "id", I guess I won't try too much harder to paint the bikeshed any
> further.

I'll use this for inspiration when I prep the non-RFC patch.  Thanks!
diff mbox

Patch

diff --git a/docs/qmp/qmp-events.txt b/docs/qmp/qmp-events.txt
index d92cc48..d2f1ce4 100644
--- a/docs/qmp/qmp-events.txt
+++ b/docs/qmp/qmp-events.txt
@@ -28,6 +28,8 @@  Example:
     "data": { "actual": 944766976 },
     "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
 
+Note: this event is rate-limited.
+
 BLOCK_IMAGE_CORRUPTED
 ---------------------
 
@@ -296,6 +298,8 @@  Example:
      "data": { "reference": "usr1", "sector-num": 345435, "sectors-count": 5 },
      "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
 
+Note: this event is rate-limited.
+
 QUORUM_REPORT_BAD
 -----------------
 
@@ -318,6 +322,8 @@  Example:
      "data": { "node-name": "1.raw", "sector-num": 345435, "sectors-count": 5 },
      "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
 
+Note: this event is rate-limited.
+
 RESET
 -----
 
@@ -358,6 +364,8 @@  Example:
     "data": { "offset": 78 },
     "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
 
+Note: this event is rate-limited.
+
 SHUTDOWN
 --------
 
@@ -632,6 +640,8 @@  Example:
     "data": { "id": "channel0", "open": true },
     "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
 
+Note: this event is rate-limited separately for each "id".
+
 WAKEUP
 ------
 
@@ -662,3 +672,5 @@  Example:
 
 Note: If action is "reset", "shutdown", or "pause" the WATCHDOG event is
 followed respectively by the RESET, SHUTDOWN, or STOP events.
+
+Note: this event is rate-limited.
diff --git a/docs/qmp/qmp-spec.txt b/docs/qmp/qmp-spec.txt
index 4c28cd9..4cd6fdb 100644
--- a/docs/qmp/qmp-spec.txt
+++ b/docs/qmp/qmp-spec.txt
@@ -175,6 +175,11 @@  The format of asynchronous events is:
 For a listing of supported asynchronous events, please, refer to the
 qmp-events.txt file.
 
+Some events are rate-limited to at most one per second.  If more
+events arrive within one second, all but the last one are dropped, and
+the last one is delayed.  Rate-limiting applies to each kind of event
+separately.
+
 2.5 QGA Synchronization
 -----------------------