16 KB ページサイズ用に最適化

ほとんどのプログラミング タスクでは、ページサイズは関係ありません。ただし、大量のメモリを割り当てている場合、高度に最適化されたコンポーネントを扱っている場合、カーネルと直接インターフェースを構築している場合、大量のファイル操作を行っている場合は、Android が 16 KB ページサイズに移行したことで、パフォーマンス分析に考慮すべき点が増える可能性があります。このドキュメントでは、ページサイズがパフォーマンスのダイナミクスに与える影響について説明します。

メモリの問題を検出する

mmap でメモリを割り当てる場合は、常にページサイズの倍数である引数を渡すようにしてください。16 KB ページサイズのシステムで 4096 バイトをリクエストすると、カーネルは 16 KB を割り当て、12 KB のスペースを浪費します。/proc/maps/proc/smaps を表示する(または、無駄なスペースをきれいに出力する Android ツール showmap を使用する)、またはプロセスの strace を確認すると、これらの問題を検出できます。

ディスク容量の問題を検出する

Android 15 以降でリリースされるデバイスでは、デフォルトで 16 KB アライメントの ELF が使用され、多くのアプリも 16 KB アライメントになっています。システムに関係なく、多くのファイルでパディングが増加しています。ディスク上の実際のサイズを確認するには、du <my file> を使用してファイルが占有するキロバイト数を確認します。ファイルの見かけのサイズを表示するには、du -b <my file> を使用します。サイズはバイト単位で表示されます。表示サイズが実際のサイズよりも大きい場合、通常はファイルが圧縮されているか、スパース領域があることを意味します。表示サイズが実際のサイズよりも小さい場合は、ファイルに余分なメタデータが含まれているか、ディスク上で分割されている可能性があります。これらのチェックを使用すると、ディスク上のファイルの実際のサイズを分析できます。