페이지 크기 가져오기

이 페이지에는 기기에 사용된 커널 페이지 크기를 가져오는 다양한 방법이 나열되어 있습니다. 기기에 연결하려면 adb를 사용하세요.

$ adb shell

getconf 명령어 사용

다음과 같이 getconf 명령어를 사용하여 페이지 크기를 가져옵니다.

$ getconf PAGE_SIZE
4096

/proc/<pid>/smaps 의사 파일 사용

다음과 같이 의사 파일 /proc/<pid>/smapsKernelPageSize 필드에 페이지 크기가 표시됩니다.

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

LD_SHOW_AUXV=1 링커 플래그 사용

LD_SHOW_AUXV 플래그를 사용하여 실행되려고 하는 프로그램의 보조 벡터를 인쇄합니다. 다음과 같이 AT_PAGESZ 필드에 페이지 크기가 포함되어 있습니다.

$ 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

/proc/config.gz 의사 파일 사용

의사 파일 /proc/config.gz의 커널 구성에서 페이지 크기를 확인합니다. 페이지 크기와 관련하여 가능한 구성은 다음과 같습니다.

  • CONFIG_ARM64_4K_PAGES=y: 커널에서 4096 페이지 크기를 지원합니다.
  • CONFIG_ARM64_16K_PAGES=y: 커널에서 16384 페이지 크기를 지원합니다.
  • CONFIG_ARM64_64K_PAGES=y: 커널에서 65536 페이지 크기를 지원합니다.
$ zcat /proc/config.gz | grep "CONFIG_ARM64_[164K]*_PAGES=y"
CONFIG_ARM64_16K_PAGES=y

보조 벡터 사용

프로그램이 실행될 때 커널은 동적 링커에서 사용하는 페이지 크기 등의 정보와 함께 보조 벡터를 할당하고 초기화합니다. 보조 벡터는 의사 파일 /proc/<pid>/auxv에 위치해 있으며 명렁어를 사용해 인쇄할 수 있습니다.

$ od -t d8 /proc/<pid>/auxv

조건:

  • od 덤프 파일이 16진수, 10진수 또는 기타 형식으로 되어 있음
  • -t가 형식 유형을 의미함
  • d8이 형식이 10진수이며 정수 크기가 8바이트임을 나타냄
  • <pid>가 프로세스 ID를 나타냄

명령어를 실행한 후 페이지 크기는 다음과 같이 0x68 오프셋에 있습니다.

$  od -t d8 /proc/1/auxv
0000000                      33            548087410688
0000020                      51                    4720
0000040                      16              4294967295
0000060                       6                    4096
0000100                      17                     100
0000120                       3            367056650304
0000140                       4                      56
0000160                       5                      12
0000200                       7            548085936128
0000220                       8                       0
0000240                       9            367057567744
0000260                      11                       0
0000300                      12                       0
0000320                      13                       0
0000340                      14                       0
0000360                      23                       1
0000400                      25            549659104168
0000420                      26                  144383
0000440                      31            549659107303
0000460                      15            549659104184
0000500                       0                       0
0000520