ปรับขนาดพาร์ติชันระดับซูเปอร์

การปรับขนาดพาร์ติชัน super ให้ถูกต้องเป็นสิ่งสำคัญสำหรับการอัปเดตอุปกรณ์ ขนาดจะส่งผลโดยตรงต่อจำนวนอัปเดตที่อุปกรณ์สามารถทำได้และจำนวนผู้ใช้ที่อัปเดตได้สําเร็จ

ตัวแปรสำคัญ 2-3 อย่างที่ต้องพิจารณามีดังนี้ รายการแรกคือขนาดเริ่มต้น ซึ่งเป็นขนาดของพาร์ติชันแบบไดนามิกทั้งหมดเมื่อแฟลชอุปกรณ์เป็นครั้งแรก ส่วนที่สองคืออัตราการเติบโต ซึ่งเป็นเปอร์เซ็นต์ที่ขนาดระบบปฏิบัติการเพิ่มขึ้นตลอดอายุการใช้งานที่อัปเดตได้ของอุปกรณ์

นอกจากนี้ อุปกรณ์ A/B เสมือนยังใช้พื้นที่ใน /data ในระหว่างการอัปเดตได้ ซึ่งต้องพิจารณาเรื่องนี้เมื่อปรับขนาด super หากต้องใช้พื้นที่ใน /data มากเกินไป ผู้ใช้บางรายจะอัปเดตไม่ได้ (หรือไม่ต้องการอัปเดต) อย่างไรก็ตาม หากทราบว่าผู้ใช้ส่วนใหญ่มีพื้นที่ว่างอยู่บ้าง อุปกรณ์ก็สามารถลบพื้นที่ว่างนั้นออกจาก super ได้ หรืออุปกรณ์อาจรับประกันว่าไม่จำเป็นต้องใช้ /data เลย เพียงแค่ทำให้ super มีขนาดมากพอ

ด้านล่างนี้คือรูปแบบบางส่วนที่จะช่วยแนะนำขนาดsuperพาร์ติชันตามตัวแปรเหล่านี้

ใช้ /data

การทดสอบ 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 GB

มีการบีบอัด

เมื่อใช้การบีบอัด OTA แบบสมบูรณ์ต้องใช้สแนปชอตขนาดประมาณ 70% ของขนาดระบบปฏิบัติการ ดังนี้

  FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth)
  FinalOTASnapshotSize = FinalDessertSize * 0.7
  Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)

ตัวอย่างเช่น พิจารณาอุปกรณ์ที่กําหนดค่าด้วยการบีบอัด 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 ที่ไม่ต้องใช้พื้นที่สแนปชอตใน /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 GB

ข้อจำกัด

คุณอาจคิดว่าหากขนาดเริ่มต้นคือ 4 GB และการอัปเดตครั้งสุดท้ายคือ 5 GB super ต้องเป็น 9 GB ไม่ใช่ 10 GB อย่างไรก็ตาม หากการอัปเดตครั้งแรกและการอัปเดตครั้งสุดท้ายมีขนาด 5 GB เท่ากัน พื้นที่ใน super อาจไม่เพียงพอสำหรับการอัปเดตครั้งสุดท้าย สูตรด้านบนจะถือว่าการขยายขนาดพาร์ติชันอาจเกิดขึ้นได้ทุกเมื่อ พื้นที่ที่จำเป็นในการใช้การอัปเดตครั้งสุดท้ายอาจเหมือนกับพื้นที่ที่จำเป็นในการใช้การอัปเดตครั้งแรก

โปรดทราบว่าอัตราส่วนการบีบอัดเป็นเพียงค่าประมาณ อิมเมจระบบปฏิบัติการอาจบีบอัดได้ดีขึ้นหรือแย่ลง ทั้งนี้ขึ้นอยู่กับเนื้อหา หากใช้ระบบไฟล์แบบบีบอัด เช่น EROFS การบีบอัดเพิ่มเติมจาก A/B เสมือนจะให้ผลตอบแทนที่ลดลง ในกรณีนี้ คุณควรใช้สูตรแบบไม่บีบอัดสูตรใดสูตรหนึ่งเป็นแนวทาง

คำนวณขนาด

หากต้องการหาค่าของ FinalDessertSize ในตัวอย่างข้างต้น ให้เพิ่มขนาดของพาร์ติชันแบบไดนามิกทั้งหมดเข้าด้วยกัน รูปภาพพาร์ติชันแบบไดนามิกของ AOSP มีดังนี้

  • system.img
  • vendor.img
  • product.img
  • system_ext.img
  • vendor_dlkm.img
  • system_dlkm.img

อย่าลืมคำนวณขนาดตามรูปภาพที่ยังไม่ได้แยกวิเคราะห์ เมื่อสร้าง Android 12 หรือต่ำกว่า ระบบจะแยกรูปภาพโดยค่าเริ่มต้น และสามารถยกเลิกการแยกได้ด้วย simg2img

นอกจากนี้ คุณยังคำนวณขนาดพาร์ติชันจากแพ็กเกจ OTA ได้ด้วย ซึ่งการดําเนินการดังกล่าวจะประมาณขนาดสแนปชอต A/B เสมือนสําหรับแต่ละพาร์ติชันด้วย

  python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip

หรือจะใช้เครื่องมือวิเคราะห์ OTA ก็ได้ เครื่องมือนี้จะไม่อัปโหลดไฟล์ใดๆ และวิเคราะห์แพ็กเกจ OTA ในเครื่อง

หากต้องการค้นหาค่าของ ExpectedGrowth ให้ใช้อุปกรณ์ที่เปิดตัวก่อนหน้านี้ ใช้รูปภาพ super รูปแรกสุดและล่าสุดเพื่อคํานวณการเติบโต