Chapter 7. Installing RHEL on ARM with Kernel-64k

By default, RHEL 9 is distributed with a kernel supporting a 4k page size. This 4k kernel is sufficient for efficient memory usage in smaller environments or small cloud instances where the usage of a 64k page kernel is not practical due to space, power, and cost constraints.

Important

It is not recommended to move between 4k and 64k page size kernels after the initial boot without reinstallation of the OS.

7.1. Installing Kernel-64k on ARM using Kickstart

RHEL offers the ARM64 hardware architecture to support workloads that require large physical memory configuration for optimal performance. Such large memory configuration requires the use of a large MMU page size (64k).

While installing RHEL 9, you can select the kernel-64k package to install RHEL with kernel supporting 64k page size.

Procedure

  • In the %packages section of the kickstart file, add the following list of packages:

    %packages
    kernel-64k
    -kmod-kvdo
    -vdo
    -kernel
    %end

Verification steps

  • To verify the page size, after installation is completed and the system is rebooted, open the terminal and run:

    $ getconf PAGESIZE
    65536

    The output 65536 indicates that the 64k kernel is in use.

  • To verify that the swap partition is enabled, enter:

    $ free
                   total        used        free      shared  buff/cache   available
    Mem:        35756352     3677184    34774848       25792      237120    32079168
    Swap:        6504384           0     6504384

The total and free columns are non-zero, which indicates the swap is enabled successfully.

7.2. Installing Kernel-64k on ARM using the command line

If you have already installed RHEL with the default kernel (supporting 4k page size), you can install kernel-64k post installation using the command line.

Procedure

  1. Open the terminal as the root user, and enter:

    # dnf -y install kernel-64k
  2. To set the kernel-64k as default, enter:

    # k=$(echo /boot/vmlinuz*64k)
    # grubby --set-default=$k \
               --update-kernel=$k \
               --args="crashkernel=2G-:640M"
  3. Reboot the system:

    # reboot
  4. Optional: After reboot, remove the 4k kernel:

    # dnf erase kernel

    Keeping both versions accidentally can make the 4k kernel default when you update the kernel in future using the yum update command.

Verification steps

  • To verify the page size, open the terminal and run the following command as any user:

    $ getconf PAGESIZE
    65536

    The output 65536 indicates that the 64k kernel is in use.

  • To verify swap is enabled, enter:

    $ free
                   total        used        free      shared  buff/cache   available
    Mem:        35756352     3677184    34774848       25792      237120    32079168
    Swap:        6504384           0     6504384

    The total and free columns are non-zero, which indicates the swap is enabled successfully.