Obtener el tamaño de la página

Esta página enumera las diferentes formas de obtener el tamaño de página del kernel utilizado en el dispositivo. Para conectarse al dispositivo, puede usar adb .

$ adb shell

Utilice el comando getconf

Utilice el comando getconf para obtener el tamaño de la página, que se muestra a continuación:

$ getconf PAGE_SIZE
4096

Utilice el pseudoarchivo /proc/<pid>/smaps

El campo KernelPageSize en el pseudoarchivo /proc/<pid>/smaps muestra el tamaño de la página, como se muestra a continuación:

$ grep KernelPageSize /proc/1/smaps
KernelPageSize:        4 kB

Utilice el indicador del vinculador LD_SHOW_AUXV=1

Utilice el indicador LD_SHOW_AUXV para imprimir el vector auxiliar del programa que está a punto de ejecutarse. El campo AT_PAGESZ contiene el tamaño de la página, que se muestra a continuación:

$ 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

Utilice el pseudoarchivo /proc/config.gz

Verifique la configuración del kernel para conocer el tamaño de la página en el pseudoarchivo /proc/config.gz . Las posibles configuraciones para el tamaño de página son:

  • CONFIG_ARM64_4K_PAGES=y : el kernel utiliza páginas de 4096 bytes.
  • CONFIG_ARM64_16K_PAGES=y : el kernel utiliza páginas de 16384 bytes.
  • CONFIG_ARM64_64K_PAGES=y : el kernel utiliza páginas de 65536 bytes.
$ zcat /proc/config.gz | grep "CONFIG_ARM64_[164K]*_PAGES=y"
CONFIG_ARM64_16K_PAGES=y

Utilice el vector auxiliar

Cuando se ejecuta un programa, el kernel asigna e inicializa el vector auxiliar con información, como el tamaño de la página, que utiliza el vinculador dinámico. El vector auxiliar se puede leer desde el pseudoarchivo /proc/<pid>/auxv . El tamaño de página del vector auxiliar del proceso 1 se puede mostrar de la siguiente manera:

$ od -N8 -j56 -td8 -An /proc/1/auxv
4096

Dónde:

  • od vuelca archivos en formatos hexadecimal, decimal u otros.
  • -N8 -j56 vuelca los 8 bytes que comienzan en el desplazamiento 56 en el archivo, correspondiente a AT_PAGESZ .
  • -td8 formatea el valor como un entero decimal de 8 bytes.
  • -An hace que solo se muestre el valor, no su dirección.