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

Re: [Xen-devel] [PATCH] All domains (including dom0) should be best effort upon creation.



On Fri, Dec 16, 2011 at 4:29 PM, Dario Faggioli
<dario.faggioli@xxxxxxxxxx> wrote:
> All domains (including dom0) should be best effort upon creation.
>
> In the sedf scheduler, while trying to guarantee to dom0 the proper
> amount of CPU time for being able to do its job, we end up allocating
> 75% CPU-share to each and every of its VCPUs. This, combined with the
> fact that such a scheduler has no load balancing logic at all (and
> thus *all* dom0's VCPUs just rise and stay on physical CPU #0), means
> that for example on a 12-cores system we're trying to exploit
> 75x12=900% of what we have on a PCPU, which is definitely too much!
>
> Moreover, even if a cleverer mechanism for distributing VCPUs among
> the available PCPUs (if not a proper load balancer) will be put in
> place some day, it will still be difficult to decide how much guaranteed
> CPU bandwidth each of the dom0's VCPUs should be provided with, without
> posing the system at risk of livelock or starvation, even during
> boot time.
>
> Therefore, since sedf is capable of some form of best-effort
> scheduling, the best thing we can do is ask for this behaviour for
> dom0, as it is for all other domains, right upon creation. It will
> then be the sysadmin's job to modify dom0's scheduling parameters
> to better fit his particular needs, maybe after spreading the load
> a bit by pinning VCPUs on PCPUs, or using cpupools, etc.
>
> Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>

Looks reasonable to me.

Acked-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx>


>
>
> diff -r 01c8b27e3d7d xen/common/sched_sedf.c
> --- a/xen/common/sched_sedf.c   Thu Dec 15 16:56:21 2011 +0000
> +++ b/xen/common/sched_sedf.c   Fri Dec 16 16:05:37 2011 +0100
> @@ -359,19 +359,9 @@ static void *sedf_alloc_vdata(const stru
>     inf->latency     = 0;
>     inf->status      = EXTRA_AWARE | SEDF_ASLEEP;
>     inf->extraweight = 1;
> -
> -    if ( v->domain->domain_id == 0 )
> -    {
> -        /* Domain0 gets 75% guaranteed (15ms every 20ms). */
> -        inf->period    = MILLISECS(20);
> -        inf->slice     = MILLISECS(15);
> -    }
> -    else
> -    {
> -        /* Best-effort extratime only. */
> -        inf->period    = WEIGHT_PERIOD;
> -        inf->slice     = 0;
> -    }
> +    /* Upon creation all domain are best-effort. */
> +    inf->period      = WEIGHT_PERIOD;
> +    inf->slice       = 0;
>
>     inf->period_orig = inf->period; inf->slice_orig = inf->slice;
>     INIT_LIST_HEAD(&(inf->list));
>
> --
> <<This happens because I choose it to happen!>> (Raistlin Majere)
> -------------------------------------------------------------------
> Dario Faggioli, http://retis.sssup.it/people/faggioli
> Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
> PhD Candidate, ReTiS Lab, Scuola Superiore Sant'Anna, Pisa (Italy)
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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