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.