All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: qemu-devel@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
	"Daniel P . Berrange" <berrange@redhat.com>,
	"Stefan Hajnoczi" <shajnocz@redhat.com>,
	"Fam Zheng" <famz@redhat.com>,
	"Juan Quintela" <quintela@redhat.com>,
	mdroth@linux.vnet.ibm.com, "Eric Blake" <eblake@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@gmail.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [Qemu-devel] [RFC v2 15/22] monitor: send event when request queue full
Date: Mon, 16 Oct 2017 16:11:58 +0800	[thread overview]
Message-ID: <20171016081158.GE4166@pxdev.xzpeter.org> (raw)
In-Reply-To: <20171012125620.GG5957@stefanha-x1.localdomain>

On Thu, Oct 12, 2017 at 01:56:20PM +0100, Stefan Hajnoczi wrote:
> On Fri, Sep 29, 2017 at 11:38:37AM +0800, Peter Xu wrote:
> > Set maximum QMP request queue length to 8.  If queue full, instead of
> > queue the command, we directly return a "request-dropped" event, telling
> > client that specific command is dropped.
> > 
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> >  monitor.c | 15 +++++++++++++++
> >  1 file changed, 15 insertions(+)
> > 
> > diff --git a/monitor.c b/monitor.c
> > index 1e9a6cb6a5..d9bed31248 100644
> > --- a/monitor.c
> > +++ b/monitor.c
> > @@ -3971,6 +3971,8 @@ static void monitor_qmp_bh_dispatcher(void *data)
> >      }
> >  }
> >  
> > +#define  QMP_ASYNC_QUEUE_LEN_MAX  (8)
> 
> Why 8?

I proposed this in previous discussion and no one objected, so I just
used it. It's here:

  https://lists.gnu.org/archive/html/qemu-devel/2017-09/msg03989.html
  (please don't go over the thread; I'll copy the related paragraphs)

"""
  ...
  Regarding to queue size: I am afraid max_size=1 may not suffice?
  Otherwise a simple batch of:

  {"execute": "query-status"} {"execute": "query-status"}

  Will trigger the failure.  But I definitely agree it should not be
  something very large.  The total memory will be this:

    json limit * queue length limit * monitor count limit
        (X)            (Y)                    (Z)

  Now we have (X) already (in form of a few tunables for JSON token
  counts, etc.), we don't have (Z), and we definitely need (Y).

  How about we add limits on Y=16 and Z=8?

  We can do some math if we want some more exact number though.
  ...
"""

Oops, I proposed "16", but I used "8"; I hope 8 is good enough, but I
am definitely not sure whether "1" is good.

> 
> My understanding is that this patch series is not about asynchronous QMP
> commands.  Instead it's about executing certain commands immediately in
> the parser thread.

Indeed, but IMHO the series does something further than that - we do
have async queues for QMP requests/responses now.  IMHO that's real
async, though totally different from the idea of "async QMP commands"
for sure.

> 
> Therefore, I suggest hardcoding length 1 for now and not calling it
> "async".  You may also be able to simplify the code since a queue isn't
> actually needed.

For the queue length: discussed above, I'm not sure whether queue=1 is
really what we want.  Again, I may be wrong.

For the naming: how about QMP_REQ_QUEUE_LEN_MAX?

Thanks,

-- 
Peter Xu

  reply	other threads:[~2017-10-16  8:12 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-29  3:38 [Qemu-devel] [RFC v2 00/22] QMP: out-of-band (OOB) execution support Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 01/22] char-io: fix possible race on IOWatchPoll Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 02/22] qobject: introduce qstring_get_try_str() Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 03/22] qobject: introduce qobject_get_try_str() Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 04/22] qobject: let object_property_get_str() use new API Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 05/22] monitor: move skip_flush into monitor_data_init Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 06/22] qjson: add "opaque" field to JSONMessageParser Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 07/22] monitor: move the cur_mon hack deeper for QMP Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 08/22] monitor: unify global init Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 09/22] monitor: create monitor dedicate iothread Peter Xu
2017-10-12 12:29   ` Stefan Hajnoczi
2017-10-16  7:16     ` Peter Xu
2017-10-18 15:32       ` Stefan Hajnoczi
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 10/22] monitor: allow to use IO thread for parsing Peter Xu
2017-10-12 12:35   ` Stefan Hajnoczi
2017-10-16  7:37     ` Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 11/22] monitor: introduce monitor_qmp_respond() Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 12/22] monitor: let mon_list be tail queue Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 13/22] monitor: separate QMP parser and dispatcher Peter Xu
2017-10-12 12:50   ` Stefan Hajnoczi
2017-10-16  7:50     ` Peter Xu
2017-10-18 15:31       ` Stefan Hajnoczi
2017-10-19  6:36         ` Peter Xu
2017-10-19 13:13           ` Stefan Hajnoczi
2017-10-20  9:19             ` Paolo Bonzini
2017-10-23  6:07               ` Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 14/22] qmp: add new event "request-dropped" Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 15/22] monitor: send event when request queue full Peter Xu
2017-10-12 12:56   ` Stefan Hajnoczi
2017-10-16  8:11     ` Peter Xu [this message]
2017-10-18 15:28       ` Stefan Hajnoczi
2017-10-19  7:16         ` Peter Xu
2017-10-19 13:11           ` Stefan Hajnoczi
2017-10-20  4:26             ` Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 16/22] monitor: enable IO thread for (qmp & !mux) typed Peter Xu
2017-10-12 12:57   ` Stefan Hajnoczi
2017-10-16  8:16     ` Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 17/22] qapi: introduce new cmd option "allow-oob" Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 18/22] qmp: support out-of-band (oob) execution Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 19/22] qmp: let migrate-incoming allow out-of-band Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 20/22] qmp: isolate responses into io thread Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 21/22] qmp: introduce QMPCapability Peter Xu
2017-09-29  3:38 ` [Qemu-devel] [RFC v2 22/22] docs: update QMP documents for OOB commands Peter Xu
2017-09-29  3:58 ` [Qemu-devel] [RFC v2 00/22] QMP: out-of-band (OOB) execution support no-reply
2017-09-29  4:14   ` Peter Xu
2017-09-29 19:03     ` Eric Blake
2017-09-30  0:28       ` Peter Xu
2017-09-29  4:20 ` no-reply

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=20171016081158.GE4166@pxdev.xzpeter.org \
    --to=peterx@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=famz@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=marcandre.lureau@gmail.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=shajnocz@redhat.com \
    --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.