Chapter 5. 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 8.4. These changes could include for example added or updated proc entries, sysctl, and sysfs default values, boot parameters, kernel configuration options, or any noticeable behavior changes.

5.1. New kernel parameters

bgrt_disable = [ACPI, X86]
This parameter disables Boot Graphics Resource Table (BGRT) to avoid flickering Original Equipment Manufacturer (OEM) logo.
radix_hcall_invalidate = on [PPC/PSERIES]
This parameter disables Radix GTSE feature and use hcall for Translation Lookaside Buffer (TLB) invalidate.
disable_tlbie = [PPC]
This parameter disables Translation Look-Aside Buffer Invalidate Entry (TLBIE) instruction. Currently does not work with KVM, with hash Memory management Unit (MMU), or with coherent accelerators.
fw_devlink = [KNL]

This parameter creates device links between consumer and supplier devices by scanning the firmware to infer the consumer and supplier relationships. This feature is useful when drivers are loaded as modules as it ensures proper ordering of tasks like:

  • device probing (suppliers first, then consumers)
  • supplier boot state clean up (only after all consumers have probed)
  • suspend, resume and runtime Power Management (PM) (consumers first, then suppliers)

    Format: { off | permissive | on | rpm }

  • off - Do not create device links from firmware info.
  • permissive - Create device links from firmware info but use it only for ordering boot state clean up (sync_state() calls).
  • on - Create device links from firmware info and use it to enforce probe and suspend or resume ordering.
  • rpm - Like on, but also used to order runtime PM.

The default value is permissive. You can check the configured value in the /proc/cmdline file.

init_on_alloc = [MM]

This parameter fills newly allocated pages and heap objects with zeroes.

Format: 0 | 1

Default set by the kernel CONFIG_INIT_ON_ALLOC_DEFAULT_ON configuration

init_on_free = [MM]

This parameter fills freed pages and heap objects with zeroes.

Format: 0 | 1

Default set by CONFIG_INIT_ON_FREE_DEFAULT_ON

nofsgsbase [X86]
This parameter disables FSGSBASE instructions.
nosgx [X86-64,SGX]
This parameter disables Intel Software Guard Extensions (SGX) kernel support.
rcutree.rcu_min_cached_objs = [KNL]
Minimum number of objects which are cached and maintained per one CPU. Object size is equal to PAGE_SIZE. The cache allows to reduce the pressure to page allocator. Also it makes the whole algorithm to behave better in low memory condition.
rcuperf.kfree_rcu_test = [KNL]
This parameter is used to measure performance of the kfree_rcu() function flooding.
rcuperf.kfree_nthreads = [KNL]
The number of threads running loops of kfree_rcu().
rcuperf.kfree_alloc_num = [KNL]
Number of allocations and frees done in an iteration.
rcuperf.kfree_loops = [KNL]
Number of loops doing rcuperf.kfree_alloc_num number of allocations and frees.
rcupdate.rcu_cpu_stall_ftrace_dump = [KNL]
This parameter dumps ftrace buffer after reporting Read-copy-update (RCU) CPU stall warning.
nopvspin = [X86,KVM]
This parameter disables the qspinlock slow path using Para-virtualization (PV) optimizations. This allows the hypervisor to 'idle' the guest on lock contention.

5.2. New /proc/sys/user parameters

max_time_namespaces
The maximum number of time namespaces that any user in the current user namespace can create.

5.3. New /proc/sys/vm parameters

compaction_proactiveness

This parameter determines how aggressively the kernel should compact memory in the background. The parameter takes a value in the range [0, 100] and the default value is 0. The motivation to disable this parameter by default was to avoid breaking the currently established and expected behavior of the system by a kthread that would be woken up every 500msec to move memory around.

Note that compaction has a non-trivial system-wide impact as pages belonging to different processes are moved around. This could also lead to latency spikes in unsuspecting applications. The kernel employs various heuristics to avoid wasting CPU cycles if it detects that proactive compaction is not being effective.

Be careful when setting this parameter to extreme values such as 100. This can cause excessive background compaction activity.

watermark_boost_factor

This parameter controls the level of reclaim when memory is being fragmented. It defines the percentage of the high watermark of a zone that will be reclaimed if pages of different mobility are being mixed within pageblocks. The intent is that compaction has less work to do in the future and to increase the success rate of future high-order allocations such as SLUB allocations, THP and hugetlbfs pages.

With respect to the watermark_scale_factor parameter, the unit is in fractions of 10,000. The default value of 15,000 on !DISCONTIGMEM configurations means that up to 150% of the high watermark is reclaimed in the event of a pageblock being mixed due to fragmentation. The level of reclaim is determined by the number of fragmentation events that occurred in the recent past. If this value is smaller than a pageblock then a pageblocks worth of pages are going to be reclaimed (e.g. 2MB on 64-bit x86). A boost factor of 0 will disable the feature.