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

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/servers-and-cloud-computing/arm_linux_page_size/)
- [Overview](https://learn.arm.com/learning-paths/servers-and-cloud-computing/arm_linux_page_size/overview/)
- [Change page size on Ubuntu](https://learn.arm.com/learning-paths/servers-and-cloud-computing/arm_linux_page_size/ubuntu/)
- [Change page size on Debian](https://learn.arm.com/learning-paths/servers-and-cloud-computing/arm_linux_page_size/debian/)
- [Change page size on CentOS](https://learn.arm.com/learning-paths/servers-and-cloud-computing/arm_linux_page_size/centos/)
- [Next Steps](https://learn.arm.com/learning-paths/servers-and-cloud-computing/arm_linux_page_size/_next-steps/)

## About this Learning Path

|  |  |
| --- | --- |
| Skill level: | Introductory |
| Reading time: | 30 min |
| Last updated: | 05 Oct 2026 |

|  |  |
| --- | --- |
| Author: | Geremy Cohen , Arm<br>[GitHub](https://github.com/geremyCohen)<br>[LinkedIn](https://linkedin.com/in/geremyinanutshell) |
| Arm IP: | [Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors) |
| Tags: | [Performance and Architecture](https://learn.arm.com/tag/performance-and-architecture) [Linux](https://learn.arm.com/tag/linux) [bash](https://learn.arm.com/tag/bash) |

### 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?

After completing this Learning Path, you'll be able to perform the following tasks:

- 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'll need the following prerequisites:

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

### Summary

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

**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.

<summary>What should I do if `getconf` does not show `4096` before I begin?</summary>
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.
