Bagaimana ukuran Super

Mengukur partisi super dengan benar penting untuk kemampuan pembaruan perangkat. Ukurannya secara langsung memengaruhi berapa banyak pembaruan yang dapat dilakukan perangkat dan berapa banyak pengguna yang berhasil melakukan pembaruan 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 selama masa pakai perangkat yang dapat diupdate.

Selain itu, perangkat Virtual A/B dapat menggunakan ruang pada /data selama pembaruan, dan ini harus dipertimbangkan saat menentukan ukuran super . Jika terlalu banyak ruang yang dibutuhkan /data , maka beberapa pengguna tidak dapat (atau tidak mau) melakukan pembaruan. Namun, jika diketahui bahwa sebagian besar pengguna memiliki persentase ruang kosong tertentu, maka perangkat dapat dengan mudah mengurangi ruang tersebut dari super . Atau, perangkat dapat menjamin bahwa /data tidak diperlukan, cukup dengan membuatnya berukuran super besar.

Berikut adalah beberapa model untuk membantu memandu ukuran partisi super berdasarkan variabel-variabel ini.

Mengandalkan /data

Virtual A/B mendorong penyusutan super untuk memungkinkan peningkatan ukuran /data . Sebagian dari ruang itu diperlukan selama pembaruan. Untuk memahami dampaknya terhadap kemampuan pembaruan, penting untuk mengetahui berapa persentase perangkat yang cenderung memiliki jumlah ruang kosong tersebut seiring berjalannya waktu. Mengetahui angka ini sangat bergantung pada perangkat keras perangkat dan perilaku pengguna perangkat tersebut. Pada contoh di bawah, nomor ini disebut sebagai AllowedUserdataUse .

Tanpa kompresi

Tanpa kompresi, OTA penuh memerlukan snapshot yang kira-kira berukuran sama dengan OS, sehingga harus diperhitungkan saat menentukan super :

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

Misalnya, pertimbangkan perangkat Virtual A/B dengan ukuran pabrik sebesar 4 GB, perkiraan pertumbuhan sebesar 50%, dan pengetahuan bahwa hampir semua pengguna memiliki ruang kosong 1 GB (atau bersedia mengosongkan ruang hingga 1 GB untuk pembaruan) . Untuk perangkat ini, super bisa berukuran seperti ini:

  FinalDessertSize = 4GB + (4GB * 0.5) = 6GB
  Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)

Jadi, perangkat ini harus memiliki partisi super 11 GB.

Dengan kompresi

Dengan kompresi, OTA penuh 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 A/B Virtual, dengan ukuran pabrik sebesar 4 GB, perkiraan pertumbuhan sebesar 50%, dan pengetahuan bahwa hampir semua pengguna memiliki ruang kosong 1 GB (atau bersedia mengosongkan ruang hingga 1 GB untuk Sebuah pembaharuan). Untuk perangkat ini, super bisa berukuran 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

Jadi, perangkat ini harus memiliki partisi super 9,2 GB.

Tanpa bergantung pada /data

Jika Anda ingin memiliki OTA yang tidak memerlukan ruang snapshot /data , maka menentukan ukuran super sangatlah mudah.

Tanpa kompresi

Untuk perangkat Virtual A/B tanpa kompresi, atau perangkat A/B normal:

  FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth)
  Super = FinalDessertSize * 2

Misalnya, pertimbangkan perangkat Virtual A/B dengan ukuran pabrik sebesar 4 GB dan perkiraan pertumbuhan sebesar 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

Jadi, perangkat ini harus memiliki partisi super 12 GB.

Dengan kompresi

Untuk perangkat Virtual A/B dengan kompresi:

  FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth)
  FinalOTASnapshotSize = FinalDessertSize * 0.7
  Super = FinalDessertSize + FinalOTASnapshotSize

Misalnya, pertimbangkan perangkat kompresi A/B Virtual dengan ukuran pabrik sebesar 4 GB dan perkiraan pertumbuhan sebesar 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

Jadi, perangkat ini harus memiliki partisi super 10,2 GB.

Peringatan

Mungkin tergoda untuk mengamati bahwa jika ukuran pabrik adalah 4 GB, dan pembaruan terakhir adalah 5 GB, maka super harus berukuran 9 GB, bukan 10 GB. Namun, jika pembaruan pertama dan pembaruan terakhir sama-sama berukuran 5 GB, maka ruang di super mungkin tidak cukup untuk pembaruan terakhir. Rumus di atas mengasumsikan pertumbuhan partisi bisa terjadi kapan saja. Ruang yang diperlukan untuk menerapkan pembaruan terakhir mungkin sama dengan yang diperlukan untuk menerapkan pembaruan pertama.

Perhatikan bahwa rasio kompresi merupakan perkiraan. Gambar OS mungkin terkompresi lebih baik atau lebih buruk tergantung pada isinya. Jika menggunakan sistem file terkompresi seperti EROFS, kompresi tambahan dari Virtual A/B memiliki hasil yang semakin berkurang. Dalam hal ini lebih baik menggunakan salah satu rumus yang tidak dikompresi sebagai pedoman.

Ukur

Untuk menemukan nilai FinalDessertSize pada contoh di atas, tambahkan ukuran semua partisi dinamis bersama-sama. Gambar 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 diparsing. Saat membuat Android 12 atau lebih rendah, gambar akan dipisahkan secara default, dan dapat dipisahkan dengan simg2img .

Dimungkinkan juga untuk menghitung ukuran partisi dari paket OTA. Melakukan hal ini juga memperkirakan ukuran snapshot Virtual A/B 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 mengunggah file apa pun dan menganalisis paket OTA secara lokal.

Untuk mengetahui nilai ExpectedGrowth , gunakan perangkat yang dirilis sebelumnya. Gunakan gambar super paling awal dan terbaru untuk menghitung pertumbuhan.