change kthread priority

loody miloody at gmail.com
Mon Jul 11 02:53:56 EDT 2011


hi:


2011/7/11 Dave Hylands <dhylands at gmail.com>:
> Hi Milody,
>
> On Sun, Jul 10, 2011 at 8:55 PM, loody <miloody at gmail.com> wrote:
>> hi:
>>
>> 2011/7/11 Mulyadi Santosa <mulyadi.santosa at gmail.com>:
>>> Hi...
>>>
>
> ...snip...
>
>>> AFAIK they are user mode libc functions...
>> I found there are the same export_symbols in kernel.
>> I use them to dynamically change the priority.
>> It works but I found something interesting:
>> 1. if thread use schedule algorithm of SCHED_NORMAL, it cannot change
>> the priority.
>> 2. can we set the priority  to any number less than (MAX_USER_RT_PRIO-1)?
>> ( I tried to set the priority as 99, but it fail)
>
> You need to change the scheduling algorithim to be SCHED_FIFO or
> SCHED_RR in order to use the real-time priorities.
I saw kernel restrict the algorithm as SCHED_FIFO and SCHED_RR to
change the priority.
What are the differences between rt_priority, prio, static_prio and normal_prio?
sched_setscheduler seems only change rt_priority.

normal_prio is MAX_RT_PRIO-1 - t_priority
prio will be min(normal_prio, task_top_pi_waiter)

what is the real priority that kthread runs after calling sched_setscheduler ?


>
>> 3. can we get the name of thread from task_struct or pid?
>> (I use "cat /proc/338/status", I can see the name of thread. But I
>> look around the task_struct, I cannot find any name information in
>> it.)
>
> You can use the comm field from the task struct. This can be set using
> the prctl API and passing in PR_SET_NAME. You can see the task name by
> doing something like
>
> ps -T -o pid,ppid,user,time,comm
>
> Normally, ps shows the args column.
>
> --
> Dave Hylands
> Shuswap, BC, Canada
> http://www.davehylands.com
>



-- 
Regards,



More information about the Kernelnewbies mailing list