This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


RE: [Xen-devel] Scheduling

On Jul 28 2005, David_Wolinsky@xxxxxxxx wrote:
I'm away over the long weekend, will look into that in more detail when I'll be back on Tuesday.

Yeah its not a real time application.  And while weighting is a nice,
how does it deal with the period?  If you could point to where in the
code the scheduler is, I would love to look through it an get a better
idea of how it works.

The weighting doesn't deal with periods, its parameter is the size of an EXTRA_QUANTUM. The interesting code is in the deschedule_extra_domain and do_extra_schedule (function names from my memory...). Have a look there. The basic principle is that each acquisition of a extra-quantum 'costs' a price (called score in the code) and the domain with the lowest due payment gets the next quantum. This price is inverse to the weight. To avoid overflows, rather than incrementing the own due amount of 'payment', the amount of other domains can be decreased. I hope this makes some sense. It should become more clear, when you have a look at the code. Please be aware that there are two extraqueues, both operate by the same principle, but the computation of the costs is different. You will want to have a look at the EXTRA_UTIL_Q, (or L1 extraq).

My short term goal was to see if scheduling could
create an overhead...  Here were my results...
                        Period  Slice           BOPs
                8 VM    1 ms            125 us  6858

What does BOP stand for? I use it for begin of period, but how does that fit into your measurement?

With the base numbers being this....

Host    32403.5
1 VM    32057

What does the second number mean?

But I figure these numbers might help you in your task, please
let me know if you do anything drastic to the scheduler between now and
next Wednesday... If so I'll re-run my tests, and hold off publishing my

Well not to the scheduler itself, but there will be a load balancer in the near future, which runs outside the scheduler though.

Also any what happens with a number > 4 sec?

Not sure, there could be some arithmetic overflows in some of the score estimation functions, because I multiply two time values. As they are in nanoseconds, 4 secs ~ 2^32 ns -> if you multiply them you will get an arithmetic overflow (max. result size is 64 bits). Pre right-shifting will improve the range, but of course will loose some precision (but who needs nanoseconds in this context anyways?) Result of this will be that the L0 extraq might do some interesting stuff, although only to a limited extent, so it's def. not critical and hard to notice!

-----Original Message-----
From: Stephan Diestelhorst [mailto:sd386@xxxxxxxxxxxx] Sent: Tuesday, July 26, 2005 5:44 PM
To: Wolinsky, David
Cc: m+Ian.Pratt@xxxxxxxxxxxx; xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Xen-devel] Scheduling

I am now changing my scheduling and have noticed some different results,

perhaps you could help me in my studies....

I am running CPU intensive VMs and am trying to find out at what scheduling they'll run the best (since the simulation being run over a long duration, short periods and slices are not important). I have 8 VMs so my first few tests were running in periods of 1, 2, and 10 seconds, divided among the 8 domUs...
So I typed
Xm sedf (1,8) 1,2,10e9 125,250,1250e6 0 0 0 (ie, xm sedf 1 1000000000 125000000 0 0 0)

In this case, I excluded scheduling for dom0...

Could you please help me refine my scheduling.

Sure. Actually I have not thought of such long periods and slices and in
fact there are parts in the code that limit the slice and period lengths
to roughly 4 seconds (due to arithmetic overflow), as I guessed that
those long periods would be quite exotic. In fact I think you might be
better of to use the scheduler in extra-time mode, that means you don't
guarantee time to the domains, but rather split the remaining (i.e. when
all realtime domains have finished) time into pieces of various sizes.
I guess this might be more appropriate to you, I assume that your long
running simulation is not a real-time application?

So you might just try to do
xm sedf (1,8) 0 0 0 1 w
With w specifying a weight for the domain. This works intuitively, so a
domain with weight 4 gets twice the amount of CPU time as one with
weight 2, which gets 2/5 of one with weight 5.

I hope that this suits your needs, if not, let me know and I'll change
some of the arithmetic code.
BTW: What did actually happen when you used the above command?


-----Original Message-----
From: Ian Pratt [mailto:m+Ian.Pratt@xxxxxxxxxxxx]
Sent: Monday, July 25, 2005 11:50 AM
To: Wolinsky, David; xen-devel@xxxxxxxxxxxxxxxxxxx
Cc: ian.pratt@xxxxxxxxxxxx
Subject: RE: [Xen-devel] Scheduling

Added sched=rrobin to my kernel and started xen Ran xm rrobin, unknown

command Ran xm help rrobin, unkown command

sched=rrobin is not in unstable anymore.
The default is the SEDF scheduler, but you can still set sched=bvt

As I recall, there is some documentation on SEDF in tools/misc

We should file a bug that using a scheduler op on a non existent scheduler does bad things.


So round robin is throw out

So I tried the default bvt...
Without appending it to my kernel, I ran... xm bvt_ctxallow 1 -
Error:  Internal server error

With it appended to my kernel, I run.. xm bvt_ctxallow 1 - Computer hard crashes

Any suggestions?

Xen-devel mailing list

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>