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

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

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

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

זיהוי בעיות בנפח האחסון

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