Slide 9
Slide 9 text
ただし period には下限がある
タスクが増えすぎると slice が小さくなりすぎコンテキストスイッチのコストがやばいため
(nr_running は稼働中プロセス数)
sysctl_sched_min_granularity = 0.75 ms * (1 + log(コア数))
static u64 __sched_period(unsigned long nr_running)
{
u64 period = sysctl_sched_latency;
unsigned long nr_latency = sched_nr_latency;
if (unlikely(nr_running > nr_latency)) {
period = sysctl_sched_min_granularity;
period *= nr_running; /* ここで「最低 slice * タスク数」を period に設定している */
}
return period;
}