Süper bölümün boyutunu ayarlama

super bölümünün doğru boyutlandırılması, cihazın güncellenebilmesi için ö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. Bunlardan ilki, cihaz ilk kez yanıp söndürüldüğünde tüm dinamik bölümlerin boyutu olan fabrika boyutudur. İkincisi ise büyüme oranıdır. Bu oran, işletim sistemi boyutunun cihazın güncellenebilir ömrü boyunca arttığı yüzdedir.

Ayrıca, sanal A/B cihazlar güncelleme sırasında /data üzerindeki alanı kullanabilir ve bu durum super boyutlandırılırken dikkate alınmalıdır. /data üzerinde çok fazla alan gerekirse bazı kullanıcılar güncellemeyi yükleyemez (veya yüklemek istemez). Ancak çoğu kullanıcının belirli bir oranda boş alanı olduğu biliniyorsa cihazlar bu alanı super değerinden rahatlıkla çıkarabilir. Alternatif olarak, cihazlar super değerini yeterince büyük yaparak /data değerinin hiçbir zaman gerekli olmamasını sağlayabilir.

Aşağıda, bu değişkenlere göre super bölüm boyutlandırmasına yardımcı olacak bazı modeller verilmiştir.

/data'ya güvenme

Sanal A/B testi, super boyutunun küçültülmesini önerir. Böylece /data boyutu artırılabilir. Güncelleme sırasında bu alanın bir kısmı gerekir. Güncellenebilirlik üzerindeki etkiyi anlamak için zaman içinde cihazların ne kadarının bu miktarda boş alana sahip olacağını bilmek önemlidir. Bu sayıyı belirlemek, cihazın donanımına ve kullanıcıların cihazı kullanma şekline büyük ölçüde bağlıdır. Aşağıdaki örneklerde bu sayı AllowedUserdataUse olarak adlandırılır.

Sıkıştırma olmadan

Tam OTA, sıkıştırma olmadan işletim sistemiyle yaklaşık aynı boyutta bir anlık görüntü gerektirir. Bu nedenle, super boyutlandırılırken bu durum 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 neredeyse tüm kullanıcıların 1 GB boş alanı olduğu (veya güncelleme için 1 GB'a kadar alan açmaya istekli olduğu) bilinen bir sanal A/B cihazı düşünün. Bu cihazda super şu şekilde boyutlandırılabilir:

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

Bu nedenle, cihazda 11 GB super bölümü olmalıdır.

Sıkıştırmalı

Sıkıştırma ile tam OTA için işletim sisteminin yaklaşık% 70'i boyutunda bir anlık görüntü gerekir:

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

Örneğin, 4 GB fabrika boyutuna, %50 büyüme beklentisine ve neredeyse tüm kullanıcıların 1 GB boş alana sahip olduğu (veya güncelleme için 1 GB'a kadar alan açmaya istekli olduğu) bilgisine sahip, sanal A/B sıkıştırmasıyla yapılandırılmış bir cihazı ele alalım. Bu cihazda 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

Bu nedenle, bu cihazda 9,2 GB'lık bir super bölümü olmalıdır.

/data'ya güvenmeden

/data üzerinde anlık görüntü alanı gerektirmeyen OTA'lar kullanmak istiyorsanız boyutlandırma super kolaydır.

Sıkıştırma olmadan

Sıkıştırma içermeyen 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ı düşünelim. Bu cihazın OTA anlık görüntüleri için hiçbir zaman /data kullanmamasını sağlamak amacıyla hesaplama şu şekilde yapılır:

  FinalDessertSize = 4GB + (4GB * 0.5) = 6GB
  Super = FinalDessertSize * 2 = 12GB

Bu nedenle, cihazda 12 GB super bölümü olmalıdır.

Sıkıştırmalı

Sıkıştırma özellikli 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ı ele alalım. Bu cihazın OTA anlık görüntüleri için hiçbir zaman /data kullanmamasını sağlamak amacıyla hesaplama şu şekilde yapılır:

  FinalDessertSize = 4GB + (4GB * 0.5) = 6GB
  FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB
  Super = 6GB + 4.2GB = 10.2GB

Bu nedenle, cihazda 10,2 GB'lık bir super bölümü olmalıdır.

Uyarılar

Fabrika boyutu 4 GB ve son güncelleme 5 GB ise super değerinin 10 GB yerine 9 GB olması gerektiği düşünülebilir. Ancak ilk güncelleme ve son güncelleme 5 GB ise super alanında son güncelleme için yeterli yer olmayabilir. Yukarıdaki formüllerde, bölüm büyümesinin herhangi bir zamanda gerçekleşebileceği varsayılmaktadır. Son güncellemenin uygulanması için gereken alan, ilk güncellemenin uygulanması için gereken alanla aynı olabilir.

Sıkıştırma oranlarının tahmini 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 sanal A/B'den elde edilen ek sıkıştırma, azalan getiri sağlar. Bu durumda, kılavuz olarak sıkıştırılmamış formüllerden birini kullanmak daha iyidir.

Boyutu hesaplama

Önceki örneklerde FactorySize değerini bulmak için tüm dinamik bölümlerin boyutlarını toplayın. AOSP dinamik bölüm resimleri şunlardır:

  • system.img
  • vendor.img
  • product.img
  • system_ext.img
  • vendor_dlkm.img
  • system_dlkm.img

Boyutu, seyrek olmayan resimlere göre hesapladığınızdan emin olun. Android 12 veya önceki sürümler oluşturulurken resimler varsayılan olarak seyrek hale getirilir ve simg2img ile seyrekliği kaldırılabilir.

Bölüm boyutlarını bir OTA paketinden de hesaplayabilirsiniz. Bu işlem, her bölüm için sanal A/B anlık görüntüsünün boyutunu da tahmin eder:

  python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip

Alternatif olarak OTA Analiz Aracı'nı da kullanabilirsiniz. Bu araç herhangi bir dosya yüklemez ve OTA paketlerini yerel olarak analiz eder.

ExpectedGrowth değerini bulmak için daha önce piyasaya sürülmüş bir cihaz kullanın. Büyümeyi hesaplamak için en eski ve en yeni super görüntüsünü kullanın.