Mengatur ukuran partisi super dengan benar penting untuk kemampuan update perangkat. Ukuran
secara langsung memengaruhi jumlah update yang dapat dilakukan perangkat dan jumlah pengguna yang dapat berhasil melakukan update tersebut.
Ada beberapa variabel penting yang perlu dipertimbangkan. Yang pertama adalah ukuran pabrik, yaitu ukuran semua partisi dinamis saat perangkat pertama kali di-flash. Yang kedua adalah tingkat pertumbuhan, yaitu persentase peningkatan ukuran OS selama masa pakai perangkat yang dapat diupdate.
Selain itu, perangkat A/B Virtual dapat menggunakan ruang di /data selama update, dan hal ini harus dipertimbangkan saat menentukan ukuran super. Jika ruang yang diperlukan terlalu besar di
/data, beberapa pengguna tidak dapat (atau tidak mau) melakukan update. Namun, jika diketahui bahwa sebagian besar pengguna memiliki ruang kosong dengan persentase tertentu, perangkat dapat dengan mudah mengurangi ruang tersebut dari super. Atau, perangkat dapat menjamin bahwa /data tidak pernah diperlukan, cukup dengan membuat super cukup besar.
Berikut adalah beberapa model untuk membantu memandu penentuan ukuran partisi super berdasarkan variabel ini.
Mengandalkan /data
A/B virtual mendorong penyusutan super untuk memungkinkan peningkatan ukuran
/data. Sebagian ruang tersebut diperlukan selama update. Untuk memahami dampaknya terhadap kemampuan update, penting untuk mengetahui persentase perangkat yang kemungkinan memiliki jumlah ruang kosong tersebut dari waktu ke waktu. Mengetahui jumlah ini sangat bergantung pada hardware perangkat dan perilaku pengguna perangkat tersebut. Dalam contoh di bawah, angka ini disebut sebagai
AllowedUserdataUse.
Tanpa kompresi
Tanpa kompresi, OTA penuh memerlukan snapshot yang ukurannya hampir sama dengan OS, sehingga hal ini harus diperhitungkan saat menentukan ukuran super:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
Misalnya, pertimbangkan perangkat A/B Virtual dengan ukuran pabrikan 4 GB, perkiraan pertumbuhan 50%, dan pengetahuan bahwa hampir semua pengguna memiliki ruang kosong 1 GB (atau bersedia mengosongkan ruang hingga 1 GB untuk update). Untuk perangkat ini, super dapat diukur seperti berikut:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
Dengan demikian, perangkat ini harus memiliki partisi super 11 GB.
Dengan kompresi
Dengan kompresi, OTA penuh memerlukan snapshot yang ukurannya sekitar 70% dari ukuran OS:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
Misalnya, pertimbangkan perangkat yang dikonfigurasi dengan kompresi A/B Virtual, dengan ukuran pabrik 4 GB, perkiraan pertumbuhan 50%, dan pengetahuan bahwa hampir semua pengguna memiliki ruang kosong 1 GB (atau bersedia mengosongkan ruang hingga 1 GB untuk update). Untuk perangkat ini, super dapat diubah ukurannya seperti berikut:
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
Jadi, perangkat ini harus memiliki partisi super berukuran 9,2 GB.
Tanpa mengandalkan /data
Jika Anda ingin memiliki OTA yang tidak pernah memerlukan ruang snapshot di /data, maka penentuan ukuran
super sangat mudah.
Tanpa kompresi
Untuk perangkat A/B Virtual tanpa kompresi, atau perangkat A/B normal:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
Misalnya, pertimbangkan perangkat A/B Virtual dengan ukuran pabrik 4 GB dan perkiraan pertumbuhan
sebesar 50%. Untuk memastikan perangkat ini tidak pernah menggunakan /data untuk snapshot OTA, perhitungannya akan terlihat seperti:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
Jadi, perangkat ini harus memiliki partisi super 12 GB.
Dengan kompresi
Untuk perangkat A/B Virtual dengan kompresi:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = FinalDessertSize + FinalOTASnapshotSize
Misalnya, pertimbangkan perangkat kompresi A/B Virtual dengan ukuran pabrik 4 GB dan
perkiraan pertumbuhan 50%. Untuk memastikan perangkat ini tidak pernah menggunakan /data untuk snapshot OTA, perhitungannya akan terlihat seperti berikut:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = 6GB + 4.2GB = 10.2GB
Dengan demikian, perangkat ini harus memiliki partisi super berukuran 10,2 GB.
Peringatan
Mungkin Anda tergoda untuk mengamati bahwa jika ukuran pabrik adalah 4 GB, dan update akhir adalah
5 GB, maka super harus 9 GB, bukan 10 GB. Namun, jika update pertama dan update terakhir berukuran 5 GB, ruang di super mungkin tidak cukup untuk update terakhir. Formula di atas mengasumsikan bahwa pertumbuhan partisi dapat terjadi kapan saja. Ruang yang diperlukan untuk menerapkan update akhir mungkin sama dengan yang diperlukan untuk menerapkan update pertama.
Perhatikan bahwa rasio kompresi adalah perkiraan. Image OS mungkin dikompresi lebih baik atau lebih buruk bergantung pada isinya. Jika menggunakan sistem file yang dikompresi seperti EROFS, kompresi tambahan dari A/B Virtual akan memberikan hasil yang semakin berkurang. Dalam hal ini, sebaiknya gunakan salah satu formula yang tidak dikompresi sebagai panduan.
Menghitung ukuran
Untuk menemukan nilai FactorySize dalam contoh sebelumnya, tambahkan ukuran semua partisi dinamis. Image partisi dinamis AOSP adalah:
system.imgvendor.imgproduct.imgsystem_ext.imgvendor_dlkm.imgsystem_dlkm.img
Pastikan untuk menghitung ukuran berdasarkan gambar yang tidak di-sparse. Saat mem-build Android
12 atau yang lebih rendah, gambar akan di-sparse secara default, dan dapat di-unsparse dengan
simg2img.
Anda juga dapat menghitung ukuran partisi dari paket OTA. Dengan demikian, ukuran snapshot A/B Virtual untuk setiap partisi juga diperkirakan:
python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip
Atau, Anda dapat menggunakan Alat Analisis OTA. Alat ini tidak mengupload file apa pun dan menganalisis paket OTA secara lokal.
Untuk menemukan nilai ExpectedGrowth, gunakan perangkat yang dirilis sebelumnya. Gunakan gambar super paling awal dan terbaru untuk menghitung pertumbuhan.