Android支援16 KB分页大小,可提升系统效能约5-10%

Google预计在之后Android版本支援

图片来源/Google

为了提升作业系统整体效能,Google在Android 15增加支援16 KB分页大小,这也会是第一个支援16 KB分页大小的Android版本。由于ARM架构处理器在设计时考虑多种分页大小,因此Android要支援16 KB分页大小,主要是为了适应ARM的功能。分页是作业系统管理记忆体的基本单位,大多数现代CPU都是支援4 KB分页大小,因此过去Android作业系统和应用程式也都是针对4 KB分页大小最佳化。

大多数CPU中处理器具有一个称为记忆体管理单元(Memory Management Unit,MMU)的硬体元件,负责管理虚拟记忆体和实体记忆体间的地址转换,而这种转换与分页大小密切相关,当应用程式需要更多记忆体的时候,作业系统就需要介入,并填写分页表格条目,将记忆体分配给程序。

所以当Android支援的分页大小从4 KB增至16 KB,分页大小增至4倍,记忆体分配的管理工作量也就相对应降低,这让系统可以把更多时间用于运算影片、游戏和作业系统等工作。Google特别说明,分页大小与处理器32位元/64位元模式的应用程式二进位介面(Application Binary Interface,ABI)概念不同。

ABI涉及处理器位宽,直接影响应用程式存取和操作资料的方式,而分页大小是作业系统管理记忆体的策略,所以当应用程式调整为不依赖特定分页大小,同一个应用程式的二进位档案,就可以在支援4 KB和16 KB分页大小的装置上运作。Google重新设计了Android 15的底层,因此开始能够支援不同页面大小运作,以实现分页大小无关性。

分页大小的变动牵涉范围广泛,涵盖作业系统、档案系统、记忆体管理和Linux核心等层面,而对Android开发者来说,应用程式的程式码和相依项目都需要重新编译和调整,才能在相容于16 KB分页大小的装置上正确运作,而且因为大多数应用程式和SDK原生程式码是针对4 KB分页建置,需要重新对齐,确保相容4 KB和16 KB装置。

从Android 15 QPR1 Beta版本开始,Pixel 8和Pixel 8 Pro将提供开发人员选项,可切换16 KB和4 KB分页大小。针对16 KB页面建置的应用程式,只需使用不同Linux核心,相同二进位档案就能适用于4 KB和16 KB。因此Google加入一种包含额外Linux核心的方法,运用增量压缩方法,每个分页大小的核心版本约占12-16 MB。另外,即便开发者没有ARM装置,现在也可以在x86_64模拟器,以4 KB模式模拟16 KB分页大小支援。