Comment tailler Super

Le dimensionnement correct de la super partition est important pour la possibilité de mise à jour du périphérique. La taille a un impact direct sur le nombre de mises à jour qu'un appareil peut prendre et sur le nombre d'utilisateurs qui peuvent effectuer ces mises à jour avec succès.

Il y a quelques variables importantes à considérer. Le premier est la taille d'usine , qui correspond à la taille de toutes les partitions dynamiques lors du premier flashage du périphérique. Le second est le taux de croissance , qui correspond au pourcentage d'augmentation de la taille du système d'exploitation sur toute la durée de vie de l'appareil pouvant être mis à jour.

De plus, les périphériques Virtual A/B peuvent utiliser de l'espace sur /data lors d'une mise à jour, et cela doit être pris en compte lors du dimensionnement super . Si trop d'espace est nécessaire sur /data , certains utilisateurs ne peuvent pas (ou ne veulent pas) effectuer la mise à jour. Cependant, si l'on sait que la plupart des utilisateurs disposent d'un certain pourcentage d'espace libre, les appareils peuvent alors soustraire confortablement cet espace de super . Ou bien, les appareils peuvent garantir que /data ne sera jamais nécessaire, simplement en le rendant super grand.

Vous trouverez ci-dessous quelques modèles pour vous aider à guider le dimensionnement super partitions en fonction de ces variables.

S'appuyer sur /data

Virtual A/B encourage la réduction super pour permettre d'augmenter la taille de /data . Une partie de cet espace est nécessaire lors d'une mise à jour. Pour comprendre l'impact sur la possibilité de mise à jour, il est essentiel de savoir quel pourcentage d'appareils sont susceptibles de disposer de cette quantité d'espace libre au fil du temps. La détermination de ce numéro dépend fortement du matériel de l'appareil et du comportement des utilisateurs de cet appareil. Dans les exemples ci-dessous, ce numéro est appelé AllowedUserdataUse .

Sans compression

Sans compression, un OTA complet a besoin d'un instantané de la même taille que le système d'exploitation, ce qui doit donc être pris en compte lors du dimensionnement super :

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

Par exemple, considérons un appareil virtuel A/B avec une taille d'usine de 4 Go, une croissance attendue de 50 % et sachant que presque tous les utilisateurs disposent de 1 Go d'espace libre (ou sont prêts à libérer jusqu'à 1 Go d'espace pour une mise à jour). . Pour cet appareil, super peut être dimensionné comme suit :

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

Ainsi, cet appareil devrait disposer d’une super partition de 11 Go.

Avec compression

Avec la compression, un OTA complet nécessite un instantané d'environ 70 % de la taille du système d'exploitation :

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

Par exemple, considérons un appareil configuré avec la compression Virtual A/B, avec une taille d'usine de 4 Go, une croissance attendue de 50 % et sachant que presque tous les utilisateurs disposent de 1 Go d'espace libre (ou sont prêts à libérer jusqu'à 1 Go d'espace pour une mise à jour). Pour cet appareil, super peut être dimensionné comme suit :

  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

Ainsi, cet appareil devrait disposer d’une super partition de 9,2 Go.

Sans compter sur /data

Si vous souhaitez avoir des OTA qui ne nécessitent jamais d'espace d'instantané sur /data , alors le dimensionnement super est simple.

Sans compression

Pour un périphérique A/B virtuel sans compression, ou un périphérique A/B normal :

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

Par exemple, considérons un appareil virtuel A/B avec une taille d'usine de 4 Go et une croissance attendue de 50 %. Pour garantir que cet appareil n'utilise jamais /data pour les instantanés OTA, son calcul ressemblerait à :

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

Ainsi, cet appareil devrait disposer d’une super partition de 12 Go.

Avec compression

Pour un périphérique Virtual A/B avec compression :

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

Par exemple, considérons un périphérique de compression A/B virtuel avec une taille d'usine de 4 Go et une croissance attendue de 50 %. Pour garantir que cet appareil n'utilise jamais /data pour les instantanés OTA, son calcul ressemblerait à :

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

Ainsi, cet appareil devrait disposer d'une super partition de 10,2 Go.

Mises en garde

Il peut être tentant d'observer que si la taille d'usine est de 4 Go et que la mise à jour finale est de 5 Go, alors super doit être de 9 Go au lieu de 10 Go. Cependant, si la première mise à jour et la mise à jour finale font toutes deux 5 Go, l'espace dans super peut être insuffisant pour la mise à jour finale. Les formules ci-dessus supposent que la croissance des partitions peut survenir à tout moment. L'espace nécessaire pour appliquer la mise à jour finale peut être le même que celui requis pour appliquer la première mise à jour.

Notez que les taux de compression sont une estimation. Une image du système d'exploitation peut être mieux ou moins bien compressée en fonction de son contenu. Si vous utilisez un système de fichiers compressé tel qu'EROFS, la compression supplémentaire de Virtual A/B a des rendements décroissants. Dans ce cas, il est préférable d'utiliser l'une des formules non compressées comme ligne directrice.

Mesure

Pour trouver la valeur de FinalDessertSize dans les exemples ci-dessus, additionnez les tailles de toutes les partitions dynamiques. Les images de partition dynamique AOSP sont :

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

Assurez-vous de calculer la taille en fonction des images non dispersées. Lors de la création d'Android 12 ou d'une version antérieure, les images sont dispersées par défaut et peuvent être récupérées avec simg2img .

Il est également possible de calculer la taille des partitions à partir d'un package OTA. Cela permet également d'estimer la taille de l'instantané virtuel A/B pour chaque partition :

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

Ou, vous pouvez utiliser l' outil d'analyse OTA . Cet outil ne télécharge aucun fichier et analyse les packages OTA localement.

Pour trouver la valeur de ExpectedGrowth , utilisez un appareil précédemment publié. Utilisez la super image la plus ancienne et la plus récente pour calculer la croissance.