การกำหนดขนาดพาร์ติชัน super อย่างถูกต้องมีความสำคัญต่อความสามารถในการอัปเดตของอุปกรณ์ ขนาดจะส่งผลโดยตรงต่อจำนวนการอัปเดตที่อุปกรณ์รับได้และจำนวนผู้ใช้ที่อัปเดตได้สำเร็จ
มีตัวแปรสำคัญ 2-3 ตัวที่ต้องพิจารณา ตัวแรกคือ ขนาดจากโรงงาน ซึ่งเป็นขนาดของพาร์ติชันแบบไดนามิกทั้งหมดเมื่อแฟลชอุปกรณ์เป็นครั้งแรก ตัวที่ 2 คือ อัตราการเติบโต ซึ่งเป็นเปอร์เซ็นต์ที่ขนาดของระบบปฏิบัติการเพิ่มขึ้นตลอด อายุการใช้งานที่อัปเดตได้ของอุปกรณ์
นอกจากนี้ อุปกรณ์ Virtual A/B ยังใช้พื้นที่ใน /data ระหว่างการอัปเดตได้ด้วย และต้องพิจารณาเรื่องนี้เมื่อกำหนดขนาด super หากต้องใช้พื้นที่ใน /data มากเกินไป ผู้ใช้บางรายจะอัปเดตไม่ได้ (หรือไม่อยากอัปเดต) อย่างไรก็ตาม หากทราบว่าผู้ใช้ส่วนใหญ่มีพื้นที่ว่างอยู่เป็นเปอร์เซ็นต์หนึ่ง อุปกรณ์ก็จะสามารถลบพื้นที่นั้นออกจาก super ได้อย่างสบายๆ หรืออุปกรณ์สามารถรับประกันได้ว่าจะไม่จำเป็นต้องใช้ /data เพียงแค่ทำให้ super มีขนาดใหญ่พอ
ด้านล่างนี้คือโมเดลบางส่วนที่จะช่วยแนะนำการกำหนดขนาดพาร์ติชัน super ตามตัวแปรเหล่านี้
ใช้ /data
Virtual A/B สนับสนุนให้ลดขนาด super เพื่อให้เพิ่มขนาดของ /data ได้ ต้องใช้พื้นที่บางส่วนระหว่างการอัปเดต หากต้องการทำความเข้าใจผลกระทบต่อความสามารถในการอัปเดต สิ่งสำคัญคือต้องทราบว่าอุปกรณ์กี่เปอร์เซ็นต์ที่มีแนวโน้มที่จะมีพื้นที่ว่างตามจำนวนดังกล่าวเมื่อเวลาผ่านไป การคำนวณตัวเลขนี้ขึ้นอยู่กับฮาร์ดแวร์ของอุปกรณ์และพฤติกรรมของผู้ใช้ที่ใช้อุปกรณ์นั้นๆ เป็นอย่างมาก ในตัวอย่างด้านล่าง เราจะเรียกตัวเลขนี้ว่า AllowedUserdataUse
ไม่บีบอัด
หากไม่บีบอัด OTA แบบเต็มจะต้องใช้ Snapshot ที่มีขนาดประมาณเท่ากับระบบปฏิบัติการ ดังนั้นจึงต้องนำเรื่องนี้มาพิจารณาเมื่อกำหนดขนาด super
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
ตัวอย่างเช่น พิจารณาอุปกรณ์ Virtual 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 GB
บีบอัด
หากบีบอัด OTA แบบเต็มจะต้องใช้ Snapshot ที่มีขนาดประมาณ 70% ของขนาดระบบปฏิบัติการ
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
ตัวอย่างเช่น พิจารณาอุปกรณ์ที่กำหนดค่าด้วยการบีบอัด Virtual A/B ที่มีขนาดจากโรงงาน 4 GB, การเติบโตที่คาดไว้ 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 GB
ไม่ใช้ /data
หากต้องการใช้ OTA ที่ไม่จำเป็นต้องใช้พื้นที่ Snapshot ใน /data การกำหนดขนาด super ก็ทำได้ง่ายๆ
ไม่บีบอัด
สำหรับอุปกรณ์ Virtual A/B ที่ไม่บีบอัดหรืออุปกรณ์ A/B ปกติ ให้ทำดังนี้
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
ตัวอย่างเช่น พิจารณาอุปกรณ์ Virtual A/B ที่มีขนาดจากโรงงาน 4 GB และการเติบโตที่คาดไว้ 50% การคำนวณสำหรับอุปกรณ์นี้จะเป็นดังนี้เพื่อให้มั่นใจว่าอุปกรณ์จะไม่ใช้ /data สำหรับ Snapshot OTA
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
ดังนั้น อุปกรณ์นี้ควรมีพาร์ติชัน super ขนาด 12 GB
บีบอัด
สำหรับอุปกรณ์ Virtual A/B ที่บีบอัด ให้ทำดังนี้
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = FinalDessertSize + FinalOTASnapshotSize
ตัวอย่างเช่น พิจารณาอุปกรณ์ Virtual A/B ที่บีบอัดซึ่งมีขนาดจากโรงงาน 4 GB และการเติบโตที่คาดไว้ 50% การคำนวณสำหรับอุปกรณ์นี้จะเป็นดังนี้เพื่อให้มั่นใจว่าอุปกรณ์จะไม่ใช้ /data สำหรับ Snapshot OTA
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = 6GB + 4.2GB = 10.2GB
ดังนั้น อุปกรณ์นี้ควรมีพาร์ติชัน super ขนาด 10.2 GB
ข้อควรระวัง
คุณอาจสังเกตเห็นว่าหากขนาดจากโรงงานคือ 4 GB และการอัปเดตครั้งสุดท้ายมีขนาด 5 GB ดังนั้น super ควรมีขนาด 9 GB ไม่ใช่ 10 GB อย่างไรก็ตาม หากการอัปเดตครั้งแรกและการอัปเดตครั้งสุดท้ายมีขนาด 5 GB ทั้งคู่ พื้นที่ใน super อาจไม่เพียงพอสำหรับการอัปเดตครั้งสุดท้าย สูตรด้านบนสันนิษฐานว่าพาร์ติชันอาจเติบโตขึ้นได้ทุกเมื่อ พื้นที่ที่ต้องใช้ในการอัปเดตครั้งสุดท้ายอาจเท่ากับพื้นที่ที่ต้องใช้ในการอัปเดตครั้งแรก
โปรดทราบว่าอัตราส่วนการบีบอัดเป็นค่าประมาณ รูปภาพระบบปฏิบัติการอาจบีบอัดได้ดีขึ้นหรือแย่ลงขึ้นอยู่กับเนื้อหา หากใช้ระบบไฟล์ที่บีบอัด เช่น EROFS การบีบอัดเพิ่มเติมจาก Virtual A/B จะให้ผลตอบแทนลดลง ในกรณีนี้ การใช้สูตรที่ไม่บีบอัดสูตรใดสูตรหนึ่งเป็นแนวทางจะดีกว่า
คำนวณขนาด
หากต้องการหาค่า FactorySize ในตัวอย่างก่อนหน้า ให้รวมขนาดของพาร์ติชันแบบไดนามิกทั้งหมดเข้าด้วยกัน รูปภาพพาร์ติชันแบบไดนามิกของ AOSP ได้แก่
system.imgvendor.imgproduct.imgsystem_ext.imgvendor_dlkm.imgsystem_dlkm.img
ตรวจสอบว่าได้คำนวณขนาดตามรูปภาพที่ไม่กระจัดกระจาย เมื่อสร้าง Android 12 หรือต่ำกว่า ระบบจะกระจัดกระจายรูปภาพโดยค่าเริ่มต้น และคุณสามารถทำให้รูปภาพไม่กระจัดกระจายได้ด้วย simg2img
นอกจากนี้ คุณยังคำนวณขนาดพาร์ติชันจากแพ็กเกจ OTA ได้ด้วย การทำเช่นนี้ยังเป็นการประมาณขนาด Snapshot Virtual A/B สำหรับแต่ละพาร์ติชันด้วย
python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip
หรือคุณจะใช้เครื่องมือวิเคราะห์ OTA ก็ได้ เครื่องมือนี้จะไม่ได้อัปโหลดไฟล์ใดๆ และจะวิเคราะห์แพ็กเกจ OTA ในเครื่อง
หากต้องการหาค่า ExpectedGrowth ให้ใช้อุปกรณ์ที่เผยแพร่ก่อนหน้านี้ ใช้รูปภาพ super ที่เก่าที่สุดและล่าสุดเพื่อคำนวณการเติบโต