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ớiAT_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ó.