Re: [Xen-devel] Scheduling of I/O domains
I have been looking for the code in xen that handles scheduling of I/O
domains, but have not succeeded in finding any. Only after some time did
I start thinking that maybe there wasn't any. So I did the following
In domain 1:
time dd if=/dev/hda of=/dev/null bs=1024k count=100
and this this took about 2 seconds.
Then I ran a cpu-consuming process in domain 2, and repeated the dd
command above. The result was more than 8 seconds! This strongly
suggests that domain 0 is not being treated specially by the scheduler,
and is being made to wait before servicing I/O interrupts, thereby
killing I/O performance in the presence of cpu-bound domain activity. It
seems to me that I/O domains need to be scheduled and dispatched
immediately upon receipt of an I/O interrupt.
Am I missing something here? How come nobody has noticed this behavior
before? Is somebody working on this? I
Yes. We did notice the above behaviour.
The default Xen's scheduler is BVT (Borrowed Virtual Time). It
suffers from unfairness when I/O and CPU bound tasks (or domains in our
case) are run against each other, but allows to get quite small dispatch
lattency (more details about the parameters that are used to control the
scheduler can be found in the docs).
To target the unfairness I am developing a modification of BVT (I
called it Fair Borrowed Virtual Time [FBVT]). You can enable it by
supplying "sched=fbvt" command to Xen at the startup. The scheduler is
development and it needs some tweaking to get the best performance
is what I am working on at the moment). It would be very helpful if you
could email me with the results of your tests for FBVT.
When developing FBVT I noticed a bug which also affects BVT,
unfortunatelly I did not have time to get round to fixing it yet.
The development plan for the schedulers is as follows:
1) Optimise the performance of FBVT.
2) Arrange the default parameters to favour domain 0. So far all domains
are treated exactly the same.
3) Arrange the default parameters for BVT.
4) Implement working version of Atropos (the current implementation broke
due to change of the scheduler interfaces).
In order to do 1) I need to create a benchmark suite. So if you have any
thoughts of what tests should be run give me an email as well.
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
Xen-devel mailing list