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] Question about the ability of credit scheduler to handle

To: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Question about the ability of credit scheduler to handle I/O and CPU intensive VMs
From: Yuehai Xu <yuehaixu@xxxxxxxxx>
Date: Sun, 10 Oct 2010 00:08:41 -0400
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx, yhxu@xxxxxxxxx
Delivery-date: Sat, 09 Oct 2010 21:09:31 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=jaqVeTQtmdH3PorZrve44oUsA74ahyoJcSMTRKPXxcM=; b=Yx105Et7xzTlHjgW5DZjNcWCjLSqYOXjgCrD7Lqi3UPQ6yUWMNVD6/nAotm46y4osN GaIRf4hHUeFbSKKxL6ZxoNrY7QGt5gS4qc+6u+AGKBx3hQAVA0FfMLKLGVpKc5wWinqc WxpvAbOTlcrirSgTF5EzhKgyC44N6y+YPDK/4=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=hpi2y4dQUoJVCS3178PaVZWEDFZcNvUd7ghaqPE4kcfrAZFk8Lp9U9rUPO6SKamjDx sfQgH/vSmRkFglybEt7jY5fMTgORSC1zkJjuEc2EPrRiyEDZYef2nsLiNwv80OBebYxC +vl5KlniTRCb0qep/hSyKG0MKgvVTnXIBHGlA=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <AANLkTinc+Dar85ZU+_dYb=7AsdWgWpc3N_K_WFSTVbO6@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <AANLkTi=Ro24zg-yDPk1+=c0XsZSe2kNn8Gk07Bu4x0WN@xxxxxxxxxxxxxx> <AANLkTin9E1m_jFcj4Ak7nB9OxcQynrznpQ_nNPi_U7hN@xxxxxxxxxxxxxx> <AANLkTikBWZdpOviSEQSNi_pf66A+zYW8FyQVjiCX8ojm@xxxxxxxxxxxxxx> <AANLkTi=Oa0_=vXrr63eALBU2sQa3aLV0NiQHt8hPPvcw@xxxxxxxxxxxxxx> <AANLkTimYTbf5meNptCtuiKWfQGd_qSNCkbCNabfREc_0@xxxxxxxxxxxxxx> <AANLkTintdF5h0-YD6FxjX0dapfbQYdAcK2P-=wHXnBiC@xxxxxxxxxxxxxx> <AANLkTinCbnzLLtNpdQe0x387UeDcy3SzrmffZw1oQAJo@xxxxxxxxxxxxxx> <AANLkTi=r2MzCwwNbNDopBkoCWvQSc=jkeWUy8hxKYD3_@xxxxxxxxxxxxxx> <AANLkTik+tZTr8RQrbCwTFYZjbgW6tDq=LTcoBC2xsQhw@xxxxxxxxxxxxxx> <AANLkTinG-y8gOW1jVpvKgJU2fBiiDkgj5r=FAOv=0J8q@xxxxxxxxxxxxxx> <AANLkTinc+Dar85ZU+_dYb=7AsdWgWpc3N_K_WFSTVbO6@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
> The file you're looking for re getting an event channel is
> xen/common/schedule.c, the common scheduling code.
> In schedule.c, vcpu_wake() will always call the scheduler wake()
> function;  However, event channels and other "you have an event"
> functions call call vcpu_unblock() instead, which will check the
> vcpu's VPF_blocked flag and only call vcpu_wake if it was set.
> You could try changing vcpu_unblock() to always call vcpu_wake() for
> your experimental development; I'm not sure what side-effects this
> would have.

After changing vcpu_unblock() to always call vcpu_wake(), the VM that
has event can be scheduled immediately no matter whether it is CPU
intensive. However, I have another question. Except the I/O event, it
seems there are many other events too. Our design is to give a VM a
very short period of time when it has "I/O event", and right now,
vcpu_wake() is invoked when an event comes, even it is not "I/O
event", this will cause that the VM is scheduled much more frequently
than what I except.

For example, suppose 2 VMs, one is CPU intensive and another is CPU +
I/O intensive, from the level of scheduler, almost the same number of
events are received from the two VMs. Even I/O itself creates event,
since there are other events, the total number of events are almost
the same. In such case, I think we need to differentiate the I/O
events from other events.

I add trace point to __run_tickle() and notice the result that the
number of events are almost the same from two VMs, one of which is CPU
intensive and the other is CPU + I/O intensive. Although I do not
completely confirm what I have said currently, I need do more

Is it possible for me to detect the "I/O event" from "event" so that I
can give VM that has "I/O event" the priority to be scheduled


Xen-devel mailing list

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