linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [GIT PULL] Nohz / isolation fixes
@ 2017-12-14 14:14 Frederic Weisbecker
  2017-12-14 14:14 ` [PATCH 1/3] sched/isolation: Make NO_HZ_FULL select CPU_ISOLATION Frederic Weisbecker
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Frederic Weisbecker @ 2017-12-14 14:14 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, Frederic Weisbecker, Peter Zijlstra, Linus Torvalds,
	Chris Metcalf, John Stultz, Thomas Gleixner, Luiz Capitulino,
	Christoph Lameter, Paul E . McKenney, Wanpeng Li, Mike Galbraith,
	Rik van Riel

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(-)

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/3] sched/isolation: Make NO_HZ_FULL select CPU_ISOLATION
  2017-12-14 14:14 [GIT PULL] Nohz / isolation fixes Frederic Weisbecker
@ 2017-12-14 14:14 ` Frederic Weisbecker
  2017-12-14 14:14 ` [PATCH 2/3] sched/isolation: Enable CONFIG_CPU_ISOLATION=y by default Frederic Weisbecker
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Frederic Weisbecker @ 2017-12-14 14:14 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, Paul E. McKenney, Peter Zijlstra, Linus Torvalds,
	Chris Metcalf, John Stultz, Frederic Weisbecker, Thomas Gleixner,
	Luiz Capitulino, Christoph Lameter, Wanpeng Li, Mike Galbraith,
	Rik van Riel, kernel test robot

From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>

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.

Fixes: 5c4991e24c69 ("sched/isolation: Split out new CONFIG_CPU_ISOLATION=y config from CONFIG_NO_HZ_FULL")

Reported-by: kernel test robot <xiaolong.ye@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Chris Metcalf <cmetcalf@mellanox.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Wanpeng Li <kernellwp@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: John Stultz <john.stultz@linaro.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
 kernel/time/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig
index e776fc8..f6b5f19 100644
--- a/kernel/time/Kconfig
+++ b/kernel/time/Kconfig
@@ -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
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] sched/isolation: Enable CONFIG_CPU_ISOLATION=y by default
  2017-12-14 14:14 [GIT PULL] Nohz / isolation fixes Frederic Weisbecker
  2017-12-14 14:14 ` [PATCH 1/3] sched/isolation: Make NO_HZ_FULL select CPU_ISOLATION Frederic Weisbecker
@ 2017-12-14 14:14 ` Frederic Weisbecker
  2017-12-14 14:14 ` [PATCH 3/3] sched/isolation: Document boot parameters dependency on CONFIG_CPU_ISOLATION Frederic Weisbecker
  2017-12-14 18:16 ` [GIT PULL] Nohz / isolation fixes Frederic Weisbecker
  3 siblings, 0 replies; 6+ messages in thread
From: Frederic Weisbecker @ 2017-12-14 14:14 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, Paul E. McKenney, Peter Zijlstra, Linus Torvalds,
	Chris Metcalf, John Stultz, Frederic Weisbecker, Thomas Gleixner,
	Luiz Capitulino, Christoph Lameter, Wanpeng Li, Mike Galbraith,
	Rik van Riel, kernel test robot

From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>

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.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Chris Metcalf <cmetcalf@mellanox.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Wanpeng Li <kernellwp@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: John Stultz <john.stultz@linaro.org>
---
 init/Kconfig | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/init/Kconfig b/init/Kconfig
index 2934249..690a381 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -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"
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] sched/isolation: Document boot parameters dependency on CONFIG_CPU_ISOLATION
  2017-12-14 14:14 [GIT PULL] Nohz / isolation fixes Frederic Weisbecker
  2017-12-14 14:14 ` [PATCH 1/3] sched/isolation: Make NO_HZ_FULL select CPU_ISOLATION Frederic Weisbecker
  2017-12-14 14:14 ` [PATCH 2/3] sched/isolation: Enable CONFIG_CPU_ISOLATION=y by default Frederic Weisbecker
@ 2017-12-14 14:14 ` Frederic Weisbecker
  2017-12-14 18:16 ` [GIT PULL] Nohz / isolation fixes Frederic Weisbecker
  3 siblings, 0 replies; 6+ messages in thread
From: Frederic Weisbecker @ 2017-12-14 14:14 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, Paul E. McKenney, Peter Zijlstra, Linus Torvalds,
	Chris Metcalf, John Stultz, Frederic Weisbecker, Thomas Gleixner,
	Luiz Capitulino, Christoph Lameter, Wanpeng Li, Mike Galbraith,
	Rik van Riel, kernel test robot

From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>

The "isolcpus=" and "nohz_full=" boot parameters depend on CPU Isolation
support. Let's document that.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Chris Metcalf <cmetcalf@mellanox.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Wanpeng Li <kernellwp@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: John Stultz <john.stultz@linaro.org>
---
 Documentation/admin-guide/kernel-parameters.rst | 1 +
 Documentation/admin-guide/kernel-parameters.txt | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.rst b/Documentation/admin-guide/kernel-parameters.rst
index b2598cc..7242cbd 100644
--- a/Documentation/admin-guide/kernel-parameters.rst
+++ b/Documentation/admin-guide/kernel-parameters.rst
@@ -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.
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 6571fbf..1683107 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -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
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [GIT PULL] Nohz / isolation fixes
  2017-12-14 14:14 [GIT PULL] Nohz / isolation fixes Frederic Weisbecker
                   ` (2 preceding siblings ...)
  2017-12-14 14:14 ` [PATCH 3/3] sched/isolation: Document boot parameters dependency on CONFIG_CPU_ISOLATION Frederic Weisbecker
@ 2017-12-14 18:16 ` Frederic Weisbecker
  3 siblings, 0 replies; 6+ messages in thread
From: Frederic Weisbecker @ 2017-12-14 18:16 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, Frederic Weisbecker, Peter Zijlstra, Linus Torvalds,
	Chris Metcalf, John Stultz, Thomas Gleixner, Luiz Capitulino,
	Christoph Lameter, Paul E . McKenney, Wanpeng Li, Mike Galbraith,
	Rik van Riel

2017-12-14 15:14 UTC+01:00, Frederic Weisbecker <frederic@kernel.org>:
> 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

Sorry please disregard this pull request, I messed up with the
autorship. I'm sending another version.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 3/3] sched/isolation: Document boot parameters dependency on CONFIG_CPU_ISOLATION
  2017-12-14 18:18 [GIT PULL] Nohz and isolation fixes v2 Frederic Weisbecker
@ 2017-12-14 18:18 ` Frederic Weisbecker
  0 siblings, 0 replies; 6+ messages in thread
From: Frederic Weisbecker @ 2017-12-14 18:18 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, Frederic Weisbecker, Peter Zijlstra, Linus Torvalds,
	Chris Metcalf, John Stultz, Thomas Gleixner, Luiz Capitulino,
	Christoph Lameter, Paul E . McKenney, Wanpeng Li, Mike Galbraith,
	Rik van Riel, kernel test robot

The "isolcpus=" and "nohz_full=" boot parameters depend on CPU Isolation
support. Let's document that.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Chris Metcalf <cmetcalf@mellanox.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Wanpeng Li <kernellwp@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: John Stultz <john.stultz@linaro.org>
---
 Documentation/admin-guide/kernel-parameters.rst | 1 +
 Documentation/admin-guide/kernel-parameters.txt | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.rst b/Documentation/admin-guide/kernel-parameters.rst
index b2598cc..7242cbd 100644
--- a/Documentation/admin-guide/kernel-parameters.rst
+++ b/Documentation/admin-guide/kernel-parameters.rst
@@ -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.
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 6571fbf..1683107 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -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
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-12-14 18:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-14 14:14 [GIT PULL] Nohz / isolation fixes Frederic Weisbecker
2017-12-14 14:14 ` [PATCH 1/3] sched/isolation: Make NO_HZ_FULL select CPU_ISOLATION Frederic Weisbecker
2017-12-14 14:14 ` [PATCH 2/3] sched/isolation: Enable CONFIG_CPU_ISOLATION=y by default Frederic Weisbecker
2017-12-14 14:14 ` [PATCH 3/3] sched/isolation: Document boot parameters dependency on CONFIG_CPU_ISOLATION Frederic Weisbecker
2017-12-14 18:16 ` [GIT PULL] Nohz / isolation fixes Frederic Weisbecker
2017-12-14 18:18 [GIT PULL] Nohz and isolation fixes v2 Frederic Weisbecker
2017-12-14 18:18 ` [PATCH 3/3] sched/isolation: Document boot parameters dependency on CONFIG_CPU_ISOLATION Frederic Weisbecker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).