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 ausführen kann und wie viele Nutzer diese
Aktualisierungen.
Es gibt einige wichtige Variablen, die Sie berücksichtigen sollten. Die erste ist die Werkgröße, die Größe aller dynamischen Partitionen beim ersten Flash-Vorgang auf dem Gerät darstellt. 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. Wenn auf /data
zu viel Speicherplatz benötigt wird, können einige Nutzer das Update nicht installieren oder sind nicht bereit dazu. Wenn es jedoch
wissen, dass bei den meisten Nutzern ein gewisser Prozentsatz an Speicherplatz kostenlos ist.
diesen Bereich von super
. 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 zur Orientierung für die super
-Partitionsgröße.
Variablen.
Auf /data zugreifen
Bei virtuellen A/B-Tests wird empfohlen, super
zu verkleinern, um die Größe von /data
zu erhöhen. Ein Teil des Speicherplatzes wird während eines Updates benötigt. Um die Auswirkungen auf
sollten Sie wissen, wie viel Prozent der Geräte wahrscheinlich
im Laufe der Zeit kostenlos 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
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)
Nehmen wir zum Beispiel ein virtuelles A/B-Gerät mit einer Werksgröße von 4 GB, bei dem ein Anstieg von
50 % und wissen, dass fast alle Nutzer 1 GB kostenlos haben oder bereit sind, bis zu 1 GB freizuschalten.
Platz für ein Update). 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)
Dieses Gerät sollte daher eine super
-Partition mit 11 GB haben.
Mit Kompression
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 die Größe von super
angepasst werden
etwa so:
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, wird bei der Berechnung
Beispiel:
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, anzunehmen, dass super
9 GB statt 10 GB betragen muss, wenn die Größe der Werksversion 4 GB und die endgültige Aktualisierung 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 ein Partitionswachstum
jederzeit ändern. Der für die Anwendung des letzten Updates erforderliche Speicherplatz kann mit dem für die Anwendung des ersten Updates übereinstimmen.
Beachten Sie, dass es sich bei den Komprimierungsverhältnissen um eine Schätzung handelt. 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 nur begrenzt 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 dynamischen AOSP-Partitions-Images 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. Bei der Entwicklung von Android
12 oder niedriger sind Bilder standardmäßig dünnbesetzt und können nicht mit
simg2img
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 kannst du 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.