aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/schedule.c
diff options
context:
space:
mode:
authorHui Lv <hui.lv@intel.com>2012-01-17 11:18:48 +0000
committerHui Lv <hui.lv@intel.com>2012-01-17 11:18:48 +0000
commit64908a046602f977d9b5200cf8ab4331537c0a1e (patch)
tree34b4c04ba76e8a777a739f64f351a28a125c480a /xen/common/schedule.c
parentf7f025a9a66c9e6c14acb296ff7ce22c4aed85e8 (diff)
downloadxen-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.c5
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);