Süper nasıl boyutlandırılır

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.