Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

changing timeslice in linux

760 views
Skip to first unread message

Xin Tong

unread,
Aug 19, 2012, 3:00:01 PM8/19/12
to
I have 2 questions about linux 2.6 x86_64 scheduler.

1. is the default scheduling algorithm SCHED_NORMAL in linux ?
2. how do i change the time slice in linux source code ?

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

Mike Galbraith

unread,
Aug 20, 2012, 2:00:02 AM8/20/12
to
On Sun, 2012-08-19 at 11:58 -0700, Xin Tong wrote:
> I have 2 questions about linux 2.6 x86_64 scheduler.
>
> 1. is the default scheduling algorithm SCHED_NORMAL in linux ?

Yes.

> 2. how do i change the time slice in linux source code ?

You shouldn't need to. You can tune "slice" by adjusting
sched_latency_ns and sched_min_granularity_ns, but note that "slice" is
not a fixed quantum. Also note that CFS preemption decisions are based
upon instantaneous state. A task may have received a full (variable)
"slice" of CPU time, but preemption will be triggered only if a more
deserving task is available, so a "slice" is not the "max uninterrupted
CPU time" that you may expect it to be.. but it is somewhat similar.

-Mike

Xin Tong

unread,
Aug 20, 2012, 11:00:03 AM8/20/12
to
On Sun, Aug 19, 2012 at 10:54 PM, Mike Galbraith <efa...@gmx.de> wrote:
> On Sun, 2012-08-19 at 11:58 -0700, Xin Tong wrote:
>> I have 2 questions about linux 2.6 x86_64 scheduler.
>>
>> 1. is the default scheduling algorithm SCHED_NORMAL in linux ?
>
> Yes.
Is there any document describing what the sched_normal is ? it is more
difficult than SCHED_RR to infer its meaning just based on its name ?
>
>> 2. how do i change the time slice in linux source code ?
>
> You shouldn't need to. You can tune "slice" by adjusting
> sched_latency_ns and sched_min_granularity_ns, but note that "slice" is
> not a fixed quantum. Also note that CFS preemption decisions are based
> upon instantaneous state. A task may have received a full (variable)
> "slice" of CPU time, but preemption will be triggered only if a more
> deserving task is available, so a "slice" is not the "max uninterrupted
> CPU time" that you may expect it to be.. but it is somewhat similar.
>
> -Mike
>
This can be done without recompiling and reinstalling the kernel ?
maybe one simply needs to write to a device file under /dev ?

Xin

Namhyung Kim

unread,
Aug 20, 2012, 8:30:01 PM8/20/12
to
On Mon, 20 Aug 2012 07:51:52 -0700, Xin Tong wrote:
> On Sun, Aug 19, 2012 at 10:54 PM, Mike Galbraith <efa...@gmx.de> wrote:
>> On Sun, 2012-08-19 at 11:58 -0700, Xin Tong wrote:
>>> I have 2 questions about linux 2.6 x86_64 scheduler.
>>>
>>> 1. is the default scheduling algorithm SCHED_NORMAL in linux ?
>>
>> Yes.
> Is there any document describing what the sched_normal is ? it is more
> difficult than SCHED_RR to infer its meaning just based on its name ?
>>
>>> 2. how do i change the time slice in linux source code ?
>>
>> You shouldn't need to. You can tune "slice" by adjusting
>> sched_latency_ns and sched_min_granularity_ns, but note that "slice" is
>> not a fixed quantum. Also note that CFS preemption decisions are based
>> upon instantaneous state. A task may have received a full (variable)
>> "slice" of CPU time, but preemption will be triggered only if a more
>> deserving task is available, so a "slice" is not the "max uninterrupted
>> CPU time" that you may expect it to be.. but it is somewhat similar.
>>
>> -Mike
>>
> This can be done without recompiling and reinstalling the kernel ?
> maybe one simply needs to write to a device file under /dev ?

You can find those files under /proc/sys/kernel/.

Thanks,
Namhyung

Xin Tong

unread,
Aug 28, 2012, 4:20:01 PM8/28/12
to
i changed the TIMESLICE defined in the sched.c

109 /*
110 * These are the 'tuning knobs' of the scheduler:
111 *
112 * default timeslice is 100 msecs (used only for SCHED_RR tasks).
113 * Timeslices get refilled after they expire.
114 */
115 #define DEF_TIMESLICE (20 * HZ / 1000)


I compiled and installed the modified kernel, but when i looked at the
, i get a different number

root@elm:~# cat /proc/sys/kernel/sched_rt_period_us
1000000


Xin

Xin Tong

unread,
Aug 28, 2012, 4:20:02 PM8/28/12
to
another question is that when i try to launch many (24) RT processes.
some of them do not seem to get scheduled. i query their scheduling
properties. they all have SCHED_RR with priority 99, but some of them
simply are not taking any CPU.

Xin
0 new messages