Nohz / isolation fixes
Ingo,
Please pull the nohz/fixes branch that can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
nohz/fixes
HEAD: 11c3146353bb83028ace8ad089a911c390395986
Thanks,
Frederic
---
Paul E. McKenney (3):
sched/isolation: Make NO_HZ_FULL select CPU_ISOLATION sched/isolation: Enable CONFIG_CPU_ISOLATION=y by default sched/isolation: Document boot parameters dependency on CONFIG_CPU_ISOLATION
Documentation/admin-guide/kernel-parameters.rst | 1 + Documentation/admin-guide/kernel-parameters.txt | 4 ++-- init/Kconfig | 6 +++++- kernel/time/Kconfig | 1 + 4 files changed, 9 insertions(+), 3 deletions(-)
PATCH 1/3 sched/isolation: Make NO_HZ_FULL select CPU_ISOLATION
From: "Paul E. McKenney" <[email protected]>
CONFIG_NO_HZ_FULL doesn't make sense without CONFIG_CPU_ISOLATION. In fact enabling the first without the second is a regression as nohz_full= boot parameter gets silently ignored.
Besides this unnatural combination hangs RCU gp kthread when running rcutorture for reasons that are not yet fully understood:
rcu_preempt kthread starved for 9974 jiffies! g4294967208 +c4294967207 f0x0 RCU_GP_WAIT_FQS(3) ->state=0x402 ->cpu=0 rcu_preempt I 7464 8 2 0x80000000 Call Trace: __schedule+0x493/0x620 schedule+0x24/0x40 schedule_timeout+0x330/0x3b0 ? preempt_count_sub+0xea/0x140 ? collect_expired_timers+0xb0/0xb0 rcu_gp_kthread+0x6bf/0xef0
This commit therefore makes NO_HZ_FULL select CPU_ISOLATION, which prevents all these bad behaviours.
--- kernel/time/Kconfig | 1 + 1 file changed, 1 insertion(+)
kernel/time/Kconfig +1 -0
@@ -95,6 +95,7 @@ config NO_HZ_FULL select RCU_NOCB_CPU select VIRT_CPU_ACCOUNTING_GEN select IRQ_WORK + select CPU_ISOLATION help Adaptively try to shutdown the tick whenever possible, even when the CPU is running tasks. Typically this requires running a single
Signature · 1 line
2.7.4
PATCH 2/3 sched/isolation: Enable CONFIG_CPU_ISOLATION=y by default
In reply to Frederic WeisbeckerFrom: "Paul E. McKenney" <[email protected]>
The "isolcpus=" boot parameter support was always built-in before we moved the related code under CONFIG_CPU_ISOLATION. Having it disabled by default is very confusing for people accustomed to use this parameter.
So enable it by dafault to keep the previous behaviour but keep it optable for those who want to tinify their kernels.
--- init/Kconfig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
init/Kconfig +5 -1
@@ -461,10 +461,14 @@ endmenu # "CPU/Task time and stats accounting" config CPU_ISOLATION bool "CPU isolation" + default y help Make sure that CPUs running critical tasks are not disturbed by any source of "noise" such as unbound workqueues, timers, kthreads... - Unbound jobs get offloaded to housekeeping CPUs. + Unbound jobs get offloaded to housekeeping CPUs. This is driven by + the "isolcpus=" boot parameter. + + Say Y if unsure. source "kernel/rcu/Kconfig"
Signature · 1 line
2.7.4
PATCH 3/3 sched/isolation: Document boot parameters dependency on CONFIG_CPU_ISOLATION
In reply to Frederic WeisbeckerFrom: "Paul E. McKenney" <[email protected]>
The "isolcpus=" and "nohz_full=" boot parameters depend on CPU Isolation support. Let's document that.
--- Documentation/admin-guide/kernel-parameters.rst | 1 + Documentation/admin-guide/kernel-parameters.txt | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-)
Documentation/admin-guide/kernel-parameters.rst +1 -0
@@ -109,6 +109,7 @@ parameter is applicable:: IPV6 IPv6 support is enabled. ISAPNP ISA PnP code is enabled. ISDN Appropriate ISDN support is enabled. + ISOL CPU Isolation is enabled. JOY Appropriate joystick support is enabled. KGDB Kernel debugger support is enabled. KVM Kernel Virtual Machine support is enabled.
Documentation/admin-guide/kernel-parameters.txt +2 -2
@@ -1737,7 +1737,7 @@ isapnp= [ISAPNP] Format: <RDP>,<reset>,<pci_scan>,<verbosity> - isolcpus= [KNL,SMP] Isolate a given set of CPUs from disturbance. + isolcpus= [KNL,SMP,ISOL] Isolate a given set of CPUs from disturbance. [Deprecated - use cpusets instead] Format: [flag-list,]<cpu-list>
@@ -2662,7 +2662,7 @@ Valid arguments: on, off Default: on - nohz_full= [KNL,BOOT] + nohz_full= [KNL,BOOT,SMP,ISOL] The argument is a cpu list, as described above. In kernels built with CONFIG_NO_HZ_FULL=y, set the specified list of CPUs whose tick will be stopped
Signature · 1 line
2.7.4
2017-12-14 15:14 UTC+01:00, Frederic Weisbecker <[email protected]>:
Quoted 8 lines
Ingo,
Please pull the nohz/fixes branch that can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
nohz/fixesHEAD:
11c3146353bb83028ace8ad089a911c390395986
Sorry please disregard this pull request, I messed up with the autorship. I'm sending another version.