Die richtige Größe der super
-Partition ist wichtig für die Aktualisierbarkeit des Geräts. Die Größe wirkt sich direkt darauf aus, wie viele Updates ein Gerät aufnehmen kann und wie viele Nutzer diese Updates erfolgreich installieren können.
Es gibt einige wichtige Variablen, die Sie berücksichtigen sollten. Die erste ist die Größe bei der Ersteinrichtung, also die Größe aller dynamischen Partitionen beim ersten Flashen des Geräts. Der zweite ist die Wachstumsrate, also der Prozentsatz, um den sich die Größe des Betriebssystems während der gesamten Aktualisierungsdauer des Geräts erhöht.
Außerdem können virtuelle A/B-Geräte während eines Updates Speicherplatz auf /data
belegen. Dies muss bei der Festlegung der Größe von /data
berücksichtigt werden.super
Wenn auf /data
zu viel Speicherplatz benötigt wird, können einige Nutzer das Update nicht installieren oder sind nicht bereit dazu. Wenn jedoch bekannt ist, dass die meisten Nutzer einen bestimmten Prozentsatz an freiem Speicherplatz haben, kann dieser Speicherplatz von super
abgezogen werden. Alternativ können Geräte dafür sorgen, dass /data
nie benötigt wird, indem sie super
einfach groß genug machen.
Unten finden Sie einige Modelle, die Ihnen bei der Festlegung der Größe von super
-Partitionen anhand dieser Variablen helfen.
Auf /data zugreifen
Bei virtuellen A/B-Tests wird empfohlen, super
zu verkleinern, um die Größe von /data
zu erhöhen. Ein Teil dieses Speicherplatzes wird bei einem Update benötigt. Um die Auswirkungen auf die Aktualisierbarkeit zu verstehen, ist es wichtig zu wissen, bei welchem Prozentsatz der Geräte diese Menge an Speicherplatz im Laufe der Zeit wahrscheinlich kostenlos sein wird. Die Ermittlung dieser Zahl hängt stark von der Hardware des Geräts und dem Nutzerverhalten auf diesem Gerät ab. In den folgenden Beispielen wird diese Zahl als AllowedUserdataUse
bezeichnet.
Ohne Komprimierung
Ohne Komprimierung benötigt ein vollständiger Over-the-air-Aktualisierungsvorgang einen Snapshot mit ungefähr derselben Größe wie das Betriebssystem. Dies muss bei der Festlegung der Größe von super
berücksichtigt werden:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
Angenommen, Sie haben ein virtuelles A/B-Gerät mit einer Werksgröße von 4 GB, ein erwartetes Wachstum von 50 % und wissen, dass fast alle Nutzer 1 GB freien Speicherplatz haben (oder bereit sind, bis zu 1 GB Speicherplatz für ein Update freizugeben). Für dieses Gerät kann super
so dimensioniert werden:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
Daher sollte dieses Gerät eine super
-Partition mit 11 GB haben.
Mit Komprimierung
Bei der Komprimierung benötigt ein vollständiger Over-the-air-Aktualisierungsvorgang einen Snapshot mit etwa 70% der Größe des Betriebssystems:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
Angenommen, Sie haben ein Gerät mit virtueller A/B-Komprimierung konfiguriert, das ab Werk 4 GB groß ist, mit einem erwarteten Wachstum von 50 % und Sie wissen, dass fast alle Nutzer 1 GB freien Speicherplatz haben (oder bereit sind, bis zu 1 GB Speicherplatz für ein Update freizugeben). Für dieses Gerät kann super
so dimensioniert werden:
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
Daher sollte dieses Gerät eine 9, 2-GB-super
-Partition haben.
Ohne /data
Wenn Sie OTAs haben möchten, für die auf /data
nie Snapshot-Speicherplatz benötigt wird, ist die Größe von super
ganz einfach festzulegen.
Ohne Komprimierung
Für ein virtuelles A/B-Gerät ohne Komprimierung oder ein normales A/B-Gerät:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
Angenommen, Sie haben ein virtuelles A/B-Gerät mit einer Werksgröße von 4 GB und einem erwarteten Wachstum von 50%. Damit dieses Gerät niemals /data
für OTA-Snapshots verwendet, würde die Berechnung so aussehen:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
Daher sollte dieses Gerät eine 12-GB-super
-Partition haben.
Mit Komprimierung
Für ein virtuelles A/B-Gerät mit Komprimierung:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = FinalDessertSize + FinalOTASnapshotSize
Angenommen, Sie haben ein virtuelles A/B-Komprimierungsgerät mit einer Werksgröße von 4 GB und einem erwarteten Wachstum von 50%. Damit dieses Gerät niemals /data
für OTA-Snapshots verwendet, sieht die Berechnung so aus:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = 6GB + 4.2GB = 10.2GB
Daher sollte dieses Gerät eine super
-Partition mit 10, 2 GB haben.
Einschränkungen
Es könnte verlockend sein, zu sagen, dass super
9 GB statt 10 GB groß sein muss, wenn die Größe der Werksversion 4 GB und die des letzten Updates 5 GB beträgt. Wenn das erste und das letzte Update jedoch jeweils 5 GB groß sind, ist in super
möglicherweise nicht genügend Speicherplatz für das letzte Update verfügbar. Bei den obigen Formeln wird davon ausgegangen, dass die Partition jederzeit wachsen kann. Der für die Anwendung des letzten Updates erforderliche Speicherplatz kann mit dem für die Anwendung des ersten Updates übereinstimmen.
Die Komprimierungsraten sind nur Schätzungen. Je nach Inhalt kann ein Betriebssystem-Image besser oder schlechter komprimiert werden. Wenn Sie ein komprimiertes Dateisystem wie EROFS verwenden, ist die zusätzliche Komprimierung durch Virtual A/B weniger effektiv. In diesem Fall sollten Sie eine der nicht komprimierten Formeln als Anhaltspunkt verwenden.
Größe berechnen
Um den Wert von FinalDessertSize
in den obigen Beispielen zu ermitteln, addieren Sie die Größe aller dynamischen Partitionen. Die AOSP-Images für dynamische Partitionen sind:
system.img
vendor.img
product.img
system_ext.img
vendor_dlkm.img
system_dlkm.img
Berechnen Sie die Größe anhand der nicht geparsten Bilder. Beim Erstellen von Android 12 oder niedriger werden Bilder standardmäßig sparsam verteilt und können mit simg2img
desparsiert werden.
Es ist auch möglich, Partitionsgrößen aus einem OTA-Paket zu berechnen. Dadurch wird auch die Größe des virtuellen A/B-Snapshots für jede Partition geschätzt:
python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip
Alternativ können Sie das OTA-Analysetool verwenden. Dieses Tool lädt keine Dateien hoch und analysiert OTA-Pakete lokal.
Verwenden Sie ein zuvor veröffentlichtes Gerät, um den Wert von ExpectedGrowth
zu ermitteln. Verwenden Sie das früheste und das neueste super
-Image, um das Wachstum zu berechnen.