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 of I/O domains

To: Rob Gardner <rob.gardner@xxxxxx>
Subject: Re: [Xen-devel] Scheduling of I/O domains
From: "G. Milos" <gm281@xxxxxxxxxxxxxxxx>
Date: Wed, 21 Jul 2004 19:54:29 +0100 (BST)
Cc: xen-devel@xxxxxxxxxxxxxxxxxxxxx
Delivery-date: Wed, 21 Jul 2004 20:04:46 +0100
Envelope-to: steven.hand@xxxxxxxxxxxx
In-reply-to: <40FEA619.1050800@xxxxxx>
List-archive: <http://sourceforge.net/mailarchive/forum.php?forum=xen-devel>
List-help: <mailto:xen-devel-request@lists.sourceforge.net?subject=help>
List-id: List for Xen developers <xen-devel.lists.sourceforge.net>
List-post: <mailto:xen-devel@lists.sourceforge.net>
List-subscribe: <https://lists.sourceforge.net/lists/listinfo/xen-devel>, <mailto:xen-devel-request@lists.sourceforge.net?subject=subscribe>
List-unsubscribe: <https://lists.sourceforge.net/lists/listinfo/xen-devel>, <mailto:xen-devel-request@lists.sourceforge.net?subject=unsubscribe>
References: <40FEA619.1050800@xxxxxx>
Sender: xen-devel-admin@xxxxxxxxxxxxxxxxxxxxx
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
simple experiment:
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 under development and it needs some tweaking to get the best performance (that 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. Hopefully tomorrow.

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