All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH mm-unstable] lib/Kconfig.debug: do not enable DEBUG_PREEMPT by default
@ 2023-01-21  3:39 Hyeonggon Yoo
  2023-01-21 11:29 ` Vlastimil Babka
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Hyeonggon Yoo @ 2023-01-21  3:39 UTC (permalink / raw)
  To: Andrew Morton, Christoph Lameter, Pekka Enberg, David Rientjes,
	Joonsoo Kim, Vlastimil Babka, Roman Gushchin
  Cc: Ingo Molnar, Johannes Weiner, Michal Hocko, Shakeel Butt,
	Muchun Song, Matthew Wilcox, Hyeonggon Yoo, linux-mm,
	linux-kernel

In workloads where this_cpu operations are frequently performed,
enabling DEBUG_PREEMPT may result in significant increase in
runtime overhead due to frequent invocation of
__this_cpu_preempt_check() function.

This can be demonstrated through benchmarks such as hackbench where this
configuration results in a 10% reduction in performance, primarily due to
the added overhead within memcg charging path.

Therefore, do not to enable DEBUG_PREEMPT by default and make users aware
of its potential impact on performance in some workloads.

hackbench-process-sockets
		      debug_preempt	 no_debug_preempt
Amean     1       0.4743 (   0.00%)      0.4295 *   9.45%*
Amean     4       1.4191 (   0.00%)      1.2650 *  10.86%*
Amean     7       2.2677 (   0.00%)      2.0094 *  11.39%*
Amean     12      3.6821 (   0.00%)      3.2115 *  12.78%*
Amean     21      6.6752 (   0.00%)      5.7956 *  13.18%*
Amean     30      9.6646 (   0.00%)      8.5197 *  11.85%*
Amean     48     15.3363 (   0.00%)     13.5559 *  11.61%*
Amean     79     24.8603 (   0.00%)     22.0597 *  11.27%*
Amean     96     30.1240 (   0.00%)     26.8073 *  11.01%*

Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
---
 lib/Kconfig.debug | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index ddbfac2adf9c..f6f845a4b9ec 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1176,13 +1176,16 @@ config DEBUG_TIMEKEEPING
 config DEBUG_PREEMPT
 	bool "Debug preemptible kernel"
 	depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT
-	default y
 	help
 	  If you say Y here then the kernel will use a debug variant of the
 	  commonly used smp_processor_id() function and will print warnings
 	  if kernel code uses it in a preemption-unsafe way. Also, the kernel
 	  will detect preemption count underflows.
 
+	  This option has potential to introduce high runtime overhead,
+	  depending on workload as it triggers debugging routines for each
+	  this_cpu operation. It should only be used for debugging purposes.
+
 menu "Lock Debugging (spinlocks, mutexes, etc...)"
 
 config LOCK_DEBUGGING_SUPPORT
-- 
2.34.1


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

end of thread, other threads:[~2023-02-02  3:37 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-21  3:39 [PATCH mm-unstable] lib/Kconfig.debug: do not enable DEBUG_PREEMPT by default Hyeonggon Yoo
2023-01-21 11:29 ` Vlastimil Babka
2023-01-21 11:54   ` Hyeonggon Yoo
2023-01-23  8:58     ` Michal Hocko
2023-01-25 15:41       ` Hyeonggon Yoo
2023-01-25  9:51         ` Michal Hocko
2023-01-27 11:43           ` Hyeonggon Yoo
2023-01-27 12:33             ` Michal Hocko
2023-01-23 11:05     ` Christoph Lameter
2023-01-24 16:34       ` Hyeonggon Yoo
2023-01-23 14:01 ` Mel Gorman
2023-01-26  2:02 ` Roman Gushchin
2023-01-27 11:45   ` Hyeonggon Yoo
2023-02-02  3:09 ` Davidlohr Bueso

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.