diff options
Diffstat (limited to 'init')
-rw-r--r-- | init/Kconfig | 41 | ||||
-rw-r--r-- | init/main.c | 3 |
2 files changed, 40 insertions, 4 deletions
diff --git a/init/Kconfig b/init/Kconfig index ec251fadb..0d6bb5cf4 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -44,7 +44,7 @@ config PCK_INTERACTIVE NCQ Queue Depth................: 31 -> 8 Block Layer Queue Depth........: 128 -> 16 - --- CPU Scheduler -------------------------------------- + --- CPU Scheduler (CFS) -------------------------------- Scheduling latency.............: 6 -> 3 ms Minimal granularity............: 0.75 -> 0.3 ms @@ -52,10 +52,38 @@ config PCK_INTERACTIVE CPU migration cost.............: 0.5 -> 0.25 ms Bandwidth slice size...........: 5 -> 3 ms + --- CPU Scheduler (BFS) -------------------------------- + + Scheduling interval............: 6 -> 3 ms + ISO task max realtime use......: 70 % -> 25 % + --- CPU Frequency Scaling ------------------------------ Ondemand down scaling factor...: 1 -> 10 +config SCHED_BFS + bool "BFS cpu scheduler" + default n + help + The Brain Fuck CPU Scheduler for excellent interactivity and + responsiveness on the desktop and solid scalability on normal + hardware and commodity servers. Not recommended for 4096 CPUs. + + Currently incompatible with the Group CPU scheduler, and RCU TORTURE + TEST so these options are disabled. + +config SCHED_BFS_AUTOISO + bool "Automatically use SCHED_ISO policy for X" + depends on SCHED_BFS + default n + help + Selecting this option will automatically use the SCHED_ISO scheduling + policy for X, resulting in an interactivity boost. This *may* cause + things like skipping sound on audio applications that are not run + as SCHED_ISO. + + Tasks (including X) can be run as sched_iso manually using schedtool. + config BROKEN bool @@ -363,7 +391,7 @@ choice # Kind of a stub config for the pure tick based cputime accounting config TICK_CPU_ACCOUNTING bool "Simple tick based cputime accounting" - depends on !S390 && !NO_HZ_FULL + depends on !S390 && !NO_HZ_FULL && !SCHED_BFS help This is the basic tick based cputime accounting that maintains statistics about user, system and idle time spent on per jiffies @@ -388,6 +416,7 @@ config VIRT_CPU_ACCOUNTING_GEN bool "Full dynticks CPU time accounting" depends on HAVE_CONTEXT_TRACKING depends on HAVE_VIRT_CPU_ACCOUNTING_GEN + depends on !SCHED_BFS select VIRT_CPU_ACCOUNTING select CONTEXT_TRACKING help @@ -722,6 +751,7 @@ config RCU_NOCB_CPU bool "Offload RCU callback processing from boot-selected CPUs" depends on TREE_RCU || PREEMPT_RCU depends on RCU_EXPERT || NO_HZ_FULL + depends on !SCHED_BFS default n help Use this option to reduce OS jitter for aggressive HPC or @@ -932,6 +962,7 @@ config NUMA_BALANCING depends on ARCH_SUPPORTS_NUMA_BALANCING depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY depends on SMP && NUMA && MIGRATION + depends on !SCHED_BFS help This option adds support for automatic NUMA aware memory/task placement. The mechanism is quite primitive and is based on migrating memory when @@ -1030,6 +1061,7 @@ config CGROUP_WRITEBACK menuconfig CGROUP_SCHED bool "CPU controller" + depends on !SCHED_BFS default n help This feature lets CPU scheduler recognize task groups and control CPU @@ -1132,6 +1164,7 @@ config CGROUP_DEVICE config CGROUP_CPUACCT bool "Simple CPU accounting controller" + depends on !SCHED_BFS help Provides a simple controller for monitoring the total CPU consumed by the tasks in a cgroup. @@ -1230,6 +1263,7 @@ endif # NAMESPACES config SCHED_AUTOGROUP bool "Automatic process group scheduling" + depends on !SCHED_BFS select CGROUPS select CGROUP_SCHED select FAIR_GROUP_SCHED @@ -1744,6 +1778,7 @@ choice This option allows to select a slab allocator. config SLAB + depends on !SCHED_BFS bool "SLAB" help The regular slab allocator that is established and known to work @@ -1761,7 +1796,7 @@ config SLUB a slab allocator. config SLOB - depends on EXPERT + depends on EXPERT && !SCHED_BFS bool "SLOB (Simple Allocator)" help SLOB replaces the stock allocator with a drastically simpler diff --git a/init/main.c b/init/main.c index 58c9e3747..055106098 100644 --- a/init/main.c +++ b/init/main.c @@ -808,7 +808,6 @@ int __init_or_module do_one_initcall(initcall_t fn) return ret; } - extern initcall_t __initcall_start[]; extern initcall_t __initcall0_start[]; extern initcall_t __initcall1_start[]; @@ -945,6 +944,8 @@ static int __ref kernel_init(void *unused) rcu_end_inkernel_boot(); + print_scheduler_version(); + if (ramdisk_execute_command) { ret = run_init_process(ramdisk_execute_command); if (!ret) |