Explore performance gains by increasing the Linux kernel page size on Arm
Introduction
Overview
Change page size on Ubuntu
Change page size on Debian
Change page size on CentOS
Next Steps
Explore performance gains by increasing the Linux kernel page size on Arm
Follow the steps below to install a 64K page size kernel on CentOS 9 or later .
Verify the current page size
Verify you’re using a 4KB pagesize kernel by entering the following commands:
getconf PAGESIZE
uname -r
The output should be similar to below. The kernel flavor (the string after the version number) may vary, but the first line should always be 4096.
4096
6.1.0-34-cloud-arm64
The 4096 indicates the current page size is 4KB. If you see a value that is different, you are already using a page size other than 4096 (4K). On Arm systems, the valid options are 4K, 16K, and 64K.
Install the 64K kernel package:
Enter the command below to install the 64K kernel:
sudo dnf -y install kernel-64k
You should see a page of output ending with:
...
Installed:
kernel-64k-5.14.0-583.el9.aarch64 kernel-64k-core-5.14.0-583.el9.aarch64
kernel-64k-modules-5.14.0-583.el9.aarch64 kernel-64k-modules-core-5.14.0-583.el9.aarch64
Complete!
Enter the following to configure the 64K kernel as default and reboot:
k=$(echo /boot/vmlinuz*64k)
sudo grubby --set-default "$k" --update-kernel "$k"
sudo reboot
Verify the page size and kernel version:
Upon reboot, check the kernel page size and name once again to confirm the changes:
getconf PAGESIZE
uname -r
The output shows the 64k kernel is running:
65536
5.14.0-583.el9.aarch64+64k
Revert to the 4K kernel
To revert to the original 4K kernel, enter the following:
# Get your running kernel (should be something like "5.14.0-583.el9.aarch64+64k")
curr=$(uname -r)
# Strip the "+64k" suffix
base=${curr%+64k}
# Build the full path to the 4K kernel image
k4="/boot/vmlinuz-${base}"
# Sanity‐check that it actually exists
if [[ ! -e "$k4" ]]; then
echo "Cannot find 4K kernel image at $k4"
exit 1
fi
echo "Found 4K kernel: $k4"
# remove any crashkernel args
sudo grubby --remove-args="crashkernel=2G-:640M" --update-kernel "$k4"
# set it as the default
sudo grubby --set-default "$k4"
# Reboot the system
sudo reboot
Upon reboot, verify you’re on a 4KB pagesize kernel by entering the following commands:
getconf PAGESIZE
uname -r
The output shows the 4k kernel is running:
4096
6.1.0-34-cloud-arm64
The 4096 indicates the current page size has been reverted to 4KB.