Bagaimana Ukuran Super

Mengukur partisi super dengan benar penting untuk kemampuan pembaruan perangkat. Ukuran secara langsung memengaruhi berapa banyak pembaruan yang dapat dilakukan perangkat dan berapa banyak pengguna yang berhasil mengambil pembaruan tersebut.

Ada beberapa variabel penting yang perlu dipertimbangkan. Yang pertama adalah factory size , yang merupakan 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 diperbarui.

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

Di bawah ini 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 dampak pada kemampuan pembaruan, penting untuk mengetahui persentase perangkat yang cenderung memiliki jumlah ruang kosong tersebut dari waktu ke waktu. Mencari tahu nomor ini sangat bergantung pada perangkat keras perangkat dan perilaku pengguna perangkat itu. Dalam contoh di bawah, nomor ini disebut sebagai AllowedUserdataUse .

Tanpa kompresi

Tanpa kompresi, OTA penuh membutuhkan snapshot yang ukurannya kira-kira sama dengan OS, sehingga harus diperhitungkan saat mengukur super :

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

Misalnya, pertimbangkan perangkat A/B Virtual dengan ukuran pabrik 4 GB, perkiraan pertumbuhan 50%, dan pengetahuan bahwa hampir semua pengguna memiliki 1 GB gratis (atau bersedia mengosongkan ruang hingga 1 GB untuk pembaruan) . 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 penuh membutuhkan 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 4 GB, pertumbuhan yang diharapkan sebesar 50%, dan pengetahuan bahwa hampir semua pengguna memiliki 1 GB gratis (atau bersedia mengosongkan hingga 1 GB ruang untuk Sebuah pembaharuan). Untuk perangkat ini, super dapat 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

Dengan demikian, perangkat ini harus memiliki partisi super 9,2 GB.

Tanpa mengandalkan /data

Jika Anda ingin memiliki OTA yang tidak pernah memerlukan ruang snapshot di /data , maka 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 sebesar 4 GB dan pertumbuhan yang diharapkan 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

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 sebesar 4 GB dan pertumbuhan yang diharapkan sebesar 50%. Untuk memastikan perangkat ini tidak pernah menggunakan /data untuk snapshot OTA, perhitungannya 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 10,2 GB.

Peringatan

Mungkin tergoda untuk mengamati bahwa jika ukuran pabrik adalah 4 GB, dan pembaruan terakhir adalah 5 GB, maka super harus 9 GB, bukan 10 GB. Namun, jika pembaruan pertama dan pembaruan terakhir sama-sama 5 GB, maka ruang di super mungkin tidak cukup untuk pembaruan terakhir. Rumus di atas mengasumsikan bahwa 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 adalah 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 dalam 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 unsparsed. Saat membuat Android 12 atau lebih rendah, gambar di-sparse secara default, dan dapat di-unsparse dengan simg2img .

Ini juga memungkinkan untuk menghitung ukuran partisi dari paket OTA. Melakukannya 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 mengunggah 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.