From: Peter Zijlstra <peterz@infradead.org>
To: Darren Hart <dvhart@linux.intel.com>
Cc: Ingo Molnar <mingo@elte.hu>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
richard.purdie@linuxfoundation.org
Subject: Re: [PATCH 2/2] sched: allow users with rtprio rlimit to change from SCHED_IDLE policy
Date: Thu, 24 Feb 2011 12:49:27 +0100 [thread overview]
Message-ID: <1298548167.2428.41.camel@twins> (raw)
In-Reply-To: <4D657BEE.4040608@linux.intel.com>
On Wed, 2011-02-23 at 13:28 -0800, Darren Hart wrote:
> From: Darren Hart <dvhart@linux.intel.com>
> Date: Thu, 17 Feb 2011 15:37:07 -0800
> Subject: [PATCH] sched: allow users with sufficient RLIMIT_NICE to change from SCHED_IDLE policy
>
> The current scheduler implementation returns -EPERM when trying to change from
> SCHED_IDLE to SCHED_OTHER or SCHED_BATCH.
> Since SCHED_IDLE is considered to be
> equivalent to a nice 20,
Well, its not quite equivalent, its actually 5 times lighter still and
the preemption behaviour is slightly different as you've found ;-)
> changing to another policy should be allowed provided
> the RLIMIT_NICE is accounted for.
>
> This patch allows the following test-case to pass with RLIMIT_NICE=40, but still
> fail with RLIMIT_NICE=10 when the calling process is run from a typical shell
> (nice 0, or 20 in rlimit terms).
>
> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
> CC: Peter Zijlstra <peterz@infradead.org>
> CC: Ingo Molnar <mingo@elte.hu>
> CC: Richard Purdie <richard.purdie@linuxfoundation.org>
> ---
> kernel/sched.c | 11 +++++++----
> 1 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/kernel/sched.c b/kernel/sched.c
> index 18d38e4..9bf6284 100644
> --- a/kernel/sched.c
> +++ b/kernel/sched.c
> @@ -4822,12 +4822,15 @@ recheck:
> param->sched_priority > rlim_rtprio)
> return -EPERM;
> }
> +
> /*
> + * Treat SCHED_IDLE as nice 20. Only allow a switch to
> + * SCHED_NORMAL if the RLIMIT_NICE would normally permit it.
> */
> + if (p->policy == SCHED_IDLE && policy != SCHED_IDLE) {
> + if (!can_nice(p, TASK_NICE(p)))
> + return -EPERM;
> + }
>
> /* can't change other user's priorities */
> if (!check_same_owner(p))
Looks fine, thanks!
next prev parent reply other threads:[~2011-02-24 11:49 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-22 21:04 [PATCH 0/2] sched: SCHED_BATCH fixes Darren Hart
2011-02-22 21:04 ` [PATCH 1/2] sched: allow SCHED_BATCH to preempt SCHED_IDLE tasks Darren Hart
2011-02-23 4:20 ` Mike Galbraith
2011-02-23 5:31 ` Mike Galbraith
2011-02-23 5:33 ` Darren Hart
2011-03-04 11:49 ` [tip:sched/core] sched: Allow " tip-bot for Darren Hart
2011-02-22 21:04 ` [PATCH 2/2] sched: allow users with rtprio rlimit to change from SCHED_IDLE policy Darren Hart
2011-02-23 11:03 ` Peter Zijlstra
2011-02-23 11:13 ` Ingo Molnar
2011-02-23 11:17 ` Peter Zijlstra
2011-02-23 11:35 ` Ingo Molnar
2011-02-23 15:52 ` Darren Hart
2011-02-23 16:00 ` Peter Zijlstra
2011-02-23 16:07 ` Darren Hart
2011-02-23 21:28 ` Darren Hart
2011-02-24 11:49 ` Peter Zijlstra [this message]
2011-03-04 11:49 ` [tip:sched/core] sched: Allow users with sufficient RLIMIT_NICE " tip-bot for Darren Hart
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=1298548167.2428.41.camel@twins \
--to=peterz@infradead.org \
--cc=dvhart@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=richard.purdie@linuxfoundation.org \
/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.