[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC v2 10/22] monitor: allow to use IO thread for pars
From: |
Peter Xu |
Subject: |
Re: [Qemu-devel] [RFC v2 10/22] monitor: allow to use IO thread for parsing |
Date: |
Mon, 16 Oct 2017 15:37:48 +0800 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Thu, Oct 12, 2017 at 01:35:08PM +0100, Stefan Hajnoczi wrote:
> On Fri, Sep 29, 2017 at 11:38:32AM +0800, Peter Xu wrote:
> > For each Monitor, add one field "use_io_thr" to show whether it will be
> > using the dedicated monitor IO thread to handle input/output. When set,
> > monitor IO parsing work will be offloaded to dedicated monitor IO
> > thread, rather than the original main loop thread.
>
> Why make use_io_thr optional? We'd have to maintain and test both code
> paths.
Because of MUXed typed chardevs. I will add the explanation into this
patch's commit message, and also into the codes where we used it (in a
follow-up patch).
>
> > @@ -4135,19 +4139,37 @@ void monitor_init(Chardev *chr, int flags)
> > monitor_read_command(mon, 0);
> > }
> >
> > + if (mon->use_io_thr) {
> > + /*
> > + * When use_io_thr is set, we use the global shared dedicated
> > + * IO thread for this monitor to handle input/output.
> > + */
> > + context = monitor_io_context_get();
> > + /* We should have inited globals before reaching here. */
> > + assert(context);
> > + } else {
> > + /* The default main loop, which is the main thread */
> > + context = NULL;
> > + }
> > +
> > + /*
> > + * Hang the monitor before running it (which is triggered by
>
> s/Hang/Add/
>
> "Hang" isn't used as a verb for adding items to collections. People
> would probably think about deadlocking the thread instead :-).
Thanks for explaining this! Fixed.
(I am always happy to improve my English, though in a slow way :-)
>
> > + * qemu_chr_fe_set_handlers). Otherwise one monitor may run while
> > + * find itself not on the mon_list.
> > + */
> > + qemu_mutex_lock(&monitor_lock);
> > + QTAILQ_INSERT_HEAD(&mon_list, mon, entry);
> > + qemu_mutex_unlock(&monitor_lock);
--
Peter Xu