אופטימיזציה לגודל דף של 16 KB

ברוב משימות התכנות, גודל הדף לא רלוונטי. עם זאת, אם מקצים כמויות גדולות של זיכרון, עובדים על רכיבים שעברו אופטימיזציה גבוהה, יוצרים ממשק ישירות עם הליבה או מבצעים כמויות גדולות של מניפולציות על קבצים, המעבר של Android לגודל דף של 16KB עשוי להוסיף שיקולים לניתוח הביצועים. במסמך הזה נסביר איך גודל הדף משפיע על הדינמיקה של הביצועים.

זיהוי בעיות בזיכרון

כשמקצים זיכרון באמצעות mmap, חשוב תמיד להעביר ארגומנט שהוא מכפיל של גודל הדף. אם מבקשים 4096 בייטים במערכת עם גודל דף של 16KB, הליבה מקצה 16 KB, וכך מתבזבזים 12 KB ממרחב האחסון. אפשר לזהות אותם על ידי הצגת /proc/maps, ‏ /proc/smaps (או באמצעות הכלי showmap ל-Android, שמציג את המרחב העודף בצורה נוחה) או על ידי בדיקת strace של התהליך.

זיהוי בעיות בשטח האחסון

במכשירים שפועלים ב-Android 15 ואילך, קובצי ELF מותאמים כברירת מחדל ל-16KB, וגם אפליקציות רבות מותאמות ל-16KB. ללא קשר למערכת, בקבצים רבים יש תוספת של מילוי. כדי לראות את הגודל האמיתי בדיסק, אפשר להשתמש ב-du <my file> כדי לראות כמה קילובייטים תופס הקובץ. כדי להציג את הגודל המשוער של הקובץ, אפשר להשתמש ב-du -b <my file>, שמציג את הגודל בבייטים. כשהגודל המוצג גדול מהגודל האמיתי, בדרך כלל המשמעות היא שהקובץ דחוס או שיש בו אזורים דלילים. אם הגודל המוצג קטן מהגודל האמיתי, סביר להניח שהקובץ מכיל מטא-נתונים נוספים או שהוא מפוצל בדיסק. בעזרת הבדיקות האלה אפשר לנתח את הגודל האמיתי של הקבצים בדיסק.