From: Davide Libenzi <davidel@xmailserver.org>
To: Mike Kravetz <mkravetz@sequent.com>
Cc: linux-kernel@vger.kernel.org, lse-tech@lists.sourceforge.net,
Hubertus Franke <frankeh@us.ibm.com>
Subject: Re: CPU affinity & IPI latency
Date: Mon, 16 Jul 2001 14:25:57 -0700 (PDT) [thread overview]
Message-ID: <XFMail.20010716142557.davidel@xmailserver.org> (raw)
In-Reply-To: <20010716091446.B1186@w-mikek2.des.beaverton.ibm.com>
On 16-Jul-2001 Mike Kravetz wrote:
> On Fri, Jul 13, 2001 at 11:25:21PM -0400, Hubertus Franke wrote:
>>
>> Mike, could we utilize the existing mechanism such as has_cpu.
>>
>
> I like it. Especially the way you eliminated the situation where
> we would have multiple tasks waiting for schedule. Hope this is
> not a frequent situation!!! The only thing I don't like is the
> use of has_cpu to prevent the task from being scheduled. Right
> now, I can't think of any problems with it. However, in the past
> I have been bit by using fields for purposes other than what they
> were designed for.
How about this ( draft ) :
struct task_struct {
...
struct task_struct * wlist_next;
...
};
static union {
struct schedule_data {
struct task_struct * curr;
struct task_struct * wlist;
cycles_t last_schedule;
} schedule_data;
char __pad [SMP_CACHE_BYTES];
} aligned_data [NR_CPUS] __cacheline_aligned = { {{&init_task,0}}};
static inline struct task_struct * wpick(aligned_data * ad) {
struct task_struct * tsk = ad->wlist;
if (tsk) {
ad->wlist = tsk->wlist_next;
add_to_runqueue(tsk);
}
return tsk;
}
static inline void wpush(aligned_data * ad, struct task_struct * tsk) {
if (task_on_runqueue(tsk))
list_del(&tsk->run_list);
tsk->wlist_next = ad->wlist;
ad->wlist = tsk;
}
asmlinkage void schedule(void)
{
...
if ((next = wpick(sched_data)))
goto ...;
...
}
In reschedule_idle() when before sending the IPI we do a wpush().
We modify aligned_data->wlist and tsk->wlist_next under runqueue_lock so we
don't need another one.
A slight change is needed to reschedule_idle() to handle the new field.
Pros to this solution are 1) we are not going to give other fields a different
meaning 2) when the idle will call schedule it'll pick the task w/o rescan.
- Davide
next prev parent reply other threads:[~2001-07-16 21:22 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-07-14 3:25 CPU affinity & IPI latency Hubertus Franke
2001-07-16 16:14 ` Mike Kravetz
2001-07-16 21:25 ` Davide Libenzi [this message]
-- strict thread matches above, loose matches on Subject: below --
2001-07-16 21:45 Hubertus Franke
2001-07-16 22:56 ` Davide Libenzi
2001-07-16 18:26 Hubertus Franke
2001-07-16 10:10 Hubertus Franke
2001-07-16 16:16 ` Davide Libenzi
2001-07-12 23:40 Mike Kravetz
2001-07-13 0:22 ` Davide Libenzi
2001-07-13 0:36 ` Larry McVoy
2001-07-13 2:06 ` Mark Hahn
2001-07-13 16:41 ` Davide Libenzi
2001-07-13 17:31 ` Mike Kravetz
2001-07-13 19:17 ` Davide Libenzi
2001-07-13 17:05 ` Mike Kravetz
2001-07-13 19:51 ` David Lang
2001-07-13 22:43 ` Mike Kravetz
2001-07-15 20:02 ` Davide Libenzi
2001-07-15 20:15 ` Andi Kleen
2001-07-15 20:31 ` Davide Libenzi
2001-07-13 19:54 ` Chris Wedgwood
2001-07-15 7:42 ` Troy Benjegerdes
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=XFMail.20010716142557.davidel@xmailserver.org \
--to=davidel@xmailserver.org \
--cc=frankeh@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lse-tech@lists.sourceforge.net \
--cc=mkravetz@sequent.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox