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>를 사용하면 됩니다. 이 명령어는 크기를 바이트 단위로 표시합니다. 표시 크기가 실제 크기보다 큰 경우 일반적으로 파일이 압축되었거나 희박한 영역이 있음을 의미합니다. 표시된 크기가 실제 크기보다 작은 경우 파일에 추가 메타데이터가 있거나 디스크에서 분할되었을 수 있습니다. 이러한 검사를 통해 디스크에 있는 파일의 실제 크기를 분석할 수 있습니다.