From: Dario Faggioli <dario.faggioli@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
George Dunlap <george.dunlap@citrix.com>,
xen-devel@lists.xenproject.org
Cc: Anshul Makkar <anshul.makkar@citrix.com>,
Meng Xu <mengxu@cis.upenn.edu>, Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH 2/3] xen: Have schedulers revise initial placement
Date: Sat, 16 Jul 2016 16:12:03 +0200 [thread overview]
Message-ID: <1468678323.13039.132.camel@citrix.com> (raw)
In-Reply-To: <c8e0d4ae-1754-a918-5653-2cf73f62c65d@citrix.com>
[-- Attachment #1.1: Type: text/plain, Size: 3304 bytes --]
On Fri, 2016-07-15 at 19:07 +0100, Andrew Cooper wrote:
> On 15/07/16 19:02, George Dunlap wrote:
> >
> > diff --git a/xen/common/sched_credit2.c
> > b/xen/common/sched_credit2.c
> > index 3b9aa27..5a04985 100644
> > --- a/xen/common/sched_credit2.c
> > +++ b/xen/common/sched_credit2.c
> > @@ -1620,15 +1620,23 @@ csched2_vcpu_insert(const struct scheduler
> > *ops, struct vcpu *vc)
> >
> > BUG_ON(is_idle_vcpu(vc));
> >
> > + /* Locks in cpu_pick expect irqs to be disabled */
> > + local_irq_disable();
> This doesn't make the problem much worse, but is there a plan to fix
> this issue?
>
There's a little bit more than a plan.
I've got a proof of concept implementation which was working (now I
need to refresh it), but for which I never really managed to evaluate
the performance impact as accurately as I wanted to.
In fact, I actually have a couple of variants implemented, that I was
comparing against each others, in addition to against 'vanilla'. The
problem was that I really was not seeing any impact at all, which
looked strange (I was expecting improvement, at least on some
workloads), and I wanted to investigate further.
I'm leaving here the link to two branches, where I stashed some of the
code that I have come up so far. As I said, it's WIP and needs
refreshing and reworking.
> None of the scheduler-accounting functions should be disabling
> interrupts.
>
They don't. But you can't keep irq disabled for some operations and
enabled for others, on the same lock (because of the irq-safety
spinlock checks/enforcement).
So you have to always keep IRQ enabled, for all scheduling operations,
which is ok for _almost_ all of them, with the only exception of the
wakeup of a vcpu.
So, the idea was to treat that one case specially, i.e., put the waking
vcpus in a queue, and then drain the queue somehow. The insertion in
the queue needs to be done disabling interrupts, but the draining
--which is where the actual scheduling related hooks and operations are
done-- can be done with IRQs on, which is what we want.
What I was experimenting on was trying different ways of managing such
a queue, e.g., only one queue for all CPUs or per-CPU queues; or
whether to always drain the queue or only pick a couple of vcpu and
defer the rest again; or whether to allow concurrent draining of the
queue, or only have one CPU (at a time) doing that; etc etc.
The "1 queue for all" and "per-CPU queues" is what's in the following
two branches:
git://xenbits.xen.org/people/dariof/xen.git wip/sched/irq-enabled
http://xenbits.xen.org/gitweb/?p=people/dariof/xen.git;a=shortlog;h=refs/heads/wip/sched/irq-enabled
git://xenbits.xen.org/people/dariof/xen.git wip/sched/irq-enabled-percpu
http://xenbits.xen.org/gitweb/?p=people/dariof/xen.git;a=shortlog;h=refs/heads/wip/sched/irq-enabled-percpu
I'll get back to this soon. In the meanwhile, feel free to comment,
toss ideas, criticize, whatever. :-D
Regards,
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 127 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-07-16 14:12 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-15 18:02 [PATCH 1/3] xen: Some code motion to avoid having to do forward-declaration George Dunlap
2016-07-15 18:02 ` [PATCH 2/3] xen: Have schedulers revise initial placement George Dunlap
2016-07-15 18:07 ` Andrew Cooper
2016-07-16 14:12 ` Dario Faggioli [this message]
2016-07-18 18:10 ` Andrew Cooper
2016-07-18 18:55 ` Dario Faggioli
2016-07-18 21:36 ` Andrew Cooper
2016-07-19 7:14 ` Dario Faggioli
2016-07-18 10:28 ` Dario Faggioli
2016-07-25 11:17 ` George Dunlap
2016-07-25 14:36 ` Meng Xu
2016-07-26 9:17 ` Dario Faggioli
2016-07-25 14:35 ` Meng Xu
2016-08-01 10:40 ` Jan Beulich
2016-08-01 12:32 ` Dario Faggioli
2016-08-05 13:24 ` Jan Beulich
2016-08-05 14:09 ` Dario Faggioli
2016-08-05 14:44 ` Jan Beulich
2016-08-11 14:59 ` Dario Faggioli
2016-08-11 15:51 ` Andrew Cooper
2016-08-11 23:35 ` Dario Faggioli
2016-08-12 1:59 ` dependences for backporting to 4.6 [was: Re: [PATCH 2/3] xen: Have schedulers revise initial placement] Dario Faggioli
2016-08-12 13:53 ` Jan Beulich
2016-08-16 10:21 ` Dario Faggioli
2016-08-16 11:21 ` Jan Beulich
2016-08-12 8:58 ` dependences for backporting to 4.5 " Dario Faggioli
2016-07-15 18:02 ` [PATCH 3/3] xen: Remove buggy initial placement algorithm George Dunlap
2016-07-15 18:10 ` Andrew Cooper
2016-07-16 13:55 ` Dario Faggioli
2016-07-18 10:03 ` George Dunlap
2016-07-16 15:48 ` [PATCH 1/3] xen: Some code motion to avoid having to do forward-declaration Meng Xu
2016-07-18 9:58 ` Dario Faggioli
2016-07-18 10:06 ` George Dunlap
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=1468678323.13039.132.camel@citrix.com \
--to=dario.faggioli@citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=anshul.makkar@citrix.com \
--cc=george.dunlap@citrix.com \
--cc=jbeulich@suse.com \
--cc=mengxu@cis.upenn.edu \
--cc=xen-devel@lists.xenproject.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 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.