[20170109]
|
Documenting NetBSD's scheduler tweaks
NetBSD's scheduler was recently changed to better
distribute load of long-running processes on multiple CPUs.
So far, the associated sysctl tweaks were not documented,
and this was changed now,
documenting the kern.sched sysctls.
For reference, here is the text that was added to the
sysctl(7) manpage:
kern.sched (dynamic)
Influence the scheduling of LWPs, their priorisation and how they
are distributed on and moved between CPUs.
Third level name Type Changeable
kern.sched.cacheht_time integer yes
kern.sched.balance_period integer yes
kern.sched.average_weight integer yes
kern.sched.min_catch integer yes
kern.sched.timesoftints integer yes
kern.sched.kpreempt_pri integer yes
kern.sched.upreempt_pri integer yes
kern.sched.maxts integer yes
kern.sched.mints integer yes
kern.sched.name string no
kern.sched.rtts integer no
kern.sched.pri_min integer no
kern.sched.pri_max integer no
The variables are as follows:
kern.sched.cacheht_time (dynamic)
Cache hotness time in which a LWP is kept on one particu-
lar CPU and not moved to another CPU. This reduces the
overhead of flushing and reloading caches. Defaults to
3ms. Needs to be given in ``hz'' units, see mstohz(9).
kern.sched.balance_period (dynamic)
Interval at which the CPU queues are checked for re-bal-
ancing. Defaults to 300ms. Needs to be given in ``hz''
units, see mstohz(9).
kern.sched.average_weight (dynamic)
Can be used to influence how likely LWPs are to be
migrated from one CPU's queue of LWPs that are ready to
run to a different, idle CPU. The value gives the per-
centage for weighting the average count of migratable
threads from the past against the current number of
migratable threads. A small value gives more weight to
the past, a larger values more weight on the current sit-
uation. Defaults to 50 and must be between 0 and 100.
kern.sched.min_catch (dynamic)
Minimum count of migratable (runable) threads for catch-
ing (stealing) from another CPU. Defaults to 1 but can
be increased to decrease chance of thread migration
between CPUs.
kern.sched.timesoftints (dynamic)
Enable tracking of CPU time for soft interrupts as part
of a LWP's real execution time. Set to a non-zero value
to enable, and see ps(1) for printing CPU times.
kern.sched.kpreempt_pri (dynamic)
Minimum priority to trigger kernel preemption.
kern.sched.upreempt_pri (dynamic)
Minimum priority to trigger user preemption.
kern.sched.maxts (dynamic)
Scheduler specific maximal time quantum (in millisec-
onds). Must be set to a value larger than ``mints'' and
between 10 and ``hz'' as given by the kern.clockrate
sysctl. Provided by the M2 scheduler.
kern.sched.mints (dynamic)
Scheduler specific minimal time quantum (in millisec-
onds). Must be set to a value smaller than ``maxts'' and
between 1 and ``hz'' as given by the ``kern.clockrate''
sysctl. Provided by the M2 scheduler.
kern.sched.name (dynamic)
Scheduler name. Provided both by the M2 and the 4BSD
scheduler.
kern.sched.rtts (dynamic)
Fixed scheduler specific round-robin time quantum in mil-
liseconds. Provided both by the M2 and the 4BSD sched-
uler.
kern.sched.pri_min (dynamic)
Minimal POSIX real-time priority. See sched(3).
kern.sched.pri_max (dynamic)
Maximal POSIX real-time priority. See sched(3).
[Tags: scheduler, sysctl]
|