From mboxrd@z Thu Jan 1 00:00:00 1970 From: cendhu Subject: Re: Question about the ability of credit scheduler to handle I/O and CPU intensive VMs Date: Sun, 10 Oct 2010 14:00:17 +0530 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1197681877==" Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Yuehai Xu Cc: George Dunlap , xen-devel@lists.xensource.com, yhxu@wayne.edu List-Id: xen-devel@lists.xenproject.org --===============1197681877== Content-Type: multipart/alternative; boundary=0050450144a8e9248c04923f0e80 --0050450144a8e9248c04923f0e80 Content-Type: text/plain; charset=ISO-8859-1 Similar work has been done already (but not for the credit scheduler)... Have a look at this paper http://csl.cse.psu.edu/publications/vee07.pdf On Sun, Oct 10, 2010 at 9:38 AM, Yuehai Xu wrote: > > 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 > experiments. > > 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 > immediately? > > Thanks, > Yuehai > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel > --0050450144a8e9248c04923f0e80 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Similar work has been done already (but not for the credit scheduler).= ..

Have a look at this paper
http://csl.cse.psu.edu/publicatio= ns/vee07.pdf =A0



On Sun, Oct 10, 2010 at 9= :38 AM, Yuehai Xu <yuehaixu@gmail.com> wrote:
> 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; =A0However, 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<= br> 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
experiments.

Is it possible for me to detect the "I/O event" from "event&= quot; so that I
can give VM that has "I/O event" the priority to be scheduled
immediately?

Thanks,
Yuehai

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.= com
http://l= ists.xensource.com/xen-devel

--0050450144a8e9248c04923f0e80-- --===============1197681877== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --===============1197681877==--