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 systemu lub wykonujesz duże ilości operacji na plikach, przejście Androida na rozmiar strony 16 KB może wymagać uwzględnienia dodatkowych kwestii w analizie wydajności. W tym dokumencie opisujemy, jak rozmiar strony zmienia dynamikę wydajności.

Wykrywanie problemów z pamięcią

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

Wykrywanie problemów z miejscem na dysku

Urządzenia z Androidem 15 i nowszymi wersjami 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ć pozorny rozmiar pliku, możesz użyć polecenia du -b <my file>, które pokazuje rozmiar w bajtach. Gdy pozorny rozmiar jest większy niż rzeczywisty, zwykle oznacza to, że plik jest skompresowany lub ma rzadkie regiony. Gdy pozorny rozmiar jest mniejszy niż rzeczywisty, plik prawdopodobnie zawiera dodatkowe metadane lub może być podzielony na dysku. Za pomocą tych sprawdzeń możesz analizować rzeczywisty rozmiar plików na dysku.