Current RTDS scheduler is time driven and is called every 1ms. 
During each scheduler call, the repl_update() scans both runq 
and depeletedq, which might not be necessary every 1ms.

Since each vcpu is implemented as a deferable server, budget is 
preserved during its period and refilled in the next. It is not 
necessary to check every 1ms as the current design does. The 
replenishment is needed at the nearest next period(nearest 
current_deadline) of all runnable vcpus.

This improved design tries to reduce scheduler invocation by 
using an event driven approach;rt_schedule() will return a value 
when the scheduler needs to be called next time. In addition, 
the sched_rt will have one dedicated timer to handle replenishment 
when necessary. In other words, the budget replenishment and 
scheduler decision(rt_schedule) are separated. 

The transient behavior should be noted. It happens between a vcpu 
tickles and a pcpu actually picks it. As previous discussions, this 
is unavoidable.

Previous discussions:
http://lists.xenproject.org/archives/html/xen-devel/2015-06/msg02629.html

Signed-off-by: Tianyang Chen <ti...@seas.upenn.edu>
Signed-off-by: Meng Xu <men...@cis.upenn.edu>
Signed-off-by: Dagaen Golomb <dgol...@seas.upenn.edu>

Tianyang Chen (1):
  xen: sched: convert RTDS from time to event driven model

 xen/common/sched_rt.c |  291 ++++++++++++++++++++++++++++++++++++-------------
 1 file changed, 213 insertions(+), 78 deletions(-)

-- 
1.7.9.5


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to