Trang này liệt kê các cách khác nhau để lấy kích thước trang nhân được sử dụng trong
thiết bị. Để kết nối với thiết bị này, bạn có thể sử dụng adb
.
$ adb shell
Sử dụng mã lập trình
Trong C++, hãy ưu tiên getpagesize(2)
:
# include <unistd.h>
...
... = getpagesize();
Trong Java, bạn có thể sử dụng cấu hình hệ thống:
import android.system.Os;
import android.system.OsConstants;
... = Os.sysconf(OsConstants._SC_PAGE_SIZE);
Dùng lệnh getconf
Dùng lệnh getconf
để lấy kích thước trang, như minh hoạ sau đây:
$ getconf PAGE_SIZE
4096
Dùng tệp giả /proc/<pid>/smaps
Trường KernelPageSize
trong tệp giả /proc/<pid>/smaps
cho thấy trang
kích thước, được hiển thị như sau:
$ grep KernelPageSize /proc/1/smaps
KernelPageSize: 4 kB
Sử dụng cờ trình liên kết LD_SHOW_AUXV=1
Sử dụng cờ LD_SHOW_AUXV
để in vectơ phụ trợ của chương trình
sắp được thực thi. Trường AT_PAGESZ
chứa kích thước trang,
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
Dùng tệp giả /proc/config.gz
Kiểm tra cấu hình nhân cho kích thước trang trong tệp giả
/proc/config.gz
. Các cấu hình có thể cho kích thước trang là:
CONFIG_ARM64_4K_PAGES=y
: hạt nhân sử dụng trang có kích thước 4096 byte.CONFIG_ARM64_16K_PAGES=y
: hạt nhân sử dụng các trang có kích thước 16384 byte.CONFIG_ARM64_64K_PAGES=y
: nhân sử dụng trang 65536 byte.
$ zcat /proc/config.gz | grep "CONFIG_ARM64_[164K]*_PAGES=y"
CONFIG_ARM64_16K_PAGES=y
Sử dụng vectơ phụ
Khi một chương trình được thực thi, hạt nhân sẽ phân bổ và khởi động phần phụ trợ
vectơ với thông tin, chẳng hạn như kích thước trang, được sử dụng bởi
trình liên kết. Vectơ phụ trợ 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ể là
hiển thị như sau:
$ od -N8 -j56 -td8 -An /proc/1/auxv
4096
Trong trường hợp:
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
kết xuất 8 byte bắt đầu từ độ lệch 56 vào tệp, tương ứng vớiAT_PAGESZ
.-td8
định dạng giá trị là số nguyên 8 byte thập phân.-An
chỉ hiển thị giá trị chứ không hiển thị địa chỉ.