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, yaitu ukuran semua partisi dinamis saat perangkat pertama kali di-flash. Yang kedua adalah tingkat pertumbuhan, yang merupakan persentase peningkatan ukuran OS di seluruh masa pakai perangkat yang dapat diperbarui.
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 dibutuhkan
/data
, berarti 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 penyingkatan super
untuk memungkinkan peningkatan ukuran
/data
. Sebagian dari ruang tersebut diperlukan selama update. Untuk memahami dampaknya terhadap
kemampuan update, penting untuk mengetahui persentase perangkat
yang cenderung memiliki jumlah
ruang kosong dari waktu ke waktu. Mencari tahu angka ini sangat tergantung
pada perangkat keras dan
pengguna perilaku perangkat tersebut. Pada contoh di bawah, angka ini disebut sebagai
AllowedUserdataUse
.
Tanpa kompresi
Tanpa kompresi, OTA lengkap memerlukan {i>snapshot<i} dengan ukuran yang kira-kira sama dengan OS, sehingga
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 berukuran 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 kira-kira 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, pertumbuhan yang diharapkan sebesar 50%, dan pengetahuan bahwa hampir semua pengguna memiliki penyimpanan 1 GB gratis (atau bersedia
untuk mengosongkan ruang penyimpanan 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
9,2 GB.
Tanpa mengandalkan /data
Jika Anda ingin memiliki OTA yang tidak memerlukan ruang snapshot pada /data
, ubah 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, penghitungannya akan
seperti ini:
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 ini:
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 bisa terjadi pada
kapan saja. Ruang yang diperlukan untuk menerapkan update akhir mungkin sama dengan yang diperlukan untuk menerapkan update
pertama.
Perhatikan bahwa rasio kompresi merupakan perkiraan. 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.
Hitung 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 membangun Android
12 atau lebih rendah, gambar diurai secara default, dan dapat diurai 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.