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

super bölümünü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. Bunlardan ilki fabrika boyutudur. Bu, cihaz ilk kez flaşlandıktan sonra tüm dinamik bölümlerin boyutudur. İkincisi, büyüme oranı'dır. Bu, cihazın güncellenebilir ömrü boyunca işletim sistemi boyutunun arttığı yüzdedir.

Ayrıca sanal A/B cihazları, güncelleme sırasında /data'te yer kullanabilir. super'ün boyutu belirlenirken bu durum dikkate alınmalıdır. /data için çok fazla alan gerekirse bazı kullanıcılar güncellemeyi yapamaz (veya yapmak istemez). Ancak çoğu kullanıcının belirli bir yüzdelik boş alanı olduğu biliniyorsa cihazlar bu alanı super'ten rahatlıkla çıkarabilir. Alternatif olarak cihazlar, super'u yeterince büyük yaparak /data'e hiçbir zaman ihtiyaç duyulmayacağını garanti edebilir.

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

/data'yı kullanın

Sanal A/B, /data boyutunun artırılması için super boyutunun küçültülmesini önerir. Bu alanın bir kısmı güncelleme sırasında kullanılır. Güncelleme yapılabilirliği üzerindeki etkisini anlamak için cihazların yüzde kaçının zaman içinde bu kadar boş alana sahip olacağını bilmek önemlidir. Bu sayıyı belirlemek büyük ölçüde cihazın donanımına ve kullanıcıların cihazla ilgili davranışlarına bağlıdır. Aşağıdaki örneklerde bu sayıya AllowedUserdataUse denir.

Sıkıştırma olmadan

Sıkıştırma olmadan tam bir OTA için işletim sistemiyle yaklaşık olarak aynı boyutta bir anlık görüntü gerekir. Bu nedenle, super boyutu belirlenirken 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 oranında büyüme beklenen ve neredeyse tüm kullanıcıların 1 GB boş alanı olduğunu (veya güncelleme için 1 GB'a kadar yer açmaya hazır olduğunu) bildiğiniz bir sanal A/B cihazı 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)

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

Sıkıştırma ile

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

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

Örneğin, fabrika boyutu 4 GB olan, %50 oranında beklenen büyüme ve neredeyse tüm kullanıcıların 1 GB boş alanı olduğu (veya güncelleme için 1 GB'a kadar yer açmaya hazır olduğu) bilinen, sanal A/B sıkıştırma ile yapılandırılmış bir cihazı düşünün. 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

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

/data'ya gerek kalmadan

/data üzerinde hiçbir zaman anlık görüntü alanı gerektirmeyen OTA'lara sahip olmak istiyorsanız super'ü boyutlandırmak kolaydır.

Sıkıştırma olmadan

Sıkıştırma içermeyen sanal A/B cihazlar veya normal A/B cihazlar için:

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

Örneğin, fabrika boyutu 4 GB ve beklenen büyüme oranı %50 olan bir sanal A/B cihazı düşünün. 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, bu cihazda 12 GB super bölümü olmalıdır.

Sıkıştırma ile

Sıkıştırma içeren sanal A/B cihaz için:

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

Örneğin, fabrika boyutu 4 GB ve beklenen büyüme oranı %50 olan 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 kullanmadığından emin olmak 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, bu cihazda 10,2 GB 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ğini düşünmek cazip gelebilir. Ancak hem ilk güncelleme hem de nihai güncelleme 5 GB ise super'teki alan nihai güncelleme için yeterli olmayabilir. Yukarıdaki formüllerde, bölüm büyümesinin herhangi bir zamanda gerçekleşebileceği varsayılır. Nihai 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ıyorsanız sanal A/B'den gelen ek sıkıştırma, artan maliyetle birlikte artan bir getiri sağlamaz. Bu durumda, sıkıştırılmamış formüllerden birini referans olarak kullanmak daha iyidir.

Boyutu hesaplama

Yukarıdaki örneklerde FinalDessertSize 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, ayrıştırılmamış resimlere göre hesapladığınızdan emin olun. Android 12 veya önceki sürümler derlenirken resimler varsayılan olarak seyrekleştirilir ve simg2img ile seyrekleştirilebilir.

OTA paketinden bölüm boyutlarını hesaplamak da mümkündür. Bu işlem, 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

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.