在用户态有两种方法可以获取内核的page size.

#include <unistd.h>
int getpagesize(void);

具体见 https://linux.die.net/man/2/getpagesize

也可以通过:

#include <unistd.h>
long sz = sysconf(_SC_PAGESIZE);

具体见 https://linux.die.net/man/3/sysconf

同时通过命令

[root@216 ~]# getconf PAGESIZE
4096
[root@216 ~]# getconf PAGE_SIZE
4096
[root@216 ~]#

都能获取得到.

下面的命令也可以获取的到

cd /proc/1
grep -i pagesize smaps

KernelPageSize:        4 kB
MMUPageSize:           4 kB

其中在ARM64的平台上,支持4k/16k/64K 三个PAGE SIZE, 在内核中是可以配置的, 在ARM64平台上默认是64KB的Page Size. 而在x64-86上默认的PAGE SIZE是4K. arm64在内核的源码的arm64-stub.c中能看到一些配置, 不要简单的修改内核的.config文件中启用一个选项就可以了,相关的配置非常多,建议用make menuconfig自动来修改.