diff options
author | Hui Lv <hui.lv@intel.com> | 2012-01-17 11:18:48 +0000 |
---|---|---|
committer | Hui Lv <hui.lv@intel.com> | 2012-01-17 11:18:48 +0000 |
commit | 64908a046602f977d9b5200cf8ab4331537c0a1e (patch) | |
tree | 34b4c04ba76e8a777a739f64f351a28a125c480a /xen/common/schedule.c | |
parent | f7f025a9a66c9e6c14acb296ff7ce22c4aed85e8 (diff) | |
download | xen-64908a046602f977d9b5200cf8ab4331537c0a1e.tar.gz xen-64908a046602f977d9b5200cf8ab4331537c0a1e.tar.bz2 xen-64908a046602f977d9b5200cf8ab4331537c0a1e.zip |
sched_credit: Use delay to control scheduling frequency
This patch can improve Xen performance:
1. Basically, the "delay method" can achieve 11% overall performance
boost for SPECvirt than original credit scheduler.
2. We have tried 1ms delay and 10ms delay, there is no big difference
between these two configurations. (1ms is enough to achieve a good
performance)
3. We have compared different load level response time/latency (low,
high, peak), "delay method" didn't bring very much response time
increase.
4. 1ms delay can reduce 30% context switch at peak performance, where
produces the benefits. (int sched_ratelimit_us = 1000 is the
recommended setting)
Signed-off-by: Hui Lv <hui.lv@intel.com>
Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/common/schedule.c')
-rw-r--r-- | xen/common/schedule.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/xen/common/schedule.c b/xen/common/schedule.c index 3a91220823..54658adca1 100644 --- a/xen/common/schedule.c +++ b/xen/common/schedule.c @@ -47,6 +47,11 @@ string_param("sched", opt_sched); bool_t sched_smt_power_savings = 0; boolean_param("sched_smt_power_savings", sched_smt_power_savings); +/* Default scheduling rate limit: 1ms + * The behavior when sched_ratelimit_us is greater than sched_credit_tslice_ms is undefined + * */ +int sched_ratelimit_us = 1000; +integer_param("sched_ratelimit_us", sched_ratelimit_us); /* Various timer handlers. */ static void s_timer_fn(void *unused); static void vcpu_periodic_timer_fn(void *data); |