This page lists the different ways to get the kernel page size used in the device. To connect to the device, you can use adb .
$ adb shell
Использовать программный код
 В C++ предпочитайте getpagesize(2) :
# include <unistd.h>
...
... = getpagesize();
В Java вы можете использовать системную конфигурацию:
import android.system.Os;
import android.system.OsConstants;
... = Os.sysconf(OsConstants._SC_PAGE_SIZE);
Используйте команду getconf
 Используйте команду getconf для получения размера страницы, как показано ниже:
$ getconf PAGE_SIZE
4096
 Используйте /proc/ /smaps псевдофайл 
 Поле KernelPageSize в псевдофайле /proc/<pid>/smaps показывает размер страницы, как показано ниже:
$ grep KernelPageSize /proc/1/smaps
KernelPageSize:        4 kB
Используйте флаг компоновщика LD_SHOW_AUXV=1
 Используйте флаг LD_SHOW_AUXV для вывода вспомогательного вектора программы, которая будет выполнена. Поле AT_PAGESZ содержит размер страницы, как показано ниже:
$ LD_SHOW_AUXV=1 ls
AT_SYSINFO_EHDR      0x7250460000
AT_MINSIGSTKSZ       4720
AT_HWCAP             0b11111111111111111111111111111111
AT_PAGESZ            4096
AT_CLKTCK            100
AT_PHDR              0x5fda1e0040
AT_PHENT             56
AT_PHNUM             12
AT_BASE              0x72502f8000
AT_FLAGS             0
AT_ENTRY             0x5fda210000
AT_UID               0
AT_EUID              0
AT_GID               0
AT_EGID              0
AT_SECURE            0
AT_RANDOM            0x7fc59d66f8
AT_HWCAP2            0b100011001111111111
AT_EXECFN            "/system/bin/ls"
AT_PLATFORM          "aarch64"
data            dev.        init    vendor
Используйте псевдофайл /proc/config.gz
 Проверьте конфигурацию ядра на размер страницы в псевдофайле /proc/config.gz . Возможные конфигурации размера страницы:
-  CONFIG_ARM64_4K_PAGES=y: ядро использует страницы размером 4096 байт.
-  CONFIG_ARM64_16K_PAGES=y: ядро использует страницы размером 16384 байта.
-  CONFIG_ARM64_64K_PAGES=y: ядро использует страницы размером 65536 байт.
$ zcat /proc/config.gz | grep "CONFIG_ARM64_[164K]*_PAGES=y"
CONFIG_ARM64_16K_PAGES=y
Используйте вспомогательный вектор
 При выполнении программы ядро выделяет и инициализирует вспомогательный вектор, используя информацию, например, размер страницы, которая используется динамическим компоновщиком. Вспомогательный вектор можно прочитать из псевдофайла /proc/<pid>/auxv . Размер страницы из вспомогательного вектора процесса 1 можно показать следующим образом:
$ od -N8 -j56 -td8 -An /proc/1/auxv
4096
Где:
-  odвыводит файлы в шестнадцатеричном, десятичном или других форматах.
-  -N8 -j56выгружает 8 байтов, начиная со смещения 56, в файл, что соответствуетAT_PAGESZ.
-  -td8форматирует значение как десятичное 8-байтовое целое число.
-  -Anприводит к отображению только значения, а не его адреса.
Чтение из образа ядра
Размер страницы можно определить по заголовку образа ядра. Это полезно в загрузчике, если вам нужно узнать, какой тип ядра вы загружаете.
Размер страницы указан в 25-м байте заголовка ядра:
 $ file Image
Image: Linux kernel ARM64 boot executable Image, little-endian, 16K pages
 $ hexdump -C Image -n 48
00000000  4d 5a 40 fa ff 7f 7b 14  00 00 00 00 00 00 00 00  |MZ@...{.........|
00000010  00 00 64 02 00 00 00 00  0c 00 00 00 00 00 00 00  |..d.............|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030
 В этом примере значение равно 0x0C = 0000 1100b . Бит 1 имеет значение 0 , а бит 2 — 1 Прочитав эти два бита, мы получим 10b или 2 в десятичной системе счисления. Исходя из значения этих битов, можно определить размер страницы ядра:
-  0— Не указано
-  1- 4 КБ
-  2- 16 КБ
-  3- 64 КБ
Более подробную информацию см. в документации по ядру Linux.
