Lấy kích thước trang

Trang này liệt kê các cách khác nhau để lấy kích thước trang kernel được sử dụng trong thiết bị. Để kết nối với thiết bị, bạn có thể sử dụng adb .

$ adb shell

Sử dụng lệnh getconf

Sử dụng lệnh getconf để lấy kích thước trang, hiển thị như sau:

$ getconf PAGE_SIZE
4096

Sử dụng tệp giả /proc/<pid>/smaps

Trường KernelPageSize trong tệp giả /proc/<pid>/smaps hiển thị kích thước trang, được hiển thị như sau:

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

Sử dụng cờ liên kết LD_SHOW_AUXV=1

Sử dụng cờ LD_SHOW_AUXV để in vectơ phụ của chương trình sắp được thực thi. Trường AT_PAGESZ chứa kích thước trang, được hiển thị như sau:

$ 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

Sử dụng tệp giả /proc/config.gz

Kiểm tra cấu hình kernel để biết kích thước trang trong tệp giả /proc/config.gz . Các cấu hình có thể có cho kích thước trang là:

  • CONFIG_ARM64_4K_PAGES=y : kernel sử dụng các trang 4096 byte.
  • CONFIG_ARM64_16K_PAGES=y : kernel sử dụng các trang 16384 byte.
  • CONFIG_ARM64_64K_PAGES=y : kernel sử dụng các trang 65536 byte.
$ zcat /proc/config.gz | grep "CONFIG_ARM64_[164K]*_PAGES=y"
CONFIG_ARM64_16K_PAGES=y

Sử dụng vectơ phụ trợ

Khi một chương trình được thực thi, kernel sẽ phân bổ và khởi tạo vectơ phụ với thông tin, chẳng hạn như kích thước trang, được trình liên kết động sử dụng. Vectơ phụ có thể được đọc từ tệp giả /proc/<pid>/auxv . Kích thước trang từ vectơ phụ trợ của quy trình 1 có thể được hiển thị như sau:

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

Ở đâu:

  • od kết xuất các tệp ở định dạng thập lục phân, thập phân hoặc các định dạng khác.
  • -N8 -j56 chuyển 8 byte bắt đầu từ offset 56 vào tệp, tương ứng với AT_PAGESZ .
  • -td8 định dạng giá trị dưới dạng số nguyên 8 byte thập phân.
  • -An chỉ hiển thị giá trị chứ không hiển thị địa chỉ của nó.