גודל נכון של מחיצת super
חשוב לאפשרות העדכון של המכשיר. הגודל משפיע ישירות על כמה עדכונים מכשיר יכול לקחת וכמה משתמשים יכולים לקחת את העדכונים האלה בהצלחה.
ישנם כמה משתנים חשובים שיש לקחת בחשבון. הראשון הוא גודל היצרן , שהוא הגודל של כל המחיצות הדינמיות כאשר המכשיר מובהב לראשונה. השני הוא קצב הצמיחה , שהוא האחוז שגודל מערכת ההפעלה גדל לאורך כל חיי המכשיר הניתן לעדכון.
בנוסף, התקני A/B וירטואליים יכולים להשתמש בשטח ב- /data
במהלך עדכון, ויש לקחת זאת בחשבון בעת גודל super
. אם דרוש יותר מדי מקום ב- /data
, אז חלק מהמשתמשים לא מסוגלים (או לא רוצים) לקבל את העדכון. עם זאת, אם ידוע שלרוב המשתמשים יש אחוז מסוים של מקום פנוי, אז מכשירים יכולים להפחית בנוחות את השטח הזה מ- super
. לחלופין, מכשירים יכולים להבטיח שלעולם לא יהיה צורך /data
, פשוט על ידי ביצוע super
גדול מספיק.
להלן כמה מודלים שיעזרו להנחות את גודל מחיצות super
בהתבסס על משתנים אלה.
בהסתמך על /data
Virtual A/B מעודד כיווץ super
כדי לאפשר הגדלת הגודל של /data
. חלק מהשטח הזה דרוש במהלך עדכון. כדי להבין את ההשפעה על יכולת העדכון, חיוני לדעת באיזה אחוז מהמכשירים יש סבירות שתהיה כמות כזו של שטח פנוי לאורך זמן. זיהוי המספר הזה תלוי מאוד בחומרה של המכשיר ובהתנהגות המשתמשים במכשיר זה. בדוגמאות שלהלן, מספר זה מכונה AllowedUserdataUse
.
ללא דחיסה
ללא דחיסה, OTA מלא צריך תמונת מצב בערך באותו גודל כמו מערכת ההפעלה, כך שיש לקחת זאת בחשבון בעת גודל super
:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
לדוגמה, קחו בחשבון מכשיר A/B וירטואלי עם גודל מפעל של 4 GB, צמיחה צפויה של 50%, וידע שכמעט לכל המשתמשים יש 1 GB פנוי (או שהם מוכנים לפנות עד 1 GB של מקום לעדכון) . עבור מכשיר זה, super
יכול להיות בגודל כך:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
לפיכך, למכשיר הזה צריכה להיות מחיצת super
של 11 ג'יגה-בייט.
עם דחיסה
עם דחיסה, OTA מלא צריך תמונת מצב של בערך 70% מגודל מערכת ההפעלה:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
לדוגמה, שקול מכשיר המוגדר עם דחיסת A/B וירטואלית, עם גודל יצרן של 4GB, צמיחה צפויה של 50%, וידע שכמעט לכל המשתמשים יש 1 GB פנוי (או שהם מוכנים לפנות עד 1 GB של מקום עבור עדכון). עבור מכשיר זה, super
יכול להיות בגודל כך:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = Max(6GB, 6GB + 4.2GB - 1GB) = Max(6GB, 9.2GB) = 9.2GB
לפיכך, למכשיר הזה צריכה להיות מחיצת super
9.2 ג'יגה-בייט.
בלי להסתמך על /data
אם אתה רוצה שיהיו OTAs שלעולם לא דורשים מקום בצילום מצב ב- /data
, אז גודל super
הוא פשוט.
ללא דחיסה
עבור התקן A/B וירטואלי ללא דחיסה, או התקן A/B רגיל:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
לדוגמה, שקול מכשיר וירטואלי A/B עם גודל מפעל של 4 GB וצמיחה צפויה של 50%. כדי להבטיח שהמכשיר הזה לעולם לא ישתמש /data
עבור צילומי מצב OTA, החישוב שלו ייראה כך:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
לפיכך, למכשיר הזה צריכה להיות מחיצת super
של 12 GB.
עם דחיסה
עבור התקן A/B וירטואלי עם דחיסה:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = FinalDessertSize + FinalOTASnapshotSize
לדוגמה, שקול התקן דחיסה וירטואלי A/B עם גודל מפעל של 4 GB וצמיחה צפויה של 50%. כדי להבטיח שהמכשיר הזה לעולם לא ישתמש /data
עבור צילומי מצב OTA, החישוב שלו ייראה כך:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = 6GB + 4.2GB = 10.2GB
לפיכך, למכשיר הזה צריכה להיות מחיצת super
10.2 ג'יגה-בייט.
אזהרות
זה עשוי להיות מפתה לראות שאם גודל היצרן הוא 4 GB, והעדכון הסופי הוא 5 GB, אז super
צריך להיות 9 GB, ולא 10 GB. עם זאת, אם העדכון הראשון והעדכון הסופי הם שניהם בנפח 5 GB, ייתכן שהמקום super
לא יספיק לעדכון הסופי. הנוסחאות לעיל מניחות שגידול מחיצות יכול להתרחש בכל עת. השטח הדרוש להחלת העדכון הסופי עשוי להיות זהה לזה הנדרש להחלת העדכון הראשון.
שימו לב שיחסי הדחיסה הם אומדן. תמונת מערכת הפעלה עשויה לדחוס טוב יותר או גרוע יותר בהתאם לתוכן שלה. אם משתמשים במערכת קבצים דחוסה כמו EROFS, לדחיסה הנוספת מ-Virtual A/B יש החזרים פוחתים. במקרה זה עדיף להשתמש באחת מהנוסחאות הלא דחוסות כקו מנחה.
מדידה
כדי למצוא את הערך של FinalDessertSize
בדוגמאות לעיל, הוסף את הגדלים של כל המחיצות הדינמיות יחד. תמונות המחיצה הדינמית של AOSP הן:
-
system.img
-
vendor.img
-
product.img
-
system_ext.img
-
vendor_dlkm.img
-
system_dlkm.img
הקפד לחשב את הגודל על סמך תמונות לא מנותקות. בעת בניית אנדרואיד 12 ומטה, תמונות מנותקות כברירת מחדל, וניתן לבטל את הניצול באמצעות simg2img
.
אפשר גם לחשב גדלי מחיצות מחבילת OTA. פעולה זו מעריכה גם את גודל תמונת מצב וירטואלית עבור כל מחיצה:
python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip
לחלופין, אתה יכול להשתמש בכלי ניתוח OTA . כלי זה אינו מעלה קבצים ומנתח חבילות OTA באופן מקומי.
כדי למצוא את הערך של ExpectedGrowth
, השתמש במכשיר שפורסם בעבר. השתמש בתמונת super
המוקדמת והעדכנית ביותר כדי לחשב את הצמיחה.