[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.0-testing] [SEDF] Fix SEDF defaults to make domain0 take only a fair
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID fb7f7f3e2909b799dca1f5c839c2c0e75d19b455 # Parent 265866baa61fe0b613f35ed6fbddf05fad8a8f6a [SEDF] Fix SEDF defaults to make domain0 take only a fair equally-weighted share of extratime. Also, hack the short- blocking logic as otherwise domain0 steals all CPU time for several seconds after waking from a long sleep. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> xen-unstable changeset: 10438:ef8cdd1dc8360e310423a599ff1da76fb111bc96 xen-unstable date: Sat Jun 17 11:29:35 2006 +0100 --- xen/common/sched_sedf.c | 31 ++++++++++++++++++++----------- 1 files changed, 20 insertions(+), 11 deletions(-) diff -r 265866baa61f -r fb7f7f3e2909 xen/common/sched_sedf.c --- a/xen/common/sched_sedf.c Mon Jun 19 15:12:13 2006 +0100 +++ b/xen/common/sched_sedf.c Mon Jun 19 15:20:08 2006 +0100 @@ -374,25 +374,24 @@ static void sedf_add_task(struct vcpu *d INIT_LIST_HEAD(EXTRAQ(d->processor,EXTRA_PEN_Q)); INIT_LIST_HEAD(EXTRAQ(d->processor,EXTRA_UTIL_Q)); } - + + /* Every VCPU gets an equal share of extratime by default. */ + inf->deadl_abs = 0; + inf->latency = 0; + inf->status = EXTRA_AWARE | SEDF_ASLEEP; + inf->extraweight = 1; + if ( d->domain->domain_id == 0 ) { - /*set dom0 to something useful to boot the machine*/ + /* Domain0 gets 75% guaranteed (15ms every 20ms). */ inf->period = MILLISECS(20); inf->slice = MILLISECS(15); - inf->latency = 0; - inf->deadl_abs = 0; - inf->status = EXTRA_AWARE | SEDF_ASLEEP; } else { - /*other domains run in best effort mode*/ + /* Best-effort extratime only. */ inf->period = WEIGHT_PERIOD; inf->slice = 0; - inf->deadl_abs = 0; - inf->latency = 0; - inf->status = EXTRA_AWARE | SEDF_ASLEEP; - inf->extraweight = 1; } inf->period_orig = inf->period; inf->slice_orig = inf->slice; @@ -640,7 +639,17 @@ static void desched_extra_dom(s_time_t n PRINT(3,"Domain %i.%i: Short_block_loss: %"PRIi64"\n", inf->vcpu->domain->domain_id, inf->vcpu->vcpu_id, inf->short_block_lost_tot); - if (inf->short_block_lost_tot <= 0) { +#if 0 + /* + * KAF: If we don't exit short-blocking state at this point + * domain0 can steal all CPU for up to 10 seconds before + * scheduling settles down (when competing against another + * CPU-bound domain). Doing this seems to make things behave + * nicely. Noone gets starved by default. + */ + if (inf->short_block_lost_tot <= 0) +#endif + { PRINT(4,"Domain %i.%i compensated short block loss!\n", inf->vcpu->domain->domain_id, inf->vcpu->vcpu_id); /*we have (over-)compensated our block penalty*/ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |