Menentukan ukuran partisi super
dengan benar sangat penting untuk kemampuan update perangkat. Ukuran
secara langsung memengaruhi jumlah update yang dapat dilakukan perangkat dan jumlah pengguna yang berhasil melakukan
update tersebut.
Ada beberapa variabel penting yang perlu dipertimbangkan. Yang pertama adalah ukuran pabrik, yang merupakan ukuran semua partisi dinamis saat perangkat pertama kali di-flash. Yang kedua adalah tingkat pertumbuhan, yaitu persentase peningkatan ukuran OS selama seluruh 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 terlalu banyak ruang yang diperlukan di
/data
, beberapa pengguna tidak dapat (atau tidak mau) melakukan update. Namun, jika diketahui
bahwa sebagian besar pengguna memiliki beberapa persentase ruang kosong, 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 ukuran partisi super
berdasarkan variabel
ini.
Mengandalkan /data
A/B virtual mendorong pengecilan 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. Menemukan jumlah ini sangat bergantung pada hardware perangkat dan
perilaku pengguna perangkat tersebut. Pada contoh di bawah, angka ini disebut sebagai
AllowedUserdataUse
.
Tanpa kompresi
Tanpa kompresi, OTA lengkap memerlukan snapshot yang ukurannya kira-kira sama dengan OS, sehingga harus
diperhitungkan saat menentukan ukuran super
:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
Misalnya, pertimbangkan perangkat Virtual A/B dengan ukuran pabrik 4 GB, perkiraan pertumbuhan
50%, dan pengetahuan bahwa hampir semua pengguna memiliki ruang kosong sebesar 1 GB (atau bersedia mengosongkan ruang hingga 1 GB
untuk update). Untuk perangkat ini, super
dapat diukur seperti ini:
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 lengkap memerlukan snapshot 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 Virtual A/B, dengan ukuran pabrik sebesar
4 GB, perkiraan pertumbuhan 50%, dan pengetahuan bahwa hampir semua pengguna memiliki 1 GB ruang kosong (atau bersedia
mengosongkan ruang hingga 1 GB untuk update). Untuk perangkat ini, super
dapat diukur
seperti ini:
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
Dengan demikian, perangkat ini harus memiliki partisi super
sebesar 9,2 GB.
Tanpa mengandalkan /data
Jika Anda ingin memiliki OTA yang tidak pernah memerlukan ruang snapshot di /data
, maka ukuran
super
akan 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 Virtual A/B dengan ukuran pabrik 4 GB dan perkiraan pertumbuhan
50%. Untuk memastikan perangkat ini tidak pernah menggunakan /data
untuk snapshot OTA, penghitungannya akan
terlihat seperti:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
Dengan demikian, 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, penghitungannya
akan terlihat seperti:
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
sebesar 10,2 GB.
Peringatan
Anda mungkin tergoda untuk mengamati bahwa jika ukuran pabrik adalah 4 GB, dan update akhir adalah
5 GB, maka super
harus berukuran 9 GB, bukan 10 GB. Namun, jika
update pertama dan update final masing-masing berukuran 5 GB, ruang di super
mungkin
tidak cukup untuk update final. 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 estimasi. Image OS mungkin dikompresi dengan lebih baik atau lebih buruk bergantung pada kontennya. Jika menggunakan sistem file yang dikompresi seperti EROFS, kompresi tambahan dari Virtual A/B akan memiliki hasil yang semakin menurun. Dalam hal ini, sebaiknya gunakan salah satu formula yang tidak dikompresi sebagai panduan.
Menghitung ukuran
Untuk menemukan nilai FinalDessertSize
dalam contoh di atas, tambahkan ukuran semua
partisi dinamis secara bersamaan. Image partisi dinamis AOSP adalah:
system.img
vendor.img
product.img
system_ext.img
vendor_dlkm.img
system_dlkm.img
Pastikan untuk menghitung ukuran berdasarkan gambar yang tidak diuraikan. Saat mem-build Android
12 atau yang lebih rendah, gambar di-sparse secara default, dan dapat di-unparse dengan
simg2img
.
Anda juga dapat menghitung ukuran partisi dari paket OTA. Tindakan ini juga memperkirakan ukuran snapshot A/B Virtual untuk setiap partisi:
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.