super
bölümün doğru boyutlandırılması cihazın güncellenebilirliği açısından önemlidir. Boyut, bir cihazın kaç güncelleme alabileceğini ve kaç kullanıcının bu güncellemeleri başarıyla alabileceğini doğrudan etkiler.
Dikkate alınması gereken birkaç önemli değişken vardır. Birincisi, cihaz ilk kez flaşlandığında tüm dinamik bölümlerin boyutu olan fabrika boyutudur . İkincisi, cihazın tüm güncellenebilir ömrü boyunca işletim sistemi boyutunun arttığı yüzdeyi ifade eden büyüme oranıdır .
Ek olarak, Virtual A/B cihazları güncelleme sırasında /data
üzerinde alan kullanabilir ve super
boyutlandırılırken bu dikkate alınmalıdır. /data
üzerinde çok fazla alan gerekiyorsa, bazı kullanıcılar güncellemeyi alamıyor (veya almak istemiyor). Bununla birlikte, çoğu kullanıcının belirli bir oranda boş alana sahip olduğu biliniyorsa, cihazlar bu alanı rahatlıkla super
çıkarabilir. Veya cihazlar, yalnızca super
büyük hale getirerek /data
hiçbir zaman ihtiyaç duyulmayacağını garanti edebilir.
Aşağıda, bu değişkenlere dayalı olarak super
bölümün boyutlandırılmasına rehberlik edecek bazı modeller bulunmaktadır.
/verilere güvenmek
Virtual A/B, /data
boyutunun artırılmasına izin vermek için super
küçültülmesini teşvik eder. Güncelleme sırasında bu alanın bir kısmına ihtiyaç duyulur. Güncellenebilirlik üzerindeki etkiyi anlamak için, cihazların yüzde kaçının zaman içinde bu miktarda boş alana sahip olabileceğini bilmek önemlidir. Bu sayının belirlenmesi büyük ölçüde cihazın donanımına ve kullanıcıların bu cihaza ilişkin davranışına bağlıdır. Aşağıdaki örneklerde bu numaraya AllowedUserdataUse
adı verilmektedir.
Sıkıştırma olmadan
Sıkıştırma olmadan, tam bir OTA'nın işletim sistemiyle hemen hemen aynı boyutta bir anlık görüntüye ihtiyacı vardır, bu nedenle super
boyutlandırılırken bu dikkate alınmalıdır:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
Örneğin, fabrika boyutu 4 GB olan, %50 büyüme beklenen ve hemen hemen tüm kullanıcıların 1 GB boş alana sahip olduğu (veya bir güncelleme için 1 GB'a kadar alan boşaltmaya istekli olduğu) bilgisine sahip bir Sanal A/B cihazını düşünün. . Bu cihaz için super
şu şekilde boyutlandırılabilir:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
Dolayısıyla bu cihazın 11 GB'lık bir super
bölümü olması gerekir.
Sıkıştırma ile
Sıkıştırma ile tam bir OTA, işletim sistemi boyutunun kabaca %70'i kadar bir anlık görüntüye ihtiyaç duyar:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
Örneğin, Sanal A/B sıkıştırması ile yapılandırılmış, fabrika boyutu 4 GB, beklenen %50 büyüme ve hemen hemen tüm kullanıcıların 1 GB boş alana sahip olduğu (veya kullanıcılar için 1 GB'a kadar alan boşaltmaya istekli olduğu) bilgisine sahip bir cihazı düşünün. bir güncelleme). Bu cihaz için super
şu şekilde boyutlandırılabilir:
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
Dolayısıyla bu cihazın 9,2 GB'lık bir super
bölümü olması gerekir.
/data'ya güvenmeden
/data
üzerinde hiçbir zaman anlık görüntü alanı gerektirmeyen OTA'lara sahip olmak istiyorsanız, super
boyutlandırmak basittir.
Sıkıştırma olmadan
Sıkıştırılmamış bir Sanal A/B cihazı veya normal bir A/B cihazı için:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
Örneğin, fabrika boyutu 4 GB olan ve %50 büyüme beklenen bir Sanal A/B cihazını düşünün. Bu cihazın OTA anlık görüntüleri için hiçbir zaman /data
kullanmadığından emin olmak için hesaplaması şöyle görünecektir:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
Dolayısıyla bu cihazın 12 GB'lık bir super
bölümü olması gerekir.
Sıkıştırma ile
Sıkıştırmalı bir Sanal A/B cihazı için:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = FinalDessertSize + FinalOTASnapshotSize
Örneğin, fabrika boyutu 4 GB olan ve %50 büyüme beklenen bir Sanal A/B sıkıştırma cihazını düşünün. Bu cihazın OTA anlık görüntüleri için hiçbir zaman /data
kullanmadığından emin olmak için hesaplaması şöyle görünecektir:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = 6GB + 4.2GB = 10.2GB
Dolayısıyla bu cihazın 10,2 GB'lık bir super
bölümü olması gerekir.
Uyarılar
Fabrika boyutu 4 GB ve son güncelleme 5 GB ise super
boyutun 10 GB yerine 9 GB olması gerektiğini gözlemlemek cazip gelebilir. Ancak ilk güncelleme ve son güncellemenin her ikisi de 5 GB ise super
alan son güncelleme için yeterli olmayabilir. Yukarıdaki formüller bölünme büyümesinin herhangi bir zamanda gerçekleşebileceğini varsaymaktadır. Son güncellemeyi uygulamak için gereken alan, ilk güncellemeyi uygulamak için gereken alanla aynı olabilir.
Sıkıştırma oranlarının bir tahmin olduğunu unutmayın. Bir işletim sistemi görüntüsü, içeriğine bağlı olarak daha iyi veya daha kötü sıkıştırılabilir. EROFS gibi sıkıştırılmış bir dosya sistemi kullanılıyorsa, Virtual A/B'den gelen ek sıkıştırmanın getirisi azalır. Bu durumda sıkıştırılmamış formüllerden birini kılavuz olarak kullanmak daha iyidir.
Ölçme
Yukarıdaki örneklerde FinalDessertSize
değerini bulmak için tüm dinamik bölümlerin boyutlarını birbirine ekleyin. AOSP dinamik bölüm görüntüleri şunlardır:
-
system.img
-
vendor.img
-
product.img
-
system_ext.img
-
vendor_dlkm.img
-
system_dlkm.img
Boyutu ayrıştırılmamış görsellere göre hesapladığınızdan emin olun. Android 12 veya daha düşük bir sürüm oluştururken görüntüler varsayılan olarak ayrıştırılır ve simg2img
ile ayrıştırma kaldırılabilir.
Bir OTA paketinden bölüm boyutlarını hesaplamak da mümkündür. Bunu yapmak aynı zamanda her bölüm için Sanal A/B anlık görüntü boyutunu da tahmin eder:
python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip
Veya OTA Analiz Aracını kullanabilirsiniz. Bu araç herhangi bir dosya yüklemez ve OTA paketlerini yerel olarak analiz eder.
ExpectedGrowth
değerini bulmak için önceden yayınlanmış bir cihazı kullanın. Büyümeyi hesaplamak için en eski ve en yeni super
görüntüyü kullanın.