From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Cc: vatsa@in.ibm.com, Rusty Russell <rusty@rustcorp.com.au>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Zwane Mwaikambo <zwane@arm.linux.org.uk>,
Nathan Lynch <nathanl@austin.ibm.com>,
Joel Schopp <jschopp@austin.ibm.com>,
Ashok Raj <ashok.raj@intel.com>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Gautham R Shenoy <ego@in.ibm.com>, Ingo Molnar <mingo@elte.hu>,
paulmck@us.ibm.com
Subject: Re: [BUG] cpu-hotplug: Can't offline the CPU with naughty realtime processes
Date: Wed, 09 May 2007 10:47:50 +1000 [thread overview]
Message-ID: <46411A36.2050609@yahoo.com.au> (raw)
In-Reply-To: <87ejlqg77m.wl%takeuchi_satoru@jp.fujitsu.com>
Satoru Takeuchi wrote:
> At Tue, 8 May 2007 22:18:50 +0530,
> Srivatsa Vaddagiri wrote:
>
>>On Tue, May 08, 2007 at 04:16:06PM +0900, Satoru Takeuchi wrote:
>>
>>>Sometimes I wonder at prio_array. It has 140 entries(from 0 to 139),
>>>and the meaning of each entry is as follows, I think.
>>>
>>>+-----------+-----------------------------------------------+
>>>| index | usage |
>>>+-----------+-----------------------------------------------+
>>>| 0 - 98 | RT processes are here. They are in the entry |
>>>| | whose index is 99 - sched_priority. |
>>
>>>From sched.h:
>>
>>/*
>> * Priority of a process goes from 0..MAX_PRIO-1, valid RT
>> * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
>> * tasks are in the range MAX_RT_PRIO..MAX_PRIO-1.
>>
>>so shouldn't the index for RT processes be 0 - 99, given that
>>MAX_RT_PRIO = 100?
>
>
> However `man sched_priority' says...
>
>
> Processes scheduled with SCHED_OTHER or SCHED_BATCH must
> be assigned the static priority 0. Processes scheduled
> under SCHED_FIFO or SCHED_RR can have a static priority
> in the range 1 to 99. The system calls
> sched_get_priority_min() and sched_get_priority_max() can
> be used to find out the valid priority range for a
> scheduling policy in a portable way on all POSIX.1-2001
> conforming systems.
>
>
> and see the kernel/sched.c ...
>
>
> int sched_setscheduler(struct task_struct *p, int policy,
> struct sched_param *param)
> {
> ...
> /*
> * Valid priorities for SCHED_FIFO and SCHED_RR are
> * 1..MAX_USER_RT_PRIO-1, valid priority for SCHED_NORMAL and
> * SCHED_BATCH is 0.
> */
> if (param->sched_priority < 0 ||
> (p->mm && param->sched_priority > MAX_USER_RT_PRIO-1) ||
> (!p->mm && param->sched_priority > MAX_RT_PRIO-1))
> return -EINVAL;
> if (is_rt_policy(policy) != (param->sched_priority != 0))
> return -EINVAL;
> ...
> }
>
>
> So, if I want to set the rt_prio of a kernel_thread, we can't use this
> entry unless set t->prio to 99 directly. I don't know whether we are
> allowed to write such code bipassing sched_setscheduler(). In addition,
> even if kernel_thread can use this index , I can't understand it's usage.
> It can only be used by kernel, but its priority is LOWER than any real
> time thread.
>
> If the rule can be changed to the following...
>
> +-----------+-----------------------------------------------+
> | index | usage |
> +-----------+-----------------------------------------------+
> | 0 | RT processes are here. Only kernel can use |
> | | this entry. |
> +-----------+-----------------------------------------------+
> | 1 - 99 | RT processes are here. They are in the entry |
> | | whose index is 99 - sched_priority. |
> +-----------+-----------------------------------------------+
> | 100 - 139 | Ordinally processes are here. They are in the |
> | | entry whose index is (nice+120) +/- 5 |
> +-----------+-----------------------------------------------+
>
> ... there will be an entry only used by kernel and its priority is HIGHER
> than any user process, and I'll get happy :-)
We've seen the same problem with other stop_machine_run sites in the kernel.
module remove was one.
Reserving the top priority slot for stop machine (and migration thread, I
guess) isn't a bad idea.
--
SUSE Labs, Novell Inc.
next prev parent reply other threads:[~2007-05-09 0:48 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-07 10:10 [BUG] cpu-hotplug: Can't offline the CPU with naughty realtime processes Satoru Takeuchi
2007-05-07 10:47 ` Gautham R Shenoy
2007-05-07 11:02 ` Srivatsa Vaddagiri
2007-05-07 12:39 ` Gautham R Shenoy
2007-05-07 10:55 ` Srivatsa Vaddagiri
2007-05-07 10:56 ` KAMEZAWA Hiroyuki
2007-05-07 13:42 ` Rusty Russell
2007-05-08 2:41 ` Satoru Takeuchi
2007-05-08 3:02 ` Rusty Russell
2007-05-08 3:29 ` Satoru Takeuchi
2007-05-08 4:04 ` Rusty Russell
2007-05-08 4:10 ` Srivatsa Vaddagiri
2007-05-08 7:16 ` Satoru Takeuchi
2007-05-08 16:48 ` Srivatsa Vaddagiri
2007-05-09 0:40 ` Satoru Takeuchi
2007-05-09 0:47 ` Nick Piggin [this message]
2007-05-09 6:31 ` Satoru Takeuchi
2007-05-09 8:56 ` Gautham R Shenoy
2007-05-11 8:49 ` [PATCH 1/2] Fix stop_machine_run problem with naughty real time process Satoru Takeuchi
2007-05-11 9:18 ` Satoru Takeuchi
2007-05-11 8:49 ` [PATCH 2/2] cpu hotplug: fix ksoftirqd termination on cpu hotplug with naughty realtime process Satoru Takeuchi
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=46411A36.2050609@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=ashok.raj@intel.com \
--cc=ego@in.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=jschopp@austin.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=nathanl@austin.ibm.com \
--cc=paulmck@us.ibm.com \
--cc=rusty@rustcorp.com.au \
--cc=takeuchi_satoru@jp.fujitsu.com \
--cc=vatsa@in.ibm.com \
--cc=zwane@arm.linux.org.uk \
/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.