Ermitteln Sie die Seitengröße

Auf dieser Seite werden die verschiedenen Möglichkeiten aufgeführt, die im Gerät verwendete Kernel-Seitengröße zu ermitteln. Um eine Verbindung zum Gerät herzustellen, können Sie adb verwenden.

$ adb shell

Verwenden Sie den Befehl getconf

Verwenden Sie den Befehl getconf um die Seitengröße abzurufen, die wie folgt angezeigt wird:

$ getconf PAGE_SIZE
4096

Verwenden Sie die Pseudodatei /proc/<pid>/smaps

Das Feld KernelPageSize in der Pseudodatei /proc/<pid>/smaps zeigt die Seitengröße wie folgt an:

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

Verwenden Sie das Linker-Flag LD_SHOW_AUXV=1

Verwenden Sie das Flag LD_SHOW_AUXV , um den Hilfsvektor des Programms zu drucken, das ausgeführt werden soll. Das Feld AT_PAGESZ enthält die Seitengröße, die wie folgt angezeigt wird:

$ 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

Verwenden Sie die Pseudodatei /proc/config.gz

Überprüfen Sie die Kernel-Konfiguration auf die Seitengröße in der Pseudodatei /proc/config.gz . Die möglichen Konfigurationen für die Seitengröße sind:

  • CONFIG_ARM64_4K_PAGES=y : Der Kernel verwendet 4096-Byte-Seiten.
  • CONFIG_ARM64_16K_PAGES=y : Der Kernel verwendet 16384-Byte-Seiten.
  • CONFIG_ARM64_64K_PAGES=y : Der Kernel verwendet 65536-Byte-Seiten.
$ zcat /proc/config.gz | grep "CONFIG_ARM64_[164K]*_PAGES=y"
CONFIG_ARM64_16K_PAGES=y

Verwenden Sie den Hilfsvektor

Wenn ein Programm ausgeführt wird, weist der Kernel den Hilfsvektor zu und initialisiert ihn mit Informationen wie der Seitengröße, die vom dynamischen Linker verwendet werden. Der Hilfsvektor kann aus der Pseudodatei /proc/<pid>/auxv gelesen werden. Die Seitengröße aus dem Hilfsvektor von Prozess 1 lässt sich wie folgt darstellen:

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

Wo:

  • od speichert Dateien im Hexadezimal-, Dezimal- oder anderen Format.
  • -N8 -j56 speichert die 8 Bytes beginnend bei Offset 56 in der Datei, entsprechend AT_PAGESZ .
  • -td8 formatiert den Wert als dezimale 8-Byte-Ganzzahl.
  • -An bewirkt, dass nur der Wert angezeigt wird, nicht seine Adresse.