[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [RFC PATCH v1 00/16] xen: sched: implement core-scheduling

On Thu, Oct 18, 2018 at 2:16 AM Dario Faggioli <dfaggioli@xxxxxxxx> wrote:
> On Wed, 2018-10-17 at 15:36 -0600, Tamas K Lengyel wrote:
> > On Fri, Aug 24, 2018 at 5:36 PM Dario Faggioli <dfaggioli@xxxxxxxx>
> > wrote:
> > >
> > > They give me a system that boots, where I can do basic stuff (like
> > > playing with dom0, creating guests, etc), and where the constraint
> > > of
> > > only scheduling vcpus from one domain at a time on pcpus that are
> > > part
> > > of the same core is, as far as I've seen, respected.
> > >
> > > There are still cases where the behavior is unideal, e.g., we could
> > > make a better use of some of the cores which are, some of the
> > > times,
> > > left idle.
> > >
> > > There are git branches here:
> > >  https://gitlab.com/dfaggioli/xen.git rel/sched/core-scheduling-
> > > RFCv1
> > >  https://github.com/fdario/xen.git rel/sched/core-scheduling-RFCv1
> > >
> > > Any comment is more than welcome.
> >
> > Hi Dario,
> >
> Hi,
> > thanks for the series, we are in the process of evaluating it in
> > terms
> > of performance. Our test is to setup 2 VMs each being assigned enough
> > vCPUs to completely saturate all hyperthreads and then we fire up CPU
> > benchmarking inside the VMs to spin each vCPU 100% (using swet). The
> > idea is to force the scheduler to move vCPUs in-and-out constantly to
> > see how much performance hit there would be with core-scheduling vs
> > plain credit1 vs disabling hyperthreading. After running the test on
> > a
> > handful of machines it looks like we get the best performance with
> > hyperthreading completely disabled, which is a bit unexpected. Have
> > you or anyone else encountered this?
> >
> Do you mean that no-hyperthreading is better than core-scheduling, as
> per this series goes?
> Or do you mean that no-hyperthreading is better than plain Credit1,
> with SMT enabled and *without* this series?
> If the former, well, this series is not at a stage where it makes sense
> to run performance benchmarks. Not even close, I would say.

Understood, just wanted to get a rough idea of how much it effects it
in the worst case. We haven't got to actually run the tests on
core-scheduling yet. On my laptop Xen crashed when I tried to create a
VM after booting with sched_smt_cosched=1. On my desktop which has
serial access creating VMs works but when I fired up swet in both VMs
the whole system froze - no crash or anything reported on the serial.
I suspect a deadlock because everything froze
display/keyboard/serial/ping. But no crash and reboot.

> If the latter, it's a bit weird, as I've often seen hyperthreading
> causing seemingly weird performance figures, but it does not happen
> very often that it actually slows down things (although, I wouldn't
> rule it out! :-P).

Well, we ran it on at least 4 machines thus far (laptops, NUC,
desktops) and it is consistently better, and quite significantly. I
can post our detailed results if interested.

> Of course, this could also be a problem in the scheduler. Something I'd
> do is (leaving this series aside):
> - try to run the benchmark with half the number of vCPUs wrt the total
> number of CPUs (i.e., with only 1 vCPU per core);
> - try to run the benchmark as above, but explicitly pinning 1 vCPU on
> each core;
> - go back to nr vCPUs == nr pCPUs, but explicitly pin each vCPU to one
> pCPU (i.e., to one thread, in this case).
> You can do all the above with Credit, and results should already tell
> us whether we may be dealing with some scheduling anomaly. If you want,
> since you don't seem to have oversubscription, you can also try the
> null scheduler, to have even more data points (in fact, one of the
> purposes of having it was exactly this, i.e., making it possible to
> have a reference for other schedulers to compare against).

We do oversubscribe. Say we have 4 pCPUs, 8 cores showing with
hyperthread enabled. We run 2 VMs each with 8 vCPUs (16 total) and in
each VM we create 8 swet processes each spinning at 100% at the same
time. The idea is to create a scenario that's the "worst case", so
that we can pinpoint the effect of the scheduler changes. With pinning
or fewer vCPUs then hyperthreads I believe it would be harder to spot
the effect of the scheduler changes.

> BTW, when you say "2 VMs with enough vCPUs to saturate all
> hyperthreads", does that include dom0 vCPUs?

No, dom0 vCPUs are on top of those but dom0 is largely idle for the
duration of the test.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.