16KB 페이지 크기에 최적화

대부분의 프로그래밍 작업에서는 페이지 크기가 관련이 없습니다. 하지만 많은 양의 메모리를 할당하거나, 고도로 최적화된 구성요소에서 작업하거나, 커널과 직접 인터페이스하거나, 많은 양의 파일 조작을 하는 경우 Android가 16KB 페이지 크기로 전환되면 성능 분석에 고려사항이 추가될 수 있습니다. 이 문서에서는 페이지 크기가 성능의 역학 관계를 어떻게 변화시키는지 설명합니다.

메모리 문제 감지

mmap로 메모리를 할당할 때는 항상 페이지 크기의 배수인 인수를 전달해야 합니다. 16KB 페이지 크기가 있는 시스템에서 4096바이트를 요청하면 커널이 16 KB를 할당하여 12 KB의 공간이 낭비됩니다. /proc/maps, /proc/smaps을 보거나 (또는 낭비된 공간을 보기 좋게 출력하는 Android 도구 showmap 사용) 프로세스의 strace를 확인하면 이러한 문제를 감지하는 데 도움이 됩니다.

디스크 공간 문제 감지

Android 15 이상으로 출시되는 기기는 기본적으로 16KB로 정렬된 ELF가 있으며 많은 애플리케이션도 16KB로 정렬됩니다. 시스템과 관계없이 많은 파일의 패딩이 증가했습니다. 디스크의 실제 크기를 확인하려면 du <my file>를 사용하여 파일이 차지하는 킬로바이트 수를 확인하면 됩니다. 파일의 실제 크기를 보려면 바이트 단위로 크기를 표시하는 du -b <my file>를 사용하면 됩니다. 겉으로 보이는 크기가 실제 크기보다 큰 경우 일반적으로 파일이 압축되었거나 스파스 영역이 있음을 의미합니다. 겉으로 보이는 크기가 실제 크기보다 작으면 파일에 추가 메타데이터가 있거나 디스크에서 분할되었을 수 있습니다. 이러한 검사를 사용하면 디스크에 있는 파일의 실제 크기를 분석할 수 있습니다.