Оптимизация для размера страницы 16 КБ

Для большинства задач программирования размер страницы не имеет значения. Однако если вы выделяете большие объемы памяти, работаете с высокооптимизированными компонентами, напрямую взаимодействуете с ядром или выполняете большой объем манипуляций с файлами, переход Android на размер страницы 16 КБ может добавить соображений к вашему анализу производительности. В этом документе рассказывается, как размер страницы влияет на производительность.

Обнаружение проблем с памятью

При выделении памяти с помощью mmap всегда передавайте аргумент, кратный размеру страницы. Если вы запросите 4096 байт в системе с размером страницы 16 КБ, ядро выделит 16 KB байт, и 12 KB байт будут потрачены впустую. Чтобы обнаружить их, можно посмотреть /proc/maps, /proc/smaps (или использовать инструмент Android showmap, который хорошо показывает неиспользуемое пространство) или проверить strace процесса.

Как обнаружить проблемы с местом на диске

Устройства, выпущенные с Android 15 и более поздними версиями, по умолчанию имеют ELF-файлы, выровненные по 16 КБ. Многие приложения также выровнены по 16 КБ. Независимо от системы, во многих файлах увеличиваются поля. Чтобы посмотреть размер на диске, используйте du <my file> и узнайте, сколько килобайт занимает файл. Чтобы узнать видимый размер файла, можно использовать команду du -b <my file>, которая показывает размер в байтах. Если видимый размер больше реального, это обычно означает, что файл сжат или имеет разреженные области. Если видимый размер меньше реального, файл, скорее всего, содержит дополнительные метаданные или может быть разделен на диске. С помощью этих проверок можно проанализировать фактический размер файлов на диске.