Optymalizacja pod kątem rozmiaru strony 16 KB

W przypadku większości zadań programistycznych rozmiar strony nie ma znaczenia. Jeśli jednak przydzielasz duże ilości pamięci, pracujesz nad wysoce zoptymalizowanymi komponentami, komunikujesz się bezpośrednio z jądrem lub wykonujesz duże ilości operacji na plikach, przejście Androida na rozmiar strony 16 KB może mieć wpływ na analizę wydajności. W tym dokumencie opisujemy, jak rozmiar strony wpływa na dynamikę wydajności.

Wykrywanie problemów z pamięcią

Gdy przydzielasz pamięć za pomocą funkcji mmap, zawsze przekazuj argument, który jest wielokrotnością rozmiaru strony. Jeśli zażądasz 4096 bajtów w systemie o rozmiarze strony 16 KB, jądro przydzieli 16 KB, marnując 12 KB bajtów miejsca. Możesz to sprawdzić, wyświetlając /proc/maps, /proc/smaps (lub używając narzędzia Androida showmap, które czytelnie wyświetla zmarnowane miejsce) albo sprawdzając strace procesu.

Wykrywanie problemów z miejscem na dysku

Urządzenia z Androidem 15 lub nowszym domyślnie mają pliki ELF wyrównane do 16 KB, a wiele aplikacji jest również wyrównanych do 16 KB. Niezależnie od systemu wiele plików ma zwiększone dopełnienie. Aby wyświetlić rzeczywisty rozmiar na dysku, możesz użyć du <my file>, aby sprawdzić, ile kilobajtów zajmuje plik. Aby wyświetlić rzeczywisty rozmiar pliku, możesz użyć polecenia du -b <my file>, które pokazuje rozmiar w bajtach. Gdy rozmiar widoczny jest większy niż rzeczywisty, zwykle oznacza to, że plik jest skompresowany lub zawiera rzadkie regiony. Jeśli widoczny rozmiar jest mniejszy niż rzeczywisty, plik prawdopodobnie zawiera dodatkowe metadane lub może być podzielony na dysku. Dzięki tym sprawdzeniom możesz analizować rzeczywisty rozmiar plików na dysku.