איך ממדי סופר

גודל נכון של מחיצת 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 המוקדמת והעדכנית ביותר כדי לחשב את הצמיחה.