Re: [PATCH 0/1] sched: fix typo in sched-rt-group.txt file

From: GeunSik Lim
Date: Wed May 20 2009 - 21:47:45 EST


On Thu, May 21, 2009 at 3:59 AM, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> On Wed, 20 May 2009, GeunSik Lim wrote:
>
>> 2009/5/20 GeunSik Lim <leemgs1@xxxxxxxxx>:
>> >
>> >
>> > Dear Ingo,
>> >
>> >
>> > I made 2 patch files again about static prioriy levels according to ingo's advice
>> > and explanation. (Reference: http://marc.info/?t=124211992800003&r=1&w=2 archives. )
>> >
>> > Fix static priority related range and chart map(userspace/kernelspace) of ftrace.
>> > Â - about chart map of static priority in Âftrace.txt file
>> > Â - about static priority levels(range) in sched-rt-group.txt file
>> >
>> >
>> > commit d6af702008117ca489a2f5476239d1688a517e98
>> > Author: GeunSik,Lim <leemgs1@xxxxxxxxx>
>> > Date: Â Tue May 12 17:20:32 2009 +0900
>> >
>> > Â Âsched: fix typo in sched-rt-group.txt file
>> >
>> > Â ÂFix typo about static priority's range.
>> >
>> > Â Â* Kernel Space priority 0(high) to 99(low) Â --> User Space RT priority 99(high) to 1(low)
>> > Â Â* Kernel Space priority 100(high) to 139(low)--> User Space nice -20(high) to 19(low)
>> >
>>
>> Ingo,
>> I want to Âchange some descriptions according to below discussion.
>>
>> before) * Kernel Space priority 0(high) to 99(low) Â --> User Space RT
>> priority 99(high) to 1(low)
>> after) Â Â* ÂKernel Space priority 0(high) to 98(low) Â --> User Space
>> RT priority 99(high) to 1(low)
>>
>> I want to your advice and opinion about this changes.
>>
>> If I mistook, Please correct me.
>>
>> thks.
>>
>>
>>
>> Steven Rostedt:
>> Â Shouldn't that be:
>> Â Kernel priority: 0(high) to 98(low) Â Â==> user RT priority 99(high) to 1(low)
>>
>> GeunSik Lim :
>> Â Thank you for your opinion. ÂI think about corrected expression for
>> Â quick chart to map between kernel space and user space in ftrace .
>>
>> Steven Rostedt:
>> Â100 items does not map to 99. Which begs the question, what can have
>> Âinternal kernel priority 99?
>>
>> GeunSik Lim :
>> Â ok. ÂBelow example is about Âkernel (static) priority 99 that you said.
>> Â please, refer
>> Â to http://www.kernel.org/doc/man-pages/online/pages/man2/sched_setscheduler.2.html
>> Âwebpage.
>>
>> Â For processes scheduled under one of the normal scheduling policies
>> Â (SCHED_OTHER, SCHED_IDLE, SCHED_BATCH), sched_priority is not used in
>> Â scheduling decisions (it must be specified as 0).
>>
>> int main (int argc, char **argv)
>> { Â Â int pidnumber, ret;
>> Â Â Â struct sched_param p;
>> Â Â Â p.sched_priority = 0; <------ Kernel (static) priority.
>> Â Â Â if (argc != 2) {
>> Â Â Â Â Â Â Â printf("usage: setbatch <pid>\n");
>> Â Â Â Â Â Â Â exit(-1);
>> Â Â Â }
>> Â Â Â pidnumber = atol(argv[1]);
>> Â Â Â Â Â/* 3 = Number of SCHED_BATCH Constant */
>> Â Â Â ret = sched_setscheduler(pidnumber, 3, &p);
>> Â Â Â if (ret) {
>> Â Â Â Â Â Â Â printf("could not set pid %d to SCHED_BATCH: err %d.\n", pid, ret);
>> Â Â Â Â Â Â Â return -1;
>> Â Â Â }
>> Â Â Â printf("pid %d is SCHED_BATCH from now on.\n", pid);
>> Â Â Â return 0;
>> }
>>
>>
>> >
>> > Â Â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.
>> > Â Â(reference: $> man 2 sched_setscheduler)
>> >
>> > Â ÂSigned-off-by: GeunSik Lim <geunsik.lim@xxxxxxxxxxx>
>> >
>> > diff --git a/Documentation/scheduler/sched-rt-group.txt b/Documentation/scheduler/sched-rt-group.txt
>> > index 5ba4d3f..1537146 100644
>> > --- a/Documentation/scheduler/sched-rt-group.txt
>> > +++ b/Documentation/scheduler/sched-rt-group.txt
>> > @@ -169,7 +169,7 @@ get their allocated time.
>> >
>> > ÂImplementing SCHED_EDF might take a while to complete. Priority Inheritance is
>> > Âthe biggest challenge as the current linux PI infrastructure is geared towards
>> > -the limited static priority levels 0-139. With deadline scheduling you need to
>> > +the limited static priority levels 0-99. With deadline scheduling you need to
>> > Âdo deadline inheritance (since priority is inversely proportional to the
>> > Âdeadline delta (deadline - now).
>
> Note, this document deals with internal kernel manipulations. The "prio"
> inside the kernel is indeed 0-139. Actually, if we count the idle task, it
> is 0-140. The PI code will also deal with non RT tasks so it is correct to
> say that the priority inheritance deals with 0-139 (I don't think the idle
> task ever touches anything needing PI).
>
> The sched_setscheduler user API uses a different priority mapping. I was
> looking at the code inside sched.c and I believe this is the mapping:
>
>
> 0 to 98 - maps to RT tasks 99 to 1 (SCHED_RR or SCHED_FIFO)
>
> 99 - maps to internal kernel threads that want to be lower than RT tasks
> Â Â but higher than SCHED_OTHER tasks. Although I'm not sure if any
> Â Â kernel thread actually uses this. I'm not even sure how this can be
> Â Â set, because the internal sched_setscheduler function does not allow
> Â Â for it.
Thank you for additional explanation about kernel-space static priority 99
in the map of priority values between kernel-space and user-space.

I will update like belows.

Kernel priority: 0(high) to 98(low) ==> user RT priority 99(high)
to 1(low) with SCHED_RR or SCHED_FIFO
Kernel priority: 99 ==> sched_priority is
not used in scheduling deci
sions (it must be specified as 0)
Kernel priority: 100(high) to 139(low) ==> user nice -20(high) to 19(low)
Kernel priority: 140 ==> idle task priority


>
> 100 to 139 - maps nice levels -20 to 19. These are not set via
> Â Âsched_setscheduler, but are set via the nice system call.
>
> 140 - reserved for idle tasks.
>
> -- Steve
>



--
Regards,
GeunSik Lim
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/