xref: /linux/Documentation/admin-guide/sysctl/kernel.rst (revision 523d3cc4b6d1ae18bfa516345d48332d455181e6)
1===================================
2Documentation for /proc/sys/kernel/
3===================================
4
5.. See scripts/check-sysctl-docs to keep this up to date
6
7
8Copyright (c) 1998, 1999,  Rik van Riel <riel@nl.linux.org>
9
10Copyright (c) 2009,        Shen Feng<shen@cn.fujitsu.com>
11
12For general info and legal blurb, please look in
13Documentation/admin-guide/sysctl/index.rst.
14
15------------------------------------------------------------------------------
16
17This file contains documentation for the sysctl files in
18``/proc/sys/kernel/``.
19
20The files in this directory can be used to tune and monitor
21miscellaneous and general things in the operation of the Linux
22kernel. Since some of the files *can* be used to screw up your
23system, it is advisable to read both documentation and source
24before actually making adjustments.
25
26Currently, these files might (depending on your configuration)
27show up in ``/proc/sys/kernel``:
28
29.. contents:: :local:
30
31
32acct
33====
34
35::
36
37    highwater lowwater frequency
38
39If BSD-style process accounting is enabled these values control
40its behaviour. If free space on filesystem where the log lives
41goes below ``lowwater``\ % accounting suspends. If free space gets
42above ``highwater``\ % accounting resumes. ``frequency`` determines
43how often do we check the amount of free space (value is in
44seconds). Default:
45
46::
47
48    4 2 30
49
50That is, suspend accounting if free space drops below 2%; resume it
51if it increases to at least 4%; consider information about amount of
52free space valid for 30 seconds.
53
54
55acpi_video_flags
56================
57
58See Documentation/power/video.rst. This allows the video resume mode to be set,
59in a similar fashion to the ``acpi_sleep`` kernel parameter, by
60combining the following values:
61
62= =======
631 s3_bios
642 s3_mode
654 s3_beep
66= =======
67
68arch
69====
70
71The machine hardware name, the same output as ``uname -m``
72(e.g. ``x86_64`` or ``aarch64``).
73
74auto_msgmni
75===========
76
77This variable has no effect and may be removed in future kernel
78releases. Reading it always returns 0.
79Up to Linux 3.17, it enabled/disabled automatic recomputing of
80`msgmni`_
81upon memory add/remove or upon IPC namespace creation/removal.
82Echoing "1" into this file enabled msgmni automatic recomputing.
83Echoing "0" turned it off. The default value was 1.
84
85
86bootloader_type (x86 only)
87==========================
88
89This gives the bootloader type number as indicated by the bootloader,
90shifted left by 4, and OR'd with the low four bits of the bootloader
91version.  The reason for this encoding is that this used to match the
92``type_of_loader`` field in the kernel header; the encoding is kept for
93backwards compatibility.  That is, if the full bootloader type number
94is 0x15 and the full version number is 0x234, this file will contain
95the value 340 = 0x154.
96
97See the ``type_of_loader`` and ``ext_loader_type`` fields in
98Documentation/arch/x86/boot.rst for additional information.
99
100
101bootloader_version (x86 only)
102=============================
103
104The complete bootloader version number.  In the example above, this
105file will contain the value 564 = 0x234.
106
107See the ``type_of_loader`` and ``ext_loader_ver`` fields in
108Documentation/arch/x86/boot.rst for additional information.
109
110
111bpf_stats_enabled
112=================
113
114Controls whether the kernel should collect statistics on BPF programs
115(total time spent running, number of times run...). Enabling
116statistics causes a slight reduction in performance on each program
117run. The statistics can be seen using ``bpftool``.
118
119= ===================================
1200 Don't collect statistics (default).
1211 Collect statistics.
122= ===================================
123
124
125cad_pid
126=======
127
128This is the pid which will be signalled on reboot (notably, by
129Ctrl-Alt-Delete). Writing a value to this file which doesn't
130correspond to a running process will result in ``-ESRCH``.
131
132See also `ctrl-alt-del`_.
133
134
135cap_last_cap
136============
137
138Highest valid capability of the running kernel.  Exports
139``CAP_LAST_CAP`` from the kernel.
140
141
142.. _core_pattern:
143
144core_pattern
145============
146
147``core_pattern`` is used to specify a core dumpfile pattern name.
148
149* max length 127 characters; default value is "core"
150* ``core_pattern`` is used as a pattern template for the output
151  filename; certain string patterns (beginning with '%') are
152  substituted with their actual values.
153* backward compatibility with ``core_uses_pid``:
154
155	If ``core_pattern`` does not include "%p" (default does not)
156	and ``core_uses_pid`` is set, then .PID will be appended to
157	the filename.
158
159* corename format specifiers
160
161	========	==========================================
162	%<NUL>		'%' is dropped
163	%%		output one '%'
164	%p		pid
165	%P		global pid (init PID namespace)
166	%i		tid
167	%I		global tid (init PID namespace)
168	%u		uid (in initial user namespace)
169	%g		gid (in initial user namespace)
170	%d		dump mode, matches ``PR_SET_DUMPABLE`` and
171			``/proc/sys/fs/suid_dumpable``
172	%s		signal number
173	%t		UNIX time of dump
174	%h		hostname
175	%e		executable filename (may be shortened, could be changed by prctl etc)
176	%f      	executable filename
177	%E		executable path
178	%c		maximum size of core file by resource limit RLIMIT_CORE
179	%C		CPU the task ran on
180	%<OTHER>	both are dropped
181	========	==========================================
182
183* If the first character of the pattern is a '|', the kernel will treat
184  the rest of the pattern as a command to run.  The core dump will be
185  written to the standard input of that program instead of to a file.
186
187
188core_pipe_limit
189===============
190
191This sysctl is only applicable when `core_pattern`_ is configured to
192pipe core files to a user space helper (when the first character of
193``core_pattern`` is a '|', see above).
194When collecting cores via a pipe to an application, it is occasionally
195useful for the collecting application to gather data about the
196crashing process from its ``/proc/pid`` directory.
197In order to do this safely, the kernel must wait for the collecting
198process to exit, so as not to remove the crashing processes proc files
199prematurely.
200This in turn creates the possibility that a misbehaving userspace
201collecting process can block the reaping of a crashed process simply
202by never exiting.
203This sysctl defends against that.
204It defines how many concurrent crashing processes may be piped to user
205space applications in parallel.
206If this value is exceeded, then those crashing processes above that
207value are noted via the kernel log and their cores are skipped.
2080 is a special value, indicating that unlimited processes may be
209captured in parallel, but that no waiting will take place (i.e. the
210collecting process is not guaranteed access to ``/proc/<crashing
211pid>/``).
212This value defaults to 0.
213
214
215core_uses_pid
216=============
217
218The default coredump filename is "core".  By setting
219``core_uses_pid`` to 1, the coredump filename becomes core.PID.
220If `core_pattern`_ does not include "%p" (default does not)
221and ``core_uses_pid`` is set, then .PID will be appended to
222the filename.
223
224
225ctrl-alt-del
226============
227
228When the value in this file is 0, ctrl-alt-del is trapped and
229sent to the ``init(1)`` program to handle a graceful restart.
230When, however, the value is > 0, Linux's reaction to a Vulcan
231Nerve Pinch (tm) will be an immediate reboot, without even
232syncing its dirty buffers.
233
234Note:
235  when a program (like dosemu) has the keyboard in 'raw'
236  mode, the ctrl-alt-del is intercepted by the program before it
237  ever reaches the kernel tty layer, and it's up to the program
238  to decide what to do with it.
239
240
241dmesg_restrict
242==============
243
244This toggle indicates whether unprivileged users are prevented
245from using ``dmesg(8)`` to view messages from the kernel's log
246buffer.
247When ``dmesg_restrict`` is set to 0 there are no restrictions.
248When ``dmesg_restrict`` is set to 1, users must have
249``CAP_SYSLOG`` to use ``dmesg(8)``.
250
251The kernel config option ``CONFIG_SECURITY_DMESG_RESTRICT`` sets the
252default value of ``dmesg_restrict``.
253
254
255domainname & hostname
256=====================
257
258These files can be used to set the NIS/YP domainname and the
259hostname of your box in exactly the same way as the commands
260domainname and hostname, i.e.::
261
262	# echo "darkstar" > /proc/sys/kernel/hostname
263	# echo "mydomain" > /proc/sys/kernel/domainname
264
265has the same effect as::
266
267	# hostname "darkstar"
268	# domainname "mydomain"
269
270Note, however, that the classic darkstar.frop.org has the
271hostname "darkstar" and DNS (Internet Domain Name Server)
272domainname "frop.org", not to be confused with the NIS (Network
273Information Service) or YP (Yellow Pages) domainname. These two
274domain names are in general different. For a detailed discussion
275see the ``hostname(1)`` man page.
276
277
278firmware_config
279===============
280
281See Documentation/driver-api/firmware/fallback-mechanisms.rst.
282
283The entries in this directory allow the firmware loader helper
284fallback to be controlled:
285
286* ``force_sysfs_fallback``, when set to 1, forces the use of the
287  fallback;
288* ``ignore_sysfs_fallback``, when set to 1, ignores any fallback.
289
290
291ftrace_dump_on_oops
292===================
293
294Determines whether ``ftrace_dump()`` should be called on an oops (or
295kernel panic). This will output the contents of the ftrace buffers to
296the console.  This is very useful for capturing traces that lead to
297crashes and outputting them to a serial console.
298
299======================= ===========================================
3000                       Disabled (default).
3011                       Dump buffers of all CPUs.
3022(orig_cpu)             Dump the buffer of the CPU that triggered the
303                        oops.
304<instance>              Dump the specific instance buffer on all CPUs.
305<instance>=2(orig_cpu)  Dump the specific instance buffer on the CPU
306                        that triggered the oops.
307======================= ===========================================
308
309Multiple instance dump is also supported, and instances are separated
310by commas. If global buffer also needs to be dumped, please specify
311the dump mode (1/2/orig_cpu) first for global buffer.
312
313So for example to dump "foo" and "bar" instance buffer on all CPUs,
314user can::
315
316  echo "foo,bar" > /proc/sys/kernel/ftrace_dump_on_oops
317
318To dump global buffer and "foo" instance buffer on all
319CPUs along with the "bar" instance buffer on CPU that triggered the
320oops, user can::
321
322  echo "1,foo,bar=2" > /proc/sys/kernel/ftrace_dump_on_oops
323
324ftrace_enabled, stack_tracer_enabled
325====================================
326
327See Documentation/trace/ftrace.rst.
328
329
330hardlockup_all_cpu_backtrace
331============================
332
333This value controls the hard lockup detector behavior when a hard
334lockup condition is detected as to whether or not to gather further
335debug information. If enabled, arch-specific all-CPU stack dumping
336will be initiated.
337
338= ============================================
3390 Do nothing. This is the default behavior.
3401 On detection capture more debug information.
341= ============================================
342
343
344hardlockup_panic
345================
346
347This parameter can be used to control whether the kernel panics
348when a hard lockup is detected.
349
350= ===========================
3510 Don't panic on hard lockup.
3521 Panic on hard lockup.
353= ===========================
354
355See Documentation/admin-guide/lockup-watchdogs.rst for more information.
356This can also be set using the nmi_watchdog kernel parameter.
357
358
359hotplug
360=======
361
362Path for the hotplug policy agent.
363Default value is ``CONFIG_UEVENT_HELPER_PATH``, which in turn defaults
364to the empty string.
365
366This file only exists when ``CONFIG_UEVENT_HELPER`` is enabled. Most
367modern systems rely exclusively on the netlink-based uevent source and
368don't need this.
369
370
371hung_task_all_cpu_backtrace
372===========================
373
374If this option is set, the kernel will send an NMI to all CPUs to dump
375their backtraces when a hung task is detected. This file shows up if
376CONFIG_DETECT_HUNG_TASK and CONFIG_SMP are enabled.
377
3780: Won't show all CPUs backtraces when a hung task is detected.
379This is the default behavior.
380
3811: Will non-maskably interrupt all CPUs and dump their backtraces when
382a hung task is detected.
383
384
385hung_task_panic
386===============
387
388Controls the kernel's behavior when a hung task is detected.
389This file shows up if ``CONFIG_DETECT_HUNG_TASK`` is enabled.
390
391= =================================================
3920 Continue operation. This is the default behavior.
3931 Panic immediately.
394= =================================================
395
396
397hung_task_check_count
398=====================
399
400The upper bound on the number of tasks that are checked.
401This file shows up if ``CONFIG_DETECT_HUNG_TASK`` is enabled.
402
403
404hung_task_detect_count
405======================
406
407Indicates the total number of tasks that have been detected as hung since
408the system boot.
409
410This file shows up if ``CONFIG_DETECT_HUNG_TASK`` is enabled.
411
412
413hung_task_timeout_secs
414======================
415
416When a task in D state did not get scheduled
417for more than this value report a warning.
418This file shows up if ``CONFIG_DETECT_HUNG_TASK`` is enabled.
419
4200 means infinite timeout, no checking is done.
421
422Possible values to set are in range {0:``LONG_MAX``/``HZ``}.
423
424
425hung_task_check_interval_secs
426=============================
427
428Hung task check interval. If hung task checking is enabled
429(see `hung_task_timeout_secs`_), the check is done every
430``hung_task_check_interval_secs`` seconds.
431This file shows up if ``CONFIG_DETECT_HUNG_TASK`` is enabled.
432
4330 (default) means use ``hung_task_timeout_secs`` as checking
434interval.
435
436Possible values to set are in range {0:``LONG_MAX``/``HZ``}.
437
438
439hung_task_warnings
440==================
441
442The maximum number of warnings to report. During a check interval
443if a hung task is detected, this value is decreased by 1.
444When this value reaches 0, no more warnings will be reported.
445This file shows up if ``CONFIG_DETECT_HUNG_TASK`` is enabled.
446
447-1: report an infinite number of warnings.
448
449
450hyperv_record_panic_msg
451=======================
452
453Controls whether the panic kmsg data should be reported to Hyper-V.
454
455= =========================================================
4560 Do not report panic kmsg data.
4571 Report the panic kmsg data. This is the default behavior.
458= =========================================================
459
460
461ignore-unaligned-usertrap
462=========================
463
464On architectures where unaligned accesses cause traps, and where this
465feature is supported (``CONFIG_SYSCTL_ARCH_UNALIGN_NO_WARN``;
466currently, ``arc``, ``parisc`` and ``loongarch``), controls whether all
467unaligned traps are logged.
468
469= =============================================================
4700 Log all unaligned accesses.
4711 Only warn the first time a process traps. This is the default
472  setting.
473= =============================================================
474
475See also `unaligned-trap`_.
476
477io_uring_disabled
478=================
479
480Prevents all processes from creating new io_uring instances. Enabling this
481shrinks the kernel's attack surface.
482
483= ======================================================================
4840 All processes can create io_uring instances as normal. This is the
485  default setting.
4861 io_uring creation is disabled (io_uring_setup() will fail with
487  -EPERM) for unprivileged processes not in the io_uring_group group.
488  Existing io_uring instances can still be used.  See the
489  documentation for io_uring_group for more information.
4902 io_uring creation is disabled for all processes. io_uring_setup()
491  always fails with -EPERM. Existing io_uring instances can still be
492  used.
493= ======================================================================
494
495
496io_uring_group
497==============
498
499When io_uring_disabled is set to 1, a process must either be
500privileged (CAP_SYS_ADMIN) or be in the io_uring_group group in order
501to create an io_uring instance.  If io_uring_group is set to -1 (the
502default), only processes with the CAP_SYS_ADMIN capability may create
503io_uring instances.
504
505
506kexec_load_disabled
507===================
508
509A toggle indicating if the syscalls ``kexec_load`` and
510``kexec_file_load`` have been disabled.
511This value defaults to 0 (false: ``kexec_*load`` enabled), but can be
512set to 1 (true: ``kexec_*load`` disabled).
513Once true, kexec can no longer be used, and the toggle cannot be set
514back to false.
515This allows a kexec image to be loaded before disabling the syscall,
516allowing a system to set up (and later use) an image without it being
517altered.
518Generally used together with the `modules_disabled`_ sysctl.
519
520kexec_load_limit_panic
521======================
522
523This parameter specifies a limit to the number of times the syscalls
524``kexec_load`` and ``kexec_file_load`` can be called with a crash
525image. It can only be set with a more restrictive value than the
526current one.
527
528== ======================================================
529-1 Unlimited calls to kexec. This is the default setting.
530N  Number of calls left.
531== ======================================================
532
533kexec_load_limit_reboot
534=======================
535
536Similar functionality as ``kexec_load_limit_panic``, but for a normal
537image.
538
539kptr_restrict
540=============
541
542This toggle indicates whether restrictions are placed on
543exposing kernel addresses via ``/proc`` and other interfaces.
544
545When ``kptr_restrict`` is set to 0 (the default) the address is hashed
546before printing.
547(This is the equivalent to %p.)
548
549When ``kptr_restrict`` is set to 1, kernel pointers printed using the
550%pK format specifier will be replaced with 0s unless the user has
551``CAP_SYSLOG`` and effective user and group ids are equal to the real
552ids.
553This is because %pK checks are done at read() time rather than open()
554time, so if permissions are elevated between the open() and the read()
555(e.g via a setuid binary) then %pK will not leak kernel pointers to
556unprivileged users.
557Note, this is a temporary solution only.
558The correct long-term solution is to do the permission checks at
559open() time.
560Consider removing world read permissions from files that use %pK, and
561using `dmesg_restrict`_ to protect against uses of %pK in ``dmesg(8)``
562if leaking kernel pointer values to unprivileged users is a concern.
563
564When ``kptr_restrict`` is set to 2, kernel pointers printed using
565%pK will be replaced with 0s regardless of privileges.
566
567
568modprobe
569========
570
571The full path to the usermode helper for autoloading kernel modules,
572by default ``CONFIG_MODPROBE_PATH``, which in turn defaults to
573"/sbin/modprobe".  This binary is executed when the kernel requests a
574module.  For example, if userspace passes an unknown filesystem type
575to mount(), then the kernel will automatically request the
576corresponding filesystem module by executing this usermode helper.
577This usermode helper should insert the needed module into the kernel.
578
579This sysctl only affects module autoloading.  It has no effect on the
580ability to explicitly insert modules.
581
582This sysctl can be used to debug module loading requests::
583
584    echo '#! /bin/sh' > /tmp/modprobe
585    echo 'echo "$@" >> /tmp/modprobe.log' >> /tmp/modprobe
586    echo 'exec /sbin/modprobe "$@"' >> /tmp/modprobe
587    chmod a+x /tmp/modprobe
588    echo /tmp/modprobe > /proc/sys/kernel/modprobe
589
590Alternatively, if this sysctl is set to the empty string, then module
591autoloading is completely disabled.  The kernel will not try to
592execute a usermode helper at all, nor will it call the
593kernel_module_request LSM hook.
594
595If CONFIG_STATIC_USERMODEHELPER=y is set in the kernel configuration,
596then the configured static usermode helper overrides this sysctl,
597except that the empty string is still accepted to completely disable
598module autoloading as described above.
599
600modules_disabled
601================
602
603A toggle value indicating if modules are allowed to be loaded
604in an otherwise modular kernel.  This toggle defaults to off
605(0), but can be set true (1).  Once true, modules can be
606neither loaded nor unloaded, and the toggle cannot be set back
607to false.  Generally used with the `kexec_load_disabled`_ toggle.
608
609
610.. _msgmni:
611
612msgmax, msgmnb, and msgmni
613==========================
614
615``msgmax`` is the maximum size of an IPC message, in bytes. 8192 by
616default (``MSGMAX``).
617
618``msgmnb`` is the maximum size of an IPC queue, in bytes. 16384 by
619default (``MSGMNB``).
620
621``msgmni`` is the maximum number of IPC queues. 32000 by default
622(``MSGMNI``).
623
624All of these parameters are set per ipc namespace. The maximum number of bytes
625in POSIX message queues is limited by ``RLIMIT_MSGQUEUE``. This limit is
626respected hierarchically in the each user namespace.
627
628msg_next_id, sem_next_id, and shm_next_id (System V IPC)
629========================================================
630
631These three toggles allows to specify desired id for next allocated IPC
632object: message, semaphore or shared memory respectively.
633
634By default they are equal to -1, which means generic allocation logic.
635Possible values to set are in range {0:``INT_MAX``}.
636
637Notes:
638  1) kernel doesn't guarantee, that new object will have desired id. So,
639     it's up to userspace, how to handle an object with "wrong" id.
640  2) Toggle with non-default value will be set back to -1 by kernel after
641     successful IPC object allocation. If an IPC object allocation syscall
642     fails, it is undefined if the value remains unmodified or is reset to -1.
643
644
645ngroups_max
646===========
647
648Maximum number of supplementary groups, _i.e._ the maximum size which
649``setgroups`` will accept. Exports ``NGROUPS_MAX`` from the kernel.
650
651
652
653nmi_watchdog
654============
655
656This parameter can be used to control the NMI watchdog
657(i.e. the hard lockup detector) on x86 systems.
658
659= =================================
6600 Disable the hard lockup detector.
6611 Enable the hard lockup detector.
662= =================================
663
664The hard lockup detector monitors each CPU for its ability to respond to
665timer interrupts. The mechanism utilizes CPU performance counter registers
666that are programmed to generate Non-Maskable Interrupts (NMIs) periodically
667while a CPU is busy. Hence, the alternative name 'NMI watchdog'.
668
669The NMI watchdog is disabled by default if the kernel is running as a guest
670in a KVM virtual machine. This default can be overridden by adding::
671
672   nmi_watchdog=1
673
674to the guest kernel command line (see
675Documentation/admin-guide/kernel-parameters.rst).
676
677
678nmi_wd_lpm_factor (PPC only)
679============================
680
681Factor to apply to the NMI watchdog timeout (only when ``nmi_watchdog`` is
682set to 1). This factor represents the percentage added to
683``watchdog_thresh`` when calculating the NMI watchdog timeout during an
684LPM. The soft lockup timeout is not impacted.
685
686A value of 0 means no change. The default value is 200 meaning the NMI
687watchdog is set to 30s (based on ``watchdog_thresh`` equal to 10).
688
689
690numa_balancing
691==============
692
693Enables/disables and configures automatic page fault based NUMA memory
694balancing.  Memory is moved automatically to nodes that access it often.
695The value to set can be the result of ORing the following:
696
697= =================================
6980 NUMA_BALANCING_DISABLED
6991 NUMA_BALANCING_NORMAL
7002 NUMA_BALANCING_MEMORY_TIERING
701= =================================
702
703Or NUMA_BALANCING_NORMAL to optimize page placement among different
704NUMA nodes to reduce remote accessing.  On NUMA machines, there is a
705performance penalty if remote memory is accessed by a CPU. When this
706feature is enabled the kernel samples what task thread is accessing
707memory by periodically unmapping pages and later trapping a page
708fault. At the time of the page fault, it is determined if the data
709being accessed should be migrated to a local memory node.
710
711The unmapping of pages and trapping faults incur additional overhead that
712ideally is offset by improved memory locality but there is no universal
713guarantee. If the target workload is already bound to NUMA nodes then this
714feature should be disabled.
715
716Or NUMA_BALANCING_MEMORY_TIERING to optimize page placement among
717different types of memory (represented as different NUMA nodes) to
718place the hot pages in the fast memory.  This is implemented based on
719unmapping and page fault too.
720
721numa_balancing_promote_rate_limit_MBps
722======================================
723
724Too high promotion/demotion throughput between different memory types
725may hurt application latency.  This can be used to rate limit the
726promotion throughput.  The per-node max promotion throughput in MB/s
727will be limited to be no more than the set value.
728
729A rule of thumb is to set this to less than 1/10 of the PMEM node
730write bandwidth.
731
732oops_all_cpu_backtrace
733======================
734
735If this option is set, the kernel will send an NMI to all CPUs to dump
736their backtraces when an oops event occurs. It should be used as a last
737resort in case a panic cannot be triggered (to protect VMs running, for
738example) or kdump can't be collected. This file shows up if CONFIG_SMP
739is enabled.
740
7410: Won't show all CPUs backtraces when an oops is detected.
742This is the default behavior.
743
7441: Will non-maskably interrupt all CPUs and dump their backtraces when
745an oops event is detected.
746
747
748oops_limit
749==========
750
751Number of kernel oopses after which the kernel should panic when
752``panic_on_oops`` is not set. Setting this to 0 disables checking
753the count. Setting this to  1 has the same effect as setting
754``panic_on_oops=1``. The default value is 10000.
755
756
757osrelease, ostype & version
758===========================
759
760::
761
762  # cat osrelease
763  2.1.88
764  # cat ostype
765  Linux
766  # cat version
767  #5 Wed Feb 25 21:49:24 MET 1998
768
769The files ``osrelease`` and ``ostype`` should be clear enough.
770``version``
771needs a little more clarification however. The '#5' means that
772this is the fifth kernel built from this source base and the
773date behind it indicates the time the kernel was built.
774The only way to tune these values is to rebuild the kernel :-)
775
776
777overflowgid & overflowuid
778=========================
779
780if your architecture did not always support 32-bit UIDs (i.e. arm,
781i386, m68k, sh, and sparc32), a fixed UID and GID will be returned to
782applications that use the old 16-bit UID/GID system calls, if the
783actual UID or GID would exceed 65535.
784
785These sysctls allow you to change the value of the fixed UID and GID.
786The default is 65534.
787
788
789panic
790=====
791
792The value in this file determines the behaviour of the kernel on a
793panic:
794
795* if zero, the kernel will loop forever;
796* if negative, the kernel will reboot immediately;
797* if positive, the kernel will reboot after the corresponding number
798  of seconds.
799
800When you use the software watchdog, the recommended setting is 60.
801
802
803panic_on_io_nmi
804===============
805
806Controls the kernel's behavior when a CPU receives an NMI caused by
807an IO error.
808
809= ==================================================================
8100 Try to continue operation (default).
8111 Panic immediately. The IO error triggered an NMI. This indicates a
812  serious system condition which could result in IO data corruption.
813  Rather than continuing, panicking might be a better choice. Some
814  servers issue this sort of NMI when the dump button is pushed,
815  and you can use this option to take a crash dump.
816= ==================================================================
817
818
819panic_on_oops
820=============
821
822Controls the kernel's behaviour when an oops or BUG is encountered.
823
824= ===================================================================
8250 Try to continue operation.
8261 Panic immediately.  If the `panic` sysctl is also non-zero then the
827  machine will be rebooted.
828= ===================================================================
829
830
831panic_on_stackoverflow
832======================
833
834Controls the kernel's behavior when detecting the overflows of
835kernel, IRQ and exception stacks except a user stack.
836This file shows up if ``CONFIG_DEBUG_STACKOVERFLOW`` is enabled.
837
838= ==========================
8390 Try to continue operation.
8401 Panic immediately.
841= ==========================
842
843
844panic_on_unrecovered_nmi
845========================
846
847The default Linux behaviour on an NMI of either memory or unknown is
848to continue operation. For many environments such as scientific
849computing it is preferable that the box is taken out and the error
850dealt with than an uncorrected parity/ECC error get propagated.
851
852A small number of systems do generate NMIs for bizarre random reasons
853such as power management so the default is off. That sysctl works like
854the existing panic controls already in that directory.
855
856
857panic_on_warn
858=============
859
860Calls panic() in the WARN() path when set to 1.  This is useful to avoid
861a kernel rebuild when attempting to kdump at the location of a WARN().
862
863= ================================================
8640 Only WARN(), default behaviour.
8651 Call panic() after printing out WARN() location.
866= ================================================
867
868
869panic_print
870===========
871
872Bitmask for printing system info when panic happens. User can chose
873combination of the following bits:
874
875=====  ============================================
876bit 0  print all tasks info
877bit 1  print system memory info
878bit 2  print timer info
879bit 3  print locks info if ``CONFIG_LOCKDEP`` is on
880bit 4  print ftrace buffer
881bit 5  print all printk messages in buffer
882bit 6  print all CPUs backtrace (if available in the arch)
883bit 7  print only tasks in uninterruptible (blocked) state
884=====  ============================================
885
886So for example to print tasks and memory info on panic, user can::
887
888  echo 3 > /proc/sys/kernel/panic_print
889
890
891panic_on_rcu_stall
892==================
893
894When set to 1, calls panic() after RCU stall detection messages. This
895is useful to define the root cause of RCU stalls using a vmcore.
896
897= ============================================================
8980 Do not panic() when RCU stall takes place, default behavior.
8991 panic() after printing RCU stall messages.
900= ============================================================
901
902max_rcu_stall_to_panic
903======================
904
905When ``panic_on_rcu_stall`` is set to 1, this value determines the
906number of times that RCU can stall before panic() is called.
907
908When ``panic_on_rcu_stall`` is set to 0, this value is has no effect.
909
910perf_cpu_time_max_percent
911=========================
912
913Hints to the kernel how much CPU time it should be allowed to
914use to handle perf sampling events.  If the perf subsystem
915is informed that its samples are exceeding this limit, it
916will drop its sampling frequency to attempt to reduce its CPU
917usage.
918
919Some perf sampling happens in NMIs.  If these samples
920unexpectedly take too long to execute, the NMIs can become
921stacked up next to each other so much that nothing else is
922allowed to execute.
923
924===== ========================================================
9250     Disable the mechanism.  Do not monitor or correct perf's
926      sampling rate no matter how CPU time it takes.
927
9281-100 Attempt to throttle perf's sample rate to this
929      percentage of CPU.  Note: the kernel calculates an
930      "expected" length of each sample event.  100 here means
931      100% of that expected length.  Even if this is set to
932      100, you may still see sample throttling if this
933      length is exceeded.  Set to 0 if you truly do not care
934      how much CPU is consumed.
935===== ========================================================
936
937
938perf_event_paranoid
939===================
940
941Controls use of the performance events system by unprivileged
942users (without CAP_PERFMON).  The default value is 2.
943
944For backward compatibility reasons access to system performance
945monitoring and observability remains open for CAP_SYS_ADMIN
946privileged processes but CAP_SYS_ADMIN usage for secure system
947performance monitoring and observability operations is discouraged
948with respect to CAP_PERFMON use cases.
949
950===  ==================================================================
951 -1  Allow use of (almost) all events by all users.
952
953     Ignore mlock limit after perf_event_mlock_kb without
954     ``CAP_IPC_LOCK``.
955
956>=0  Disallow ftrace function tracepoint by users without
957     ``CAP_PERFMON``.
958
959     Disallow raw tracepoint access by users without ``CAP_PERFMON``.
960
961>=1  Disallow CPU event access by users without ``CAP_PERFMON``.
962
963>=2  Disallow kernel profiling by users without ``CAP_PERFMON``.
964===  ==================================================================
965
966
967perf_event_max_stack
968====================
969
970Controls maximum number of stack frames to copy for (``attr.sample_type &
971PERF_SAMPLE_CALLCHAIN``) configured events, for instance, when using
972'``perf record -g``' or '``perf trace --call-graph fp``'.
973
974This can only be done when no events are in use that have callchains
975enabled, otherwise writing to this file will return ``-EBUSY``.
976
977The default value is 127.
978
979
980perf_event_mlock_kb
981===================
982
983Control size of per-cpu ring buffer not counted against mlock limit.
984
985The default value is 512 + 1 page
986
987
988perf_event_max_contexts_per_stack
989=================================
990
991Controls maximum number of stack frame context entries for
992(``attr.sample_type & PERF_SAMPLE_CALLCHAIN``) configured events, for
993instance, when using '``perf record -g``' or '``perf trace --call-graph fp``'.
994
995This can only be done when no events are in use that have callchains
996enabled, otherwise writing to this file will return ``-EBUSY``.
997
998The default value is 8.
999
1000
1001perf_user_access (arm64 and riscv only)
1002=======================================
1003
1004Controls user space access for reading perf event counters.
1005
1006arm64
1007=====
1008
1009The default value is 0 (access disabled).
1010
1011When set to 1, user space can read performance monitor counter registers
1012directly.
1013
1014See Documentation/arch/arm64/perf.rst for more information.
1015
1016riscv
1017=====
1018
1019When set to 0, user space access is disabled.
1020
1021The default value is 1, user space can read performance monitor counter
1022registers through perf, any direct access without perf intervention will trigger
1023an illegal instruction.
1024
1025When set to 2, which enables legacy mode (user space has direct access to cycle
1026and insret CSRs only). Note that this legacy value is deprecated and will be
1027removed once all user space applications are fixed.
1028
1029Note that the time CSR is always directly accessible to all modes.
1030
1031pid_max
1032=======
1033
1034PID allocation wrap value.  When the kernel's next PID value
1035reaches this value, it wraps back to a minimum PID value.
1036PIDs of value ``pid_max`` or larger are not allocated.
1037
1038
1039ns_last_pid
1040===========
1041
1042The last pid allocated in the current (the one task using this sysctl
1043lives in) pid namespace. When selecting a pid for a next task on fork
1044kernel tries to allocate a number starting from this one.
1045
1046
1047powersave-nap (PPC only)
1048========================
1049
1050If set, Linux-PPC will use the 'nap' mode of powersaving,
1051otherwise the 'doze' mode will be used.
1052
1053
1054==============================================================
1055
1056printk
1057======
1058
1059The four values in printk denote: ``console_loglevel``,
1060``default_message_loglevel``, ``minimum_console_loglevel`` and
1061``default_console_loglevel`` respectively.
1062
1063These values influence printk() behavior when printing or
1064logging error messages. See '``man 2 syslog``' for more info on
1065the different loglevels.
1066
1067======================== =====================================
1068console_loglevel         messages with a higher priority than
1069                         this will be printed to the console
1070default_message_loglevel messages without an explicit priority
1071                         will be printed with this priority
1072minimum_console_loglevel minimum (highest) value to which
1073                         console_loglevel can be set
1074default_console_loglevel default value for console_loglevel
1075======================== =====================================
1076
1077
1078printk_delay
1079============
1080
1081Delay each printk message in ``printk_delay`` milliseconds
1082
1083Value from 0 - 10000 is allowed.
1084
1085
1086printk_ratelimit
1087================
1088
1089Some warning messages are rate limited. ``printk_ratelimit`` specifies
1090the minimum length of time between these messages (in seconds).
1091The default value is 5 seconds.
1092
1093A value of 0 will disable rate limiting.
1094
1095
1096printk_ratelimit_burst
1097======================
1098
1099While long term we enforce one message per `printk_ratelimit`_
1100seconds, we do allow a burst of messages to pass through.
1101``printk_ratelimit_burst`` specifies the number of messages we can
1102send before ratelimiting kicks in.
1103
1104The default value is 10 messages.
1105
1106
1107printk_devkmsg
1108==============
1109
1110Control the logging to ``/dev/kmsg`` from userspace:
1111
1112========= =============================================
1113ratelimit default, ratelimited
1114on        unlimited logging to /dev/kmsg from userspace
1115off       logging to /dev/kmsg disabled
1116========= =============================================
1117
1118The kernel command line parameter ``printk.devkmsg=`` overrides this and is
1119a one-time setting until next reboot: once set, it cannot be changed by
1120this sysctl interface anymore.
1121
1122==============================================================
1123
1124
1125pty
1126===
1127
1128See Documentation/filesystems/devpts.rst.
1129
1130
1131random
1132======
1133
1134This is a directory, with the following entries:
1135
1136* ``boot_id``: a UUID generated the first time this is retrieved, and
1137  unvarying after that;
1138
1139* ``uuid``: a UUID generated every time this is retrieved (this can
1140  thus be used to generate UUIDs at will);
1141
1142* ``entropy_avail``: the pool's entropy count, in bits;
1143
1144* ``poolsize``: the entropy pool size, in bits;
1145
1146* ``urandom_min_reseed_secs``: obsolete (used to determine the minimum
1147  number of seconds between urandom pool reseeding). This file is
1148  writable for compatibility purposes, but writing to it has no effect
1149  on any RNG behavior;
1150
1151* ``write_wakeup_threshold``: when the entropy count drops below this
1152  (as a number of bits), processes waiting to write to ``/dev/random``
1153  are woken up. This file is writable for compatibility purposes, but
1154  writing to it has no effect on any RNG behavior.
1155
1156
1157randomize_va_space
1158==================
1159
1160This option can be used to select the type of process address
1161space randomization that is used in the system, for architectures
1162that support this feature.
1163
1164==  ===========================================================================
11650   Turn the process address space randomization off.  This is the
1166    default for architectures that do not support this feature anyways,
1167    and kernels that are booted with the "norandmaps" parameter.
1168
11691   Make the addresses of mmap base, stack and VDSO page randomized.
1170    This, among other things, implies that shared libraries will be
1171    loaded to random addresses.  Also for PIE-linked binaries, the
1172    location of code start is randomized.  This is the default if the
1173    ``CONFIG_COMPAT_BRK`` option is enabled.
1174
11752   Additionally enable heap randomization.  This is the default if
1176    ``CONFIG_COMPAT_BRK`` is disabled.
1177
1178    There are a few legacy applications out there (such as some ancient
1179    versions of libc.so.5 from 1996) that assume that brk area starts
1180    just after the end of the code+bss.  These applications break when
1181    start of the brk area is randomized.  There are however no known
1182    non-legacy applications that would be broken this way, so for most
1183    systems it is safe to choose full randomization.
1184
1185    Systems with ancient and/or broken binaries should be configured
1186    with ``CONFIG_COMPAT_BRK`` enabled, which excludes the heap from process
1187    address space randomization.
1188==  ===========================================================================
1189
1190
1191real-root-dev
1192=============
1193
1194See Documentation/admin-guide/initrd.rst.
1195
1196
1197reboot-cmd (SPARC only)
1198=======================
1199
1200??? This seems to be a way to give an argument to the Sparc
1201ROM/Flash boot loader. Maybe to tell it what to do after
1202rebooting. ???
1203
1204
1205sched_energy_aware
1206==================
1207
1208Enables/disables Energy Aware Scheduling (EAS). EAS starts
1209automatically on platforms where it can run (that is,
1210platforms with asymmetric CPU topologies and having an Energy
1211Model available). If your platform happens to meet the
1212requirements for EAS but you do not want to use it, change
1213this value to 0. On Non-EAS platforms, write operation fails and
1214read doesn't return anything.
1215
1216task_delayacct
1217===============
1218
1219Enables/disables task delay accounting (see
1220Documentation/accounting/delay-accounting.rst. Enabling this feature incurs
1221a small amount of overhead in the scheduler but is useful for debugging
1222and performance tuning. It is required by some tools such as iotop.
1223
1224sched_schedstats
1225================
1226
1227Enables/disables scheduler statistics. Enabling this feature
1228incurs a small amount of overhead in the scheduler but is
1229useful for debugging and performance tuning.
1230
1231sched_util_clamp_min
1232====================
1233
1234Max allowed *minimum* utilization.
1235
1236Default value is 1024, which is the maximum possible value.
1237
1238It means that any requested uclamp.min value cannot be greater than
1239sched_util_clamp_min, i.e., it is restricted to the range
1240[0:sched_util_clamp_min].
1241
1242sched_util_clamp_max
1243====================
1244
1245Max allowed *maximum* utilization.
1246
1247Default value is 1024, which is the maximum possible value.
1248
1249It means that any requested uclamp.max value cannot be greater than
1250sched_util_clamp_max, i.e., it is restricted to the range
1251[0:sched_util_clamp_max].
1252
1253sched_util_clamp_min_rt_default
1254===============================
1255
1256By default Linux is tuned for performance. Which means that RT tasks always run
1257at the highest frequency and most capable (highest capacity) CPU (in
1258heterogeneous systems).
1259
1260Uclamp achieves this by setting the requested uclamp.min of all RT tasks to
12611024 by default, which effectively boosts the tasks to run at the highest
1262frequency and biases them to run on the biggest CPU.
1263
1264This knob allows admins to change the default behavior when uclamp is being
1265used. In battery powered devices particularly, running at the maximum
1266capacity and frequency will increase energy consumption and shorten the battery
1267life.
1268
1269This knob is only effective for RT tasks which the user hasn't modified their
1270requested uclamp.min value via sched_setattr() syscall.
1271
1272This knob will not escape the range constraint imposed by sched_util_clamp_min
1273defined above.
1274
1275For example if
1276
1277	sched_util_clamp_min_rt_default = 800
1278	sched_util_clamp_min = 600
1279
1280Then the boost will be clamped to 600 because 800 is outside of the permissible
1281range of [0:600]. This could happen for instance if a powersave mode will
1282restrict all boosts temporarily by modifying sched_util_clamp_min. As soon as
1283this restriction is lifted, the requested sched_util_clamp_min_rt_default
1284will take effect.
1285
1286seccomp
1287=======
1288
1289See Documentation/userspace-api/seccomp_filter.rst.
1290
1291
1292sg-big-buff
1293===========
1294
1295This file shows the size of the generic SCSI (sg) buffer.
1296You can't tune it just yet, but you could change it on
1297compile time by editing ``include/scsi/sg.h`` and changing
1298the value of ``SG_BIG_BUFF``.
1299
1300There shouldn't be any reason to change this value. If
1301you can come up with one, you probably know what you
1302are doing anyway :)
1303
1304
1305shmall
1306======
1307
1308This parameter sets the total amount of shared memory pages that can be used
1309inside ipc namespace. The shared memory pages counting occurs for each ipc
1310namespace separately and is not inherited. Hence, ``shmall`` should always be at
1311least ``ceil(shmmax/PAGE_SIZE)``.
1312
1313If you are not sure what the default ``PAGE_SIZE`` is on your Linux
1314system, you can run the following command::
1315
1316	# getconf PAGE_SIZE
1317
1318To reduce or disable the ability to allocate shared memory, you must create a
1319new ipc namespace, set this parameter to the required value and prohibit the
1320creation of a new ipc namespace in the current user namespace or cgroups can
1321be used.
1322
1323shmmax
1324======
1325
1326This value can be used to query and set the run time limit
1327on the maximum shared memory segment size that can be created.
1328Shared memory segments up to 1Gb are now supported in the
1329kernel.  This value defaults to ``SHMMAX``.
1330
1331
1332shmmni
1333======
1334
1335This value determines the maximum number of shared memory segments.
13364096 by default (``SHMMNI``).
1337
1338
1339shm_rmid_forced
1340===============
1341
1342Linux lets you set resource limits, including how much memory one
1343process can consume, via ``setrlimit(2)``.  Unfortunately, shared memory
1344segments are allowed to exist without association with any process, and
1345thus might not be counted against any resource limits.  If enabled,
1346shared memory segments are automatically destroyed when their attach
1347count becomes zero after a detach or a process termination.  It will
1348also destroy segments that were created, but never attached to, on exit
1349from the process.  The only use left for ``IPC_RMID`` is to immediately
1350destroy an unattached segment.  Of course, this breaks the way things are
1351defined, so some applications might stop working.  Note that this
1352feature will do you no good unless you also configure your resource
1353limits (in particular, ``RLIMIT_AS`` and ``RLIMIT_NPROC``).  Most systems don't
1354need this.
1355
1356Note that if you change this from 0 to 1, already created segments
1357without users and with a dead originative process will be destroyed.
1358
1359
1360sysctl_writes_strict
1361====================
1362
1363Control how file position affects the behavior of updating sysctl values
1364via the ``/proc/sys`` interface:
1365
1366  ==   ======================================================================
1367  -1   Legacy per-write sysctl value handling, with no printk warnings.
1368       Each write syscall must fully contain the sysctl value to be
1369       written, and multiple writes on the same sysctl file descriptor
1370       will rewrite the sysctl value, regardless of file position.
1371   0   Same behavior as above, but warn about processes that perform writes
1372       to a sysctl file descriptor when the file position is not 0.
1373   1   (default) Respect file position when writing sysctl strings. Multiple
1374       writes will append to the sysctl value buffer. Anything past the max
1375       length of the sysctl value buffer will be ignored. Writes to numeric
1376       sysctl entries must always be at file position 0 and the value must
1377       be fully contained in the buffer sent in the write syscall.
1378  ==   ======================================================================
1379
1380
1381softlockup_all_cpu_backtrace
1382============================
1383
1384This value controls the soft lockup detector thread's behavior
1385when a soft lockup condition is detected as to whether or not
1386to gather further debug information. If enabled, each cpu will
1387be issued an NMI and instructed to capture stack trace.
1388
1389This feature is only applicable for architectures which support
1390NMI.
1391
1392= ============================================
13930 Do nothing. This is the default behavior.
13941 On detection capture more debug information.
1395= ============================================
1396
1397
1398softlockup_panic
1399=================
1400
1401This parameter can be used to control whether the kernel panics
1402when a soft lockup is detected.
1403
1404= ============================================
14050 Don't panic on soft lockup.
14061 Panic on soft lockup.
1407= ============================================
1408
1409This can also be set using the softlockup_panic kernel parameter.
1410
1411
1412soft_watchdog
1413=============
1414
1415This parameter can be used to control the soft lockup detector.
1416
1417= =================================
14180 Disable the soft lockup detector.
14191 Enable the soft lockup detector.
1420= =================================
1421
1422The soft lockup detector monitors CPUs for threads that are hogging the CPUs
1423without rescheduling voluntarily, and thus prevent the 'migration/N' threads
1424from running, causing the watchdog work fail to execute. The mechanism depends
1425on the CPUs ability to respond to timer interrupts which are needed for the
1426watchdog work to be queued by the watchdog timer function, otherwise the NMI
1427watchdog — if enabled — can detect a hard lockup condition.
1428
1429
1430split_lock_mitigate (x86 only)
1431==============================
1432
1433On x86, each "split lock" imposes a system-wide performance penalty. On larger
1434systems, large numbers of split locks from unprivileged users can result in
1435denials of service to well-behaved and potentially more important users.
1436
1437The kernel mitigates these bad users by detecting split locks and imposing
1438penalties: forcing them to wait and only allowing one core to execute split
1439locks at a time.
1440
1441These mitigations can make those bad applications unbearably slow. Setting
1442split_lock_mitigate=0 may restore some application performance, but will also
1443increase system exposure to denial of service attacks from split lock users.
1444
1445= ===================================================================
14460 Disable the mitigation mode - just warns the split lock on kernel log
1447  and exposes the system to denials of service from the split lockers.
14481 Enable the mitigation mode (this is the default) - penalizes the split
1449  lockers with intentional performance degradation.
1450= ===================================================================
1451
1452
1453stack_erasing
1454=============
1455
1456This parameter can be used to control kernel stack erasing at the end
1457of syscalls for kernels built with ``CONFIG_GCC_PLUGIN_STACKLEAK``.
1458
1459That erasing reduces the information which kernel stack leak bugs
1460can reveal and blocks some uninitialized stack variable attacks.
1461The tradeoff is the performance impact: on a single CPU system kernel
1462compilation sees a 1% slowdown, other systems and workloads may vary.
1463
1464= ====================================================================
14650 Kernel stack erasing is disabled, STACKLEAK_METRICS are not updated.
14661 Kernel stack erasing is enabled (default), it is performed before
1467  returning to the userspace at the end of syscalls.
1468= ====================================================================
1469
1470
1471stop-a (SPARC only)
1472===================
1473
1474Controls Stop-A:
1475
1476= ====================================
14770 Stop-A has no effect.
14781 Stop-A breaks to the PROM (default).
1479= ====================================
1480
1481Stop-A is always enabled on a panic, so that the user can return to
1482the boot PROM.
1483
1484
1485sysrq
1486=====
1487
1488See Documentation/admin-guide/sysrq.rst.
1489
1490
1491tainted
1492=======
1493
1494Non-zero if the kernel has been tainted. Numeric values, which can be
1495ORed together. The letters are seen in "Tainted" line of Oops reports.
1496
1497======  =====  ==============================================================
1498     1  `(P)`  proprietary module was loaded
1499     2  `(F)`  module was force loaded
1500     4  `(S)`  kernel running on an out of specification system
1501     8  `(R)`  module was force unloaded
1502    16  `(M)`  processor reported a Machine Check Exception (MCE)
1503    32  `(B)`  bad page referenced or some unexpected page flags
1504    64  `(U)`  taint requested by userspace application
1505   128  `(D)`  kernel died recently, i.e. there was an OOPS or BUG
1506   256  `(A)`  an ACPI table was overridden by user
1507   512  `(W)`  kernel issued warning
1508  1024  `(C)`  staging driver was loaded
1509  2048  `(I)`  workaround for bug in platform firmware applied
1510  4096  `(O)`  externally-built ("out-of-tree") module was loaded
1511  8192  `(E)`  unsigned module was loaded
1512 16384  `(L)`  soft lockup occurred
1513 32768  `(K)`  kernel has been live patched
1514 65536  `(X)`  Auxiliary taint, defined and used by for distros
1515131072  `(T)`  The kernel was built with the struct randomization plugin
1516======  =====  ==============================================================
1517
1518See Documentation/admin-guide/tainted-kernels.rst for more information.
1519
1520Note:
1521  writes to this sysctl interface will fail with ``EINVAL`` if the kernel is
1522  booted with the command line option ``panic_on_taint=<bitmask>,nousertaint``
1523  and any of the ORed together values being written to ``tainted`` match with
1524  the bitmask declared on panic_on_taint.
1525  See Documentation/admin-guide/kernel-parameters.rst for more details on
1526  that particular kernel command line option and its optional
1527  ``nousertaint`` switch.
1528
1529threads-max
1530===========
1531
1532This value controls the maximum number of threads that can be created
1533using ``fork()``.
1534
1535During initialization the kernel sets this value such that even if the
1536maximum number of threads is created, the thread structures occupy only
1537a part (1/8th) of the available RAM pages.
1538
1539The minimum value that can be written to ``threads-max`` is 1.
1540
1541The maximum value that can be written to ``threads-max`` is given by the
1542constant ``FUTEX_TID_MASK`` (0x3fffffff).
1543
1544If a value outside of this range is written to ``threads-max`` an
1545``EINVAL`` error occurs.
1546
1547
1548traceoff_on_warning
1549===================
1550
1551When set, disables tracing (see Documentation/trace/ftrace.rst) when a
1552``WARN()`` is hit.
1553
1554
1555tracepoint_printk
1556=================
1557
1558When tracepoints are sent to printk() (enabled by the ``tp_printk``
1559boot parameter), this entry provides runtime control::
1560
1561    echo 0 > /proc/sys/kernel/tracepoint_printk
1562
1563will stop tracepoints from being sent to printk(), and::
1564
1565    echo 1 > /proc/sys/kernel/tracepoint_printk
1566
1567will send them to printk() again.
1568
1569This only works if the kernel was booted with ``tp_printk`` enabled.
1570
1571See Documentation/admin-guide/kernel-parameters.rst and
1572Documentation/trace/boottime-trace.rst.
1573
1574
1575unaligned-trap
1576==============
1577
1578On architectures where unaligned accesses cause traps, and where this
1579feature is supported (``CONFIG_SYSCTL_ARCH_UNALIGN_ALLOW``; currently,
1580``arc``, ``parisc`` and ``loongarch``), controls whether unaligned traps
1581are caught and emulated (instead of failing).
1582
1583= ========================================================
15840 Do not emulate unaligned accesses.
15851 Emulate unaligned accesses. This is the default setting.
1586= ========================================================
1587
1588See also `ignore-unaligned-usertrap`_.
1589
1590
1591unknown_nmi_panic
1592=================
1593
1594The value in this file affects behavior of handling NMI. When the
1595value is non-zero, unknown NMI is trapped and then panic occurs. At
1596that time, kernel debugging information is displayed on console.
1597
1598NMI switch that most IA32 servers have fires unknown NMI up, for
1599example.  If a system hangs up, try pressing the NMI switch.
1600
1601
1602unprivileged_bpf_disabled
1603=========================
1604
1605Writing 1 to this entry will disable unprivileged calls to ``bpf()``;
1606once disabled, calling ``bpf()`` without ``CAP_SYS_ADMIN`` or ``CAP_BPF``
1607will return ``-EPERM``. Once set to 1, this can't be cleared from the
1608running kernel anymore.
1609
1610Writing 2 to this entry will also disable unprivileged calls to ``bpf()``,
1611however, an admin can still change this setting later on, if needed, by
1612writing 0 or 1 to this entry.
1613
1614If ``BPF_UNPRIV_DEFAULT_OFF`` is enabled in the kernel config, then this
1615entry will default to 2 instead of 0.
1616
1617= =============================================================
16180 Unprivileged calls to ``bpf()`` are enabled
16191 Unprivileged calls to ``bpf()`` are disabled without recovery
16202 Unprivileged calls to ``bpf()`` are disabled
1621= =============================================================
1622
1623
1624warn_limit
1625==========
1626
1627Number of kernel warnings after which the kernel should panic when
1628``panic_on_warn`` is not set. Setting this to 0 disables checking
1629the warning count. Setting this to 1 has the same effect as setting
1630``panic_on_warn=1``. The default value is 0.
1631
1632
1633watchdog
1634========
1635
1636This parameter can be used to disable or enable the soft lockup detector
1637*and* the NMI watchdog (i.e. the hard lockup detector) at the same time.
1638
1639= ==============================
16400 Disable both lockup detectors.
16411 Enable both lockup detectors.
1642= ==============================
1643
1644The soft lockup detector and the NMI watchdog can also be disabled or
1645enabled individually, using the ``soft_watchdog`` and ``nmi_watchdog``
1646parameters.
1647If the ``watchdog`` parameter is read, for example by executing::
1648
1649   cat /proc/sys/kernel/watchdog
1650
1651the output of this command (0 or 1) shows the logical OR of
1652``soft_watchdog`` and ``nmi_watchdog``.
1653
1654
1655watchdog_cpumask
1656================
1657
1658This value can be used to control on which cpus the watchdog may run.
1659The default cpumask is all possible cores, but if ``NO_HZ_FULL`` is
1660enabled in the kernel config, and cores are specified with the
1661``nohz_full=`` boot argument, those cores are excluded by default.
1662Offline cores can be included in this mask, and if the core is later
1663brought online, the watchdog will be started based on the mask value.
1664
1665Typically this value would only be touched in the ``nohz_full`` case
1666to re-enable cores that by default were not running the watchdog,
1667if a kernel lockup was suspected on those cores.
1668
1669The argument value is the standard cpulist format for cpumasks,
1670so for example to enable the watchdog on cores 0, 2, 3, and 4 you
1671might say::
1672
1673  echo 0,2-4 > /proc/sys/kernel/watchdog_cpumask
1674
1675
1676watchdog_thresh
1677===============
1678
1679This value can be used to control the frequency of hrtimer and NMI
1680events and the soft and hard lockup thresholds. The default threshold
1681is 10 seconds.
1682
1683The softlockup threshold is (``2 * watchdog_thresh``). Setting this
1684tunable to zero will disable lockup detection altogether.
1685