[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] sched/credit: avoid priority boost for capped domains when unpark
When unpausing a capped domain, the scheduler currently clears the CSCHED_FLAG_VCPU_PARKED flag before vcpu_wake(). This, in turn, causes the vcpu_wake to set CSCHED_PRI_TS_BOOST, resulting in an unfair credit boost. The comment around the changed lines already states that clearing the flag should happen AFTER the unpause. This bug was introduced in commit be650750945 "credit1: Use atomic bit operations for the flags structure". Original patch author credit: Xi Xiong. Signed-off-by: Eslam Elnikety <elnikety@xxxxxxxxxx> Reviewed-by: Leonard Foerster <foersleo@xxxxxxxxx> Reviewed-by: Petre Eftime <epetre@xxxxxxxxxx> --- xen/common/sched_credit.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xen/common/sched_credit.c b/xen/common/sched_credit.c index 3abe20def8..8eb1aba12a 100644 --- a/xen/common/sched_credit.c +++ b/xen/common/sched_credit.c @@ -1538,7 +1538,7 @@ csched_acct(void* dummy) svc->pri = CSCHED_PRI_TS_UNDER; /* Unpark any capped domains whose credits go positive */ - if ( test_and_clear_bit(CSCHED_FLAG_VCPU_PARKED, &svc->flags) ) + if ( test_bit(CSCHED_FLAG_VCPU_PARKED, &svc->flags) ) { /* * It's important to unset the flag AFTER the unpause() @@ -1547,6 +1547,8 @@ csched_acct(void* dummy) */ SCHED_STAT_CRANK(vcpu_unpark); vcpu_unpause(svc->vcpu); + /* Now clear the PARKED flag */ + clear_bit(CSCHED_FLAG_VCPU_PARKED, &svc->flags); } /* Upper bound on credits means VCPU stops earning */ -- 2.15.3.AMZN _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |