Chapter 3. Important Changes to External Kernel Parameters

This chapter provides system administrators with a summary of significant changes in the kernel shipped with Red Hat Enterprise Linux 7.3. These changes include added or updated proc entries, sysctl, and sysfs default values, boot parameters, kernel configuration options, or any noticeable behavior changes.
apic_extnmi=[APIC,X86]
Provides external Nonmaskable Interrupt (NMI) delivery setting.
Format: { bsp (default) | all | none }.
bsp: External NMI is delivered only to CPU 0.
all: External NMIs are broadcast to all CPUs as a backup of CPU 0.
none: External NMI is masked for all CPUs. This is useful so that a dump capture kernel will not be shot down by NMI.
bau=[X86_UV] Enable the BAU on SGI UV
The default behavior is to disable the BAU (i.e. bau=0).
Format: { "0" | "1" }
0 - Disable the BAU.
1 - Enable the BAU.
unset - Disable the BAU.
cpu_init_udelay=N [X86]
Sets delay of N microseconds between assert and de-assert of APIC INIT to start processors. This delay occurs on every CPU online, such as boot, and resume from suspend.
Default value: 10000
hardlockup_all_cpu_backtrace=[KNL]
The hard-lockup detector generates backtraces on all cpus.
Format: integer
intel_iommu=[DMAR] Intel iommu driver (DMAR) option [...]
ecs_off [Default Off]
By default, extended context tables are supported if the hardware advertises that it has support both for the extended tables themselves, and also PASID support. With this option set, extended tables will not be used even on hardware which claims to support them.
kernelcore=nn[KMG] [KNL,X86,IA-64,PPC]
This parameter
kernelcore=[KNL,X86,IA-64,PPC]
Format: nn[KMGTPE] | "mirror"
Instead of specifying the amount of memory nn[KMGTPE], users can specify "mirror" option. In case "mirror" option is specified, mirrored memory is used for non-movable allocations and remaining memory is used for movable pages. Both nn[KMGTPE] and "mirror" option are exclusive. Users are not allowed to specify nn[KMGTPE] and "mirror" option at the same time.
libata.force=[LIBATA]
* [no]ncqtrim: Turn off queued DSM TRIM.
memmap=nn[KMG]!ss[KMG] [KNL,X86]
Marks specific memory as protected. Region of memory to be used, from ss to ss+nn. The memory region should be marked as e820 type 12 (0xc) and is NVDIMM or ADR memory.
module_blacklist=[KNL]
Does not load a comma-separated list of modules. This feature is useful for debugging problem modules.
nfs4.layoutstats_timer=[NFSv4.2]
Changes the rate at which the kernel sends the layout statistics to the pNFS metadata server.
Setting this value to zero causes the kernel to use whatever value is the default set by the layout driver. Any non-zero value sets the minimum interval in seconds between the transmissions of layout statistics.
nmi_watchdog=[KNL,BUGS=X86]
Debugging features for SMP kernels.
Format: [panic,][nopanic,][num]
Valid num: 0 or 1
0 - turn nmi_watchdog off
1 - turn nmi_watchdog on
nohugeiomap [KNL,x86]
Disables kernel huge I/O mappings.
soft_watchdog
This parameter can be used to control the soft lockup detector.
0 - disable the soft lockup detector
1 - enable the soft lockup detector
The soft lockup detector monitors CPUs for threads that are hogging the CPUs without rescheduling voluntarily, thus preventing the watchdog/N threads from running. The mechanism depends on the CPUs ability to respond to timer interrupts which are needed for the watchdog/N threads to be woken up by the watchdog timer function, otherwise the NMI watchdog - if enabled - can detect a hard lockup condition.
watchdog
This parameter disables or enables the soft lockup detector and the hard lockup detector ensured by NMI watchdog at the same time.
0 - disables both lockup detectors
1 - enables both lockup detectors
The soft lockup detector and the NMI watchdog can also be disabled or enabled individually, using the soft_watchdog and nmi_watchdog parameters. If the watchdog parameter is read, for example by executing the cat /proc/sys/kernel/watchdog command, the output value of this command, which is 0 or 1, shows the logical OR of soft_watchdog and nmi_watchdog.
noxsaveopt [X86]
Disables xsaveopt used in saving x86 extended register states. The kernel falls back to use xsave to save the states. By using this parameter, performance of saving the states is lowered because xsave does not support modified optimization, while xsaveopt supports it on xsaveopt enabled systems.
noxsaves [X86]
Disables xsaves and xrstors used in saving and restoring x86 extended register state in compacted form of xsave area. The kernel falls back to use xsaveopt and xrstor to save and restore the states in standard form of xsave area. By using this parameter, xsave area per process can occupy more memory on xsaves enabled systems.
nompx [X86]
Disables Intel Memory Protection Extensions.
See Documentation/x86/intel_mpx.txt for more information about the feature.
nowatchdog [KNL]
Disables both lockup detectors: soft-lockup and NMI watchdog (hard-lockup).
watchdog_cpumask
This value is used to set which CPUs are available for watchdog to run. The default cpumask is all possible cores, but if NO_HZ_FULL is enabled in the kernel config, and cores are specified with the nohz_full=boot argument, those cores are excluded by default. Offline cores can be included in this mask. If the core is later brought online, watchdog is started based on the mask value. This value can only be touched in the nohz_full case to re-enable cores that by default were not running watchdog, if a kernel lockup was suspected on those cores. The argument value is the standard cpulist format for cpumasks.
Example:
To enable the watchdog on cores 0, 2, 3, and 4 use this command:
echo 0,2-4 /proc/sys/kernel/watchdog_cpumask
watchdog_thresh
This value is used to set the frequency of hrtimer and NMI events and the soft and hard lockup thresholds. The default threshold is 10 seconds. The softlockup threshold is 2 * watchdog_thresh. Setting of this parameter to zero will disable lockup detection altogether.
schedstats=[KNL,X86]
Enables or disables scheduler statistics.
Allowed values are enable and disable.
This feature incurs a small amount of overhead in the scheduler, but it is useful for debugging and performance tuning.
usbcore.usbfs_snoop_max=[USB]
Sets maximum number of bytes to snoop in each USB Request Block (URB). The default value is 65536.
usb-storage.quirks=[...]
j = NO_REPORT_LUNS
Does not use report luns command, UAS only.
workqueue.watchdog_thres
If CONFIG_WQ_WATCHDOG is configured, workqueue can warn stall conditions and dump internal state to help debugging. Value 0 disables workqueue stall detection. Otherwise, it is the stall threshold duration in seconds.The default value is 30 and it can be updated at runtime by writing to the corresponding sysfs file.
workqueue.power_efficient
Per-cpu work queues are generally preferred because they have better performance due to cache locality, but they consume more power than unbound work queues. This kernel parameter makes the per-cpu work queues which were observed to contribute significantly to power consumption unbound, leading to significantly lower power usage at the cost of small performance overhead.
perf_event_paranoid
Controls use of the performance events system by unprivileged users who do not have CAP_SYS_ADMIN.
The default value is 1.
-1 - Allows use of all events by all users.
>=0 - Disallows raw tracepoint access by users without CAP_IOC_LOCK.
>=1 - Disallow CPU event access by users without CAP_SYS_ADMIN.
>=2 - Disallow kernel profiling by users without CAP_SYS_ADMIN
/proc/sys/fs
pipe-user-pages-hard:
Sets maximum total number of pages that a non-privileged user can allocate for pipes.
Once this limit is reached, no new pipes can be allocated until usage returns below the limit again. When set to 0, no limit is applied, which is the default setting.
pipe-user-pages-soft:
Sets maximum total number of pages that a non-privileged user can allocate for pipes before the pipe size gets limited to a single page. Once this limit is reached, new pipes are limited to a single page in size for this user in order to limit total memory usage. Trying to increase the total number of pages using the fcntl() function is denied until usage drops below the limit again. The default value allows to allocate up to 1024 pipes at their default size. When set to 0, no limit is applied.
/proc/sys/kernel
hardlockup_all_cpu_backtrace:
This value controls the hard lockup detector behavior regarding gathering further debug information. If enabled, arch-specific all-CPU stack dumping is initiated.
0 - do nothing. This is the default behavior.
1 - on detection capture more debug information.