Explore performance gains by increasing the Linux kernel page size on Arm

Who is this for?

This is an introductory topic for developers who want to modify the Linux kernel page size on Arm-based systems to improve performance for memory-intensive workloads.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Explain the differences in page size configuration between Arm64 and x86 architectures.
  • Understand how page size affects memory efficiency and system performance.
  • Check the current memory page size on an Arm-based Linux system.
  • Install and boot into a Linux kernel configured with 16K or 64K page size support.
  • Confirm that the selected page size is active.
  • Optionally revert to the default 4K page size kernel.

Prerequisites

Before starting, you will need the following:

  • Access to an Arm-based Linux system running Ubuntu, Debian, or CentOS.

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll evaluate and change the Linux kernel base page size on Arm by installing and booting a 16K or 64K configuration. You’ll check the current setting with getconf and uname, then use distribution-specific instructions. Debian provides a packaged 16K kernel and a source-build route for 64K, while Ubuntu and CentOS provide packaged 64K kernels. After rebooting, you’ll validate the selected page size and optionally return to the default 4K kernel.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
How do I check the current base page size and kernel in use?
Run getconf PAGESIZE and uname -r. On a 4K configuration, the first line shows 4096, followed by the running kernel version and flavor.
What should I do if `getconf` does not show `4096` before I begin?
A value other than 4096 indicates the system is already using a non-4K page size, such as 16384 or 65536. Note the current value and proceed only if a change is needed.
Which distribution-specific section should I follow?
Use the Ubuntu section for Ubuntu 22.04 LTS or later, the Debian section for Debian 12 or later, and the CentOS section for CentOS 9 or later. On Debian, you can install the packaged 16K kernel or build a 64K kernel from the Debian source package.
How do I confirm that the selected page size is active after installation and reboot?
Re-run getconf PAGESIZE and expect 16384 for a 16K kernel or 65536 for a 64K kernel. Also check uname -r to verify that the running kernel matches the kernel you installed.
How can I revert to a 4K page size after testing?
Use the optional revert step to return to the distribution’s default 4K kernel, then verify with getconf PAGESIZE that it shows 4096. This restores the original base page size.
Next