linux-stable/lib
Hyeonggon Yoo bf97ea76ea lib/Kconfig.debug: do not enable DEBUG_PREEMPT by default
commit cc6003916e upstream.

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%*

Link: https://lkml.kernel.org/r/20230121033942.350387-1-42.hyeyoo@gmail.com
Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Acked-by: Roman Gushchin <roman.gushchin@linux.dev>
Acked-by: Mel Gorman <mgorman@techsingularity.net>
Acked-by: Davidlohr Bueso <dave@stgolabs.net>
Cc: Ben Segall <bsegall@google.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Daniel Bristot de Oliveira <bristot@redhat.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Dennis Zhou <dennis@kernel.org>
Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Juri Lelli <juri.lelli@redhat.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Valentin Schneider <vschneid@redhat.com>
Cc: Vincent Guittot <vincent.guittot@linaro.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Luiz Capitulino <luizcap@amazon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-10-25 11:54:18 +02:00
..
842 kbuild: trace functions in subdirectories of lib/ 2020-08-10 01:32:59 +09:00
crypto crypto: lib - remove unneeded selection of XOR_BLOCKS 2022-09-05 10:28:55 +02:00
dim linux/dim: Do nothing if no time delta between samples 2023-05-30 12:57:45 +01:00
fonts lib/fonts: fix undefined behavior in bit shift for get_default_font 2023-01-14 10:15:17 +01:00
kunit kunit: make kunit_test_timeout compatible with comment 2022-04-08 14:40:04 +02:00
livepatch selftests/livepatch: better synchronize test_klp_callbacks_busy 2022-08-21 15:16:05 +02:00
lz4 lz4: fix LZ4_decompress_safe_partial read out of bound 2022-04-13 21:01:08 +02:00
lzo kbuild: trace functions in subdirectories of lib/ 2020-08-10 01:32:59 +09:00
math lib/math/rational.c: fix divide by zero 2021-07-14 16:56:51 +02:00
mpi crypto: lib/mpi - avoid null pointer deref in mpi_cmp_ui() 2023-09-23 11:01:06 +02:00
pldmfw
raid6 lib/raid6/test/Makefile: Use $(pound) instead of \# for Make 4.3 2022-04-08 14:40:31 +02:00
reed_solomon kbuild: trace functions in subdirectories of lib/ 2020-08-10 01:32:59 +09:00
vdso lib/vdso: use "grep -E" instead of "egrep" 2022-12-02 17:40:02 +01:00
xz lib/xz: Validate the value before assigning it to an enum variable 2021-11-18 14:03:58 +01:00
zlib_deflate kbuild: trace functions in subdirectories of lib/ 2020-08-10 01:32:59 +09:00
zlib_dfltcc zlib: move EXPORT_SYMBOL() and MODULE_LICENSE() out of dfltcc_syms.c 2021-01-06 14:56:51 +01:00
zlib_inflate kbuild: trace functions in subdirectories of lib/ 2020-08-10 01:32:59 +09:00
zstd lib: Revert use of fallthrough pseudo-keyword in lib/ 2020-08-24 14:17:44 -07:00
.gitignore
argv_split.c
ashldi3.c
ashrdi3.c
asn1_decoder.c lib: Revert use of fallthrough pseudo-keyword in lib/ 2020-08-24 14:17:44 -07:00
assoc_array.c assoc_array: Fix BUG_ON during garbage collect 2022-06-06 08:42:41 +02:00
atomic64.c
atomic64_test.c
audit.c
bcd.c
bch.c
bitfield_kunit.c lib: kunit: Fix compilation test when using TEST_BIT_FIELD_COMPILE 2020-10-16 13:25:14 -06:00
bitmap.c lib: bitmap: provide devm_bitmap_alloc() and devm_bitmap_zalloc() 2022-08-21 15:15:45 +02:00
bitrev.c
bootconfig.c lib/bootconfig: Fix to remove tailing spaces after value 2020-09-21 21:50:09 -04:00
bsearch.c
btree.c
bucket_locks.c
bug.c bug: Remove redundant condition check in report_bug 2021-05-14 09:50:32 +02:00
build_OID_registry
bust_spinlocks.c
check_signature.c
checksum.c unify generic instances of csum_partial_copy_nocheck() 2020-08-20 15:45:14 -04:00
clz_ctz.c lib/clz_ctz.c: Fix __clzdi2() and __ctzdi2() for 32-bit kernels 2023-08-30 16:23:16 +02:00
clz_tab.c
cmdline.c lib: Revert use of fallthrough pseudo-keyword in lib/ 2020-08-24 14:17:44 -07:00
cmpdi2.c
compat_audit.c
cpu_rmap.c lib: cpu_rmap: Fix potential use-after-free in irq_cpu_rmap_release() 2023-06-14 11:09:45 +02:00
cpumask.c Revert "lib: Restrict cpumask_local_spread to houskeeping CPUs" 2021-02-17 11:02:24 +01:00
crc-ccitt.c
crc-itu-t.c
crc-t10dif.c
crc4.c
crc7.c
crc8.c
crc16.c
crc32.c lib/crc32.c: fix trivial typo in preprocessor condition 2020-10-16 11:11:20 -07:00
crc32defs.h
crc32test.c lib/crc32test: remove extra local_irq_disable/enable 2020-11-02 12:14:19 -08:00
crc64.c lib/: replace HTTP links with HTTPS ones 2020-08-12 10:58:00 -07:00
ctype.c
debug_info.c
debug_locks.c locking/lockdep: Improve noinstr vs errors 2021-06-30 08:47:18 -04:00
debugobjects.c debugobjects: Recheck debug_objects_enabled before reporting 2023-07-27 08:44:36 +02:00
dec_and_lock.c
decompress.c
decompress_bunzip2.c lib: decompress_bunzip2: delete duplicated words 2020-10-16 11:11:19 -07:00
decompress_inflate.c
decompress_unlz4.c lib/decompress_unlz4.c: correctly handle zero-padding around initrds. 2021-07-20 16:05:46 +02:00
decompress_unlzma.c lib/: replace HTTP links with HTTPS ones 2020-08-12 10:58:00 -07:00
decompress_unlzo.c
decompress_unxz.c lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression 2021-11-18 14:03:58 +01:00
decompress_unzstd.c lib: decompress_unzstd: Limit output size 2020-09-03 10:13:09 +02:00
devres.c driver core: platform: Document return type of more functions 2020-09-10 18:30:01 +02:00
digsig.c
dump_stack.c
dynamic_debug.c dyndbg: drop EXPORTed dynamic_debug_exec_queries 2022-10-26 13:25:34 +02:00
dynamic_queue_limits.c lib: dynamic_queue_limits: delete duplicated words + fix typo 2020-10-16 11:11:20 -07:00
earlycpio.c lib: earlycpio: delete duplicated words 2020-10-16 11:11:20 -07:00
errname.c printf: fix errname.c list 2023-03-11 16:39:40 +01:00
error-inject.c
errseq.c
extable.c
fault-inject-usercopy.c lib, include/linux: add usercopy failure capability 2020-10-16 11:11:22 -07:00
fault-inject.c
fdt.c
fdt_addresses.c
fdt_empty_tree.c
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
find_bit.c kernel.h: split out min()/max() et al. helpers 2020-10-16 11:11:19 -07:00
find_bit_benchmark.c
flex_proportions.c
gen_crc32table.c
gen_crc64table.c
genalloc.c lib/genalloc: fix the overflow when size is too big 2021-01-12 20:18:16 +01:00
generic-radix-tree.c
glob.c lib: Revert use of fallthrough pseudo-keyword in lib/ 2020-08-24 14:17:44 -07:00
globtest.c
hexdump.c hex2bin: fix access beyond string end 2022-05-09 09:04:59 +02:00
hweight.c
idr.c idr: fix param name in idr_alloc_cyclic() doc 2023-09-19 12:20:27 +02:00
inflate.c
interval_tree.c
interval_tree_test.c
iomap.c iomap: constify ioreadX() iomem argument (as in generic implementation) 2020-08-14 19:56:57 -07:00
iomap_copy.c
iommu-helper.c
iov_iter.c mm/highmem: Lift memcpy_[to|from]_page to core 2023-01-14 10:16:42 +01:00
irq_poll.c
irq_regs.c
is_single_threaded.c
kasprintf.c
Kconfig crypto: memneq - move into lib/ 2022-06-22 14:13:18 +02:00
Kconfig.debug lib/Kconfig.debug: do not enable DEBUG_PREEMPT by default 2023-10-25 11:54:18 +02:00
Kconfig.kasan KASAN: port KASAN Tests to KUnit 2020-10-13 18:38:32 -07:00
Kconfig.kcsan kcsan: Test support for compound instrumentation 2020-08-24 15:09:58 -07:00
Kconfig.kgdb kgdb: Honour the kprobe blocklist when setting breakpoints 2020-09-28 12:14:08 +01:00
Kconfig.ubsan ubsan: introduce CONFIG_UBSAN_LOCAL_BOUNDS for Clang 2020-10-16 11:11:22 -07:00
kfifo.c
klist.c
kobject.c kobject: Add sanity check for kset->kobj.ktype in kset_register() 2023-09-23 11:01:08 +02:00
kobject_uevent.c kobject_uevent: remove warning in init_uevent_argv() 2021-05-19 10:13:18 +02:00
kstrtox.c kernel.h: split out kstrtox() and simple_strtox() to a separate header 2023-06-21 15:45:35 +02:00
kstrtox.h lib: vsprintf: Fix handling of number field widths in vsscanf 2021-07-14 16:55:57 +02:00
libcrc32c.c lib: libcrc32c: delete duplicated words 2020-10-16 11:11:19 -07:00
linear_ranges.c
list-test.c
list_debug.c lib/list_debug.c: Detect uninitialized lists 2022-08-25 11:38:18 +02:00
list_sort.c treewide: Change list_sort to use const pointers 2021-09-30 10:11:04 +02:00
llist.c
locking-selftest-hardirq.h
locking-selftest-mutex.h
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-rtmutex.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h
locking-selftest.c lockdep/selftests: Fix selftests vs PROVE_RAW_LOCK_NESTING 2021-07-14 16:56:10 +02:00
lockref.c lockref: stop doing cpu_relax in the cmpxchg loop 2023-02-01 08:23:18 +01:00
logic_pio.c PCI: Fix pci_register_io_range() memory leak 2021-03-17 17:06:25 +01:00
lru_cache.c
lshrdi3.c
Makefile crypto: memneq - move into lib/ 2022-06-22 14:13:18 +02:00
memcat_p.c
memneq.c crypto: memneq - move into lib/ 2022-06-22 14:13:18 +02:00
memory-notifier-error-inject.c
memregion.c lib/memregion.c: include memregion.h 2020-09-26 10:33:57 -07:00
memweight.c
muldi3.c
net_utils.c
netdev-notifier-error-inject.c
nlattr.c netlink: prevent potential spectre v1 gadgets 2023-02-01 08:23:23 +01:00
nmi_backtrace.c lib: Add backtrace_idle parameter to force backtrace of idle CPUs 2020-08-24 14:24:25 -07:00
nodemask.c nodemask: Fix return values to be unsigned 2022-06-14 18:32:45 +02:00
notifier-error-inject.c lib/notifier-error-inject: fix error when writing -errno to debugfs file 2023-01-14 10:15:19 +01:00
notifier-error-inject.h
objagg.c
of-reconfig-notifier-error-inject.c
oid_registry.c
once.c once: add DO_ONCE_SLOW() for sleepable contexts 2022-10-26 13:25:23 +02:00
packing.c
parman.c
parser.c kernel.h: split out kstrtox() and simple_strtox() to a separate header 2023-06-21 15:45:35 +02:00
pci_iomap.c
percpu-refcount.c percpu_ref_init(): clean ->percpu_count_ref on failure 2022-06-06 08:42:40 +02:00
percpu_counter.c lib/percpu_counter.c: use helper macro abs() 2020-10-16 11:11:20 -07:00
percpu_test.c
plist.c
pm-notifier-error-inject.c
radix-tree.c radix tree: remove unused variable 2023-08-30 16:23:16 +02:00
random32.c random: replace custom notifier chain with standard one 2022-05-30 09:33:38 +02:00
ratelimit.c ratelimit: Fix data-races in ___ratelimit(). 2022-08-31 17:15:20 +02:00
rbtree.c lib/: replace HTTP links with HTTPS ones 2020-08-12 10:58:00 -07:00
rbtree_test.c
refcount.c
rhashtable.c
sbitmap.c
scatterlist.c lib/scatterlist: use consistent sg_copy_buffer() return type 2020-10-29 08:55:45 -06:00
seq_buf.c seq_buf: Fix overflow in seq_buf_putmem_hex() 2021-07-19 09:45:00 +02:00
sg_pool.c
sg_split.c
sha1.c lib/crypto: sha1: re-roll loops to reduce code size 2022-05-30 09:33:26 +02:00
show_mem.c
siphash.c siphash: use one source of truth for siphash permutations 2022-05-30 09:33:43 +02:00
smp_processor_id.c lib/smp_processor_id: fix imbalanced instrumentation_end() call 2022-08-21 15:16:08 +02:00
sort.c
stackdepot.c lib: stackdepot: turn depot_lock spinlock to raw_spinlock 2021-05-22 11:40:55 +02:00
stmp_device.c
string.c lib/string.c: implement stpcpy 2020-09-26 10:33:57 -07:00
string_helpers.c lib: string_helpers: provide kfree_strarray() 2020-09-30 10:50:30 +02:00
strncpy_from_user.c lib/strncpy_from_user.c: Mask out bytes after NUL terminator. 2020-11-19 11:56:16 -08:00
strnlen_user.c
syscall.c lib/syscall: fix syscall registers retrieval on 32-bit platforms 2020-12-03 09:52:44 -08:00
test-kstrtox.c
test-string_helpers.c
test_bitmap.c test_bitmap: remove user bitmap tests 2020-09-08 22:21:33 -04:00
test_bitops.c lib/test_bitops: do the full test during module init 2020-08-12 10:57:59 -07:00
test_bits.c lib/test_bits.c: add tests of GENMASK 2020-08-12 10:58:00 -07:00
test_blackhole_dev.c
test_bpf.c test_bpf: fix incorrect netdev features 2022-08-21 15:15:41 +02:00
test_debug_virtual.c
test_firmware.c test_firmware: return ENOMEM instead of ENOSPC on failed memory allocation 2023-07-27 08:44:06 +02:00
test_fpu.c
test_free_pages.c mm/page_alloc.c: fix freeing non-compound pages 2020-10-13 18:38:33 -07:00
test_hash.c
test_hexdump.c
test_hmm.c mm/hmm.c: allow VM_MIXEDMAP to work with hmm_range_fault 2022-01-27 10:54:36 +01:00
test_hmm_uapi.h
test_ida.c
test_kasan.c kasan: fix unit tests with CONFIG_UBSAN_LOCAL_BOUNDS enabled 2021-05-19 10:13:11 +02:00
test_kasan_module.c KASAN: port KASAN Tests to KUnit 2020-10-13 18:38:32 -07:00
test_kmod.c lib: cleanup kstrto*() usage 2023-06-21 15:45:35 +02:00
test_linear_ranges.c
test_list_sort.c treewide: Change list_sort to use const pointers 2021-09-30 10:11:04 +02:00
test_lockup.c lib/test_lockup: fix kernel pointer check for separate address spaces 2022-04-08 14:40:35 +02:00
test_memcat_p.c
test_meminit.c lib/test_meminit: fix off-by-one error in test_pages() 2023-10-25 11:54:13 +02:00
test_min_heap.c
test_module.c
test_objagg.c
test_overflow.c
test_parman.c
test_printf.c
test_rhashtable.c rhashtable: fix indentation of a continue statement 2020-09-20 14:10:06 -07:00
test_siphash.c
test_sort.c
test_stackinit.c lib/test_stackinit: Fix static initializer test 2021-09-18 13:40:37 +02:00
test_static_key_base.c
test_static_keys.c
test_string.c
test_strscpy.c
test_sysctl.c lib: test_sysctl: delete duplicated words 2020-10-16 11:11:20 -07:00
test_ubsan.c ubsan: remove CONFIG_UBSAN_OBJECT_SIZE 2022-04-13 21:01:10 +02:00
test_user_copy.c
test_uuid.c
test_vmalloc.c
test_xarray.c XArray: Fix xas_create_range() when multi-order entry present 2022-04-08 14:40:40 +02:00
textsearch.c
timerqueue.c
ts_bm.c lib/ts_bm: reset initial match offset for every block of text 2023-07-27 08:43:43 +02:00
ts_fsm.c lib: Revert use of fallthrough pseudo-keyword in lib/ 2020-08-24 14:17:44 -07:00
ts_kmp.c
ubsan.c panic: Consolidate open-coded panic_on_warn checks 2023-02-01 08:23:20 +01:00
ubsan.h ubsan: implement __ubsan_handle_alignment_assumption 2021-02-17 11:02:24 +01:00
ucmpdi2.c
ucs2_string.c
usercopy.c uaccess: Add speculation barrier to copy_from_user() 2023-02-25 11:55:03 +01:00
uuid.c
vsprintf.c random: replace custom notifier chain with standard one 2022-05-30 09:33:38 +02:00
win_minmax.c
xarray.c XArray: Update the LRU list in xas_split() 2022-04-08 14:40:40 +02:00
xxhash.c lib/: replace HTTP links with HTTPS ones 2020-08-12 10:58:00 -07:00