It is not necessary to set scheduler timer for idle CPU. so this patch add conditional check for idle CPU.
This patch remove the last idle periodic timer in xen, thus enhance the idle average C state residency from two-digits ms to three-digit ms.
Signed-off-by: Yu Ke <ke.yu@intel.com>
Tian Kevin <kevin.tian@intel.com>
diff -r e4bfa70d587c xen/common/schedule.c
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -819,7 +819,10 @@ static void schedule(void)
sd->curr = next;
- set_timer(&sd->s_timer, now + r_time);
+ if ( !is_idle_vcpu(next) )
+ {
+ set_timer(&sd->s_timer, now + r_time);
+ }
if ( unlikely(prev == next) )
{
This patch remove the last idle periodic timer in xen, thus enhance the idle average C state residency from two-digits ms to three-digit ms.
Signed-off-by: Yu Ke <ke.yu@intel.com>
Tian Kevin <kevin.tian@intel.com>
diff -r e4bfa70d587c xen/common/schedule.c
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -819,7 +819,10 @@ static void schedule(void)
sd->curr = next;
- set_timer(&sd->s_timer, now + r_time);
+ if ( !is_idle_vcpu(next) )
+ {
+ set_timer(&sd->s_timer, now + r_time);
+ }
if ( unlikely(prev == next) )
{