[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 0/5] Towards work-conserving RTDS





On Mon, Oct 2, 2017 at 1:04 PM, Dario Faggioli <dario.faggioli@xxxxxxxxxx> wrote:
On Mon, 2017-10-02 at 17:38 +0300, Andrii Anisov wrote:
> Hello Meng Xu and Dario,
>
Hi,

> On 01.09.17 18:58, Meng Xu wrote:
> > This series of patches make RTDS scheduler work-conserving
> > without breaking real-time guarantees.
> > VCPUs with extratime flag set can get extra time
> > from the unreserved system resource.
> > System administrators can decide which VCPUs have extratime flag
> > set.
>
> As I understand from threads and the code, the work conserving
> algorithm
> is quite simplistic and will prefer a vcpu with greater utilization.
>
>  From our side we are looking for a bit different solution. I.e., in
> the
> same cpupool, running vcpus eager for RT characteristics under EDF
> conditions, and share the rest of resources between non-rt vcpus
> (i.e.
> in a credit manner).
> Possible use-case could be a system with a domain hunger for
> resources,
> but not critical (some infotainment system) and an RT domain
> utilizing
> at most 20% of a single CPU core. Having a SoC with 4 cores,
> partitioning would be a significant resources wasting for described
> scenario.
>
IMO, this is interesting, but I think the proper way to achieve
something like this is not modify RTDS to also contain something like
Credit, nor to modify Credit to also contain something like RTDS.

The idea I have in mind to serve the use case you're describing is as
follows. Right now, a cpupool can only have a scheduler. If it's RTDS,
all the domains are scheduler with RTDS, if it's Credit, all the
domains are scheduled with Credit, etc.

My idea would be to allow a stack of schedulers in a cpupool.
Basically, you'd configure a cpupool with sched="rtds,credit2" and then
you specify, for each domain, what scheduler you want it to use.

The end result would be that, in the example above, domains scheduler
with Credit2 would run in the time left free by the domains scheduler
by RTDS. E.g., if you have a cpupool with only 1 CPU, an RTDS domain
with P=100,B=20, an RTDS domain with P=1000,B=40, and two Credit2
domains, one with weight 256 and the other with weight 512. Then, the
two RTDS domains will get 20% and 40% of the CPU, while the two Credit2
domains will share the remaining 40% (the one with w=512 getting twice
as much as the one with w=256).

This is kind of similar with what Linux does with scheduling classes,
but even more flexible.

​I was thinking about Linux scheduling class as well. :)
I think this is a great idea. :)​
  
I am not working on implementing this right now, because I'm busy with
other things, but I would like to do that at some point. And if you're
up for helping, that would be great! :-)

​Right now, I'm with busy with a deadline. I will take care of the work-conserving RTDS next week.
As to supporting different scheduling class on the same cpupool, I'm not yet sure when I'm available for this. :(

Best,

Meng
--
Meng Xu
Ph.D. Candidate in Computer and Information Science
University of Pennsylvania
http://www.cis.upenn.edu/~mengxu/
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.