Az Android operációs rendszer és alkalmazásai hagyományosan 4 KB-os lapmérettel működnek, mivel a legtöbb modern CPU ezt a méretet támogatja. Az ARM CPU-k azonban lehetővé teszik a nagyobb, 16 KB-os lapméretet is, amely az általános teljesítménynövekedést eredményezheti, mivel a rendszer kevesebb időt tölt a memóriakezeléssel, így a felhasználói alkalmazások is gördülékenyebben futnak. Az Android 15-tel mostantól lehetőség van 4 KB-os és 16 KB-os lapmérettel is futtatni a rendszert, ami lehetővé teszi a gyártók számára, hogy kiválasszák az optimális beállítást.
A lapméret hatása és előnyei
A memóriakezelés során az operációs rendszer az úgynevezett memóriakezelő egységeket (MMU-kat) használja az egyes programok által használt címek fizikai memóriába történő leképezésére. Ezt az átkonvertálást lapméretenként végzik, így a nagyobb lapméret kevesebb nyilvántartást igényel, ami jelentős teljesítménybeli javulást eredményezhet. A 16 KB-os lapméret kevesebb alacsony szintű operációs rendszer adminisztrációval jár, ami gyorsabb működést és zökkenőmentesebb alkalmazásélményt eredményez.
Az lap az operációs rendszer által a memória kezelésére használt legkisebb egység. A modern CPU-k többsége, beleértve azokat is, amelyeket az Android operációs rendszer használ, általában 4 KB-os lapméretet támogat. Ez az a méret, amelyre az Android rendszert és az alkalmazásokat hagyományosan optimalizálták.
Az ARM processzorok azonban képesek támogatni a nagyobb, 16 KB-os lapméretet is. Amikor az Android ezen nagyobb lapméretet használja, jelentős, 5-10%-os teljesítménynövekedést figyeltek meg, miközben a memóriafelhasználás körülbelül 9%-kal nőtt.
Főbb operációs rendszer változások
Az Android 15 új kiadásában a következő változások történtek a 16 KB-os lapméret támogatása érdekében:
- A PAGE_SIZE makró a fordítási idő alatt a futási időben getpagesize(2) hívásra van cserélve.
- Minden operációs rendszer bináris 16 KB-os igazítással készül (-Wl,-z,max-page-size=16384), bár a harmadik féltől származó alkalmazások és könyvtárak nem biztos, hogy 16 KB-os igazítással készültek.
- Minden operációs rendszer bináris külön betölthető szegmensekkel (-Wl,-z,separate-loadable-segments) készül, hogy biztosítsa a memória régiók olvashatóságát, amire egyes alkalmazások építenek.
Több operációs rendszer összetevőt újraírtunk, hogy elkerüljük az lapméret feltételezését és optimalizáljuk a nagyobb lapméretet, amikor elérhető.
Fájlrendszerek
A fájlrendszerek teljesítményének optimalizálása érdekében a fájl rendszer blokk méretének egyeznie kell az lapmérettel. Az EROFS és az F2FS fájlrendszerek, valamint az UFS tárolási réteg most már 16 KB-os kompatibilitással rendelkeznek. A 4 KB-os rendszereken az ELF végrehajtható fájlok mérete megnőhet a 16 KB-os igazításhoz szükséges további padding miatt (-Wl,-z,max-page-size=16384 opció), de több optimalizálási lehetőség is rendelkezésre áll ennek költségeinek csökkentésére.
- A sparse read-only fájlrendszerek biztosítják, hogy a 16 KB-os igazításhoz szükséges nulla lapok ne kerüljenek írásra a lemezre. Például az EROFS tudja, hogy egy fájl egy adott tartománya nulla töltésű, így nem szükséges I/O műveletet végezni, ha ez a fájl része elérhető.
- A read-write fájlrendszerek az esetek egyedi kezelése alapján kezelik a nulla lapokat. Az Android 15-ben a PackageManager az alkalmazások részeként telepített fájlok esetében újrahasznosítja ezt a teret.
Memóriakezelés és kernel
A Linux page cache módosították, hogy ne olvasson előre a padding terekben, így elkerülve a szükségtelen memória terhelést. Mivel a Linux kernel szorosan kapcsolódik egy adott lapmérethez, ezért a kernel építésekor ki kell választani az lapméretet, míg az operációs rendszer többi része változatlan marad.
Fejlesztői támogatás
Jelenleg nincsenek olyan Android eszközök, amelyek 16 KB-os lapméretet támogatnának az Android 15 kiadásakor. A problémát azzal próbáljuk orvosolni, hogy a meglévő eszközökön lehetővé tesszük a fejlesztői opció használatát. Ez az opció lehetővé teszi az alkalmazások tesztelését és fejlesztését 16 KB-os lapmérettel, még akkor is, ha a gyártók az új eszközök megjelenéséig nem tudják azokat piacra dobni. Ezen kívül egy 16 KB-os emulátor célpont is rendelkezésre áll az Android Studio-ban, amely lehetővé teszi a fejlesztők számára, hogy emulált környezetben teszteljék alkalmazásaikat.
Jövőbeli kilátások
A 16 KB-os lapméret integrálása az Android 15 rendszerbe és az AOSP-ba fontos lépés a gyorsabb és hatékonyabb Android eszközök felé. A rendszer szintű változások és a fejlesztői eszközök átdolgozása révén a jövőbeli eszközök teljesítménye jelentősen növekedhet. Bízunk benne, hogy az alkalmazás- és SDK-fejlesztők kihasználják ezeket az új lehetőségeket, és előkészítik alkalmazásaikat a közelgő, 16 KB-os lapméretet támogató eszközökre.
(forrás)