From: Ryan Harper <ryanh@us.ibm.com>
To: Stephan Diestelhorst <sd386@cl.cam.ac.uk>
Cc: Stephan Diestelhorst <Stephan.Diestelhorst@cl.cam.ac.uk>,
Ryan Harper <ryanh@us.ibm.com>,
xen-devel@lists.xensource.com
Subject: Re: scheduler independent forced vcpu selection
Date: Thu, 19 May 2005 10:05:59 -0500 [thread overview]
Message-ID: <20050519150559.GO7305@us.ibm.com> (raw)
In-Reply-To: <428C93B5.6060001@cl.cam.ac.uk>
* Stephan Diestelhorst <sd386@cl.cam.ac.uk> [2005-05-19 09:04]:
> Ryan Harper schrieb:
> > * Stephan Diestelhorst <sd386@cl.cam.ac.uk> [2005-05-18 09:04]:
> >
> >>>I'm working on a new hypercall, do_confer, which allows the directed
> >>>yielding of a vcpu to another vcpu. It is mainly used when a vcpu fails
> >>>to acquire a spinlock, yielding to the lock holder instead of spinning. I
> >>>ported the ppc64 spinlock implementation for the i386 linux portion. In
> >>>implementing the hypercall, I've been trying to figure out how to get
> >>>the scheduler (I've only played with bvt) to run the vcpu passed in the
> >>>hypercall (after some validation) but I've run into various bad state
> >>>situations (do_softirq pending != 0 assert, '!active_ac_timer(timer)'
> >>>failed , and __task_on_runqueue(prev) failed) which tells me I
> >>>don't fully understand all of the book-keeping that is needed. Has
> >>>anyone thought about how to do this with either BVT or the new EDF
> >>>scheduler?
> >
> >
> > After some thought, domain_wake(), followed by
> > raise_softirq(SCHEDULE_SOFTIRQ) does what I want and removes the huge
> > mess I was making in __enter_scheduler().
>
> Are you waking up the domain that holds the lock? Then you would rely on
> the scheduler to give the woken domain a high "priority" (whatever this
> means for the current scheduler) and should start that domain
> immediatelly, right?
I noticed your comments in sched_sedf.c about domain waking.
* 3. Unconservative (i.e. incorrect)
* -to boost the performance of I/O dependent domains it would be possible
* to put the domain into the runnable queue immediately, and let it run
* for the remainder of the slice of the current period
* (or even worse: allocate a new full slice for the domain)
* -either behaviour can lead to missed deadlines in other domains as
* opposed to approaches 1,2a,2b
Giving the remainder of the current slice to the domain we are waking
*sounds* like what I wanted, but you are concerned that it causes missed
deadlines. Could you elaborate when we would have such a case? If we are
only running in the remaining timeslice (which would expire before the
next deadline) then why would such behaviour lead to missing deadlines?
--
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
(512) 838-9253 T/L: 678-9253
ryanh@us.ibm.com
prev parent reply other threads:[~2005-05-19 15:05 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-17 20:48 scheduler independent forced vcpu selection Ryan Harper
2005-05-18 12:10 ` Stephan Diestelhorst
2005-05-18 14:55 ` Ryan Harper
2005-05-18 18:03 ` Ryan Harper
2005-05-19 13:22 ` Stephan Diestelhorst
2005-05-18 22:37 ` Ryan Harper
2005-05-19 13:25 ` Stephan Diestelhorst
2005-05-19 14:55 ` Ryan Harper
2005-05-19 15:05 ` Ryan Harper [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050519150559.GO7305@us.ibm.com \
--to=ryanh@us.ibm.com \
--cc=Stephan.Diestelhorst@cl.cam.ac.uk \
--cc=sd386@cl.cam.ac.uk \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.