(aarch64) 64k Base Page Size on Arm

In addition to the standard build of UEK for Arm (aarch64), which sets a base 4k page size, a kernel-uek64k package that sets a 64k base page size is available for Ampere Arm-based Compute shapes in Oracle Cloud Infrastructure only. For use cases other than OCI, the kernel-uek64 package is available only as a technical preview. The kernel-uek64k package is available for Oracle Linux 9 and later.

The 64k page size kernel is a useful option for Ampere (Arm-based) platforms that process workloads with large, contiguous memory datasets, and can achieve better performance for some types of memory and CPU intensive operations.

The 4k page size kernel is useful for smaller environments, where minimizing physical system memory usage is a priority.

Note that the 4k page size kernel and 64k page size kernel don't differ in user experience as the user space is the same.

After a system is installed with kernel-uek64k switching to a 4k kernel page size is unsupported.

Installing kernel-uek64k

Note:

Installation of kernel-uek64k on systems outside of Oracle Cloud Infrastructure (OCI) is only available as a technical preview. Don't install this kernel on production systems outside of OCI.

To install the kernel-uek64k on a system installed with the standard 4k page size kernel-uek:

  1. Install the kernel-uek64k package.
    sudo dnf install -y kernel-uek64k
  2. Set the 64k page size kernel as the default kernel.
    sudo grubby --set-default=$(echo /boot/vmlinuz*64k)

    Note that if you have more than one 64k page kernel installed, you must explicitly declare the kernel that you intend to be the default. For example:

    sudo grubby --set-default=/boot/vmlinuz-6.12.0-0.20.20.el9uek.aarch64.64k
  3. Reboot the system.
    sudo reboot
  4. After the system is rebooted, verify that the page size is 64k.
    getconf PAGESIZE

    If the PAGESIZE returns 65536, the 64k kernel is loaded. If the PAGESIZE returns 4096, the 4k kernel is loaded and you must check that the default kernel is set correctly.

    You can also check that the running kernel contains the 64k string, for example:

    uname -a|grep 64k
  5. If the system is running the 64k kernel, proceed to remove the 4k page size kernel packages to avoid future conflicts.
    sudo dnf erase kernel-uek-core