Die richtige Dimensionierung der super
ist wichtig für die Aktualisierbarkeit des Geräts. Die Größe wirkt sich direkt darauf aus, wie viele Updates ein Gerät durchführen kann und wie viele Benutzer diese Updates erfolgreich durchführen können.
Es sind einige wichtige Variablen zu berücksichtigen. Die erste ist die Werksgröße , also die Größe aller dynamischen Partitionen beim ersten Flashen des Geräts. Die zweite ist die Wachstumsrate , also der Prozentsatz, um den sich die Betriebssystemgröße über die gesamte aktualisierbare Lebensdauer des Geräts erhöht.
Darüber hinaus können virtuelle A/B-Geräte während eines Updates Speicherplatz auf /data
beanspruchen, was bei der Dimensionierung super
berücksichtigt werden muss. Wenn auf /data
zu viel Speicherplatz benötigt wird, können (oder wollen) einige Benutzer das Update nicht durchführen. Wenn jedoch bekannt ist, dass die meisten Benutzer über einen gewissen Prozentsatz an freiem Speicherplatz verfügen, können Geräte diesen Speicherplatz problemlos von super
abziehen. Oder Geräte können garantieren, dass /data
nie benötigt wird, indem sie einfach super
groß genug gemacht werden.
Im Folgenden finden Sie einige Modelle, die bei der Größenbestimmung super
basierend auf diesen Variablen helfen sollen.
Verlassen Sie sich auf /data
Virtual A/B fördert die super
, um eine Vergrößerung von /data
zu ermöglichen. Ein Teil dieses Speicherplatzes wird während eines Updates benötigt. Um die Auswirkungen auf die Aktualisierbarkeit zu verstehen, ist es wichtig zu wissen, wie viel Prozent der Geräte im Laufe der Zeit voraussichtlich über so viel Speicherplatz verfügen werden. Die Ermittlung dieser Zahl hängt stark von der Hardware des Geräts und dem Benutzerverhalten dieses Geräts ab. In den folgenden Beispielen wird diese Nummer als AllowedUserdataUse
bezeichnet.
Ohne Komprimierung
Ohne Komprimierung benötigt ein vollständiger OTA einen Snapshot, der ungefähr die gleiche Größe wie das Betriebssystem hat. Dies muss also bei der super
Dimensionierung berücksichtigt werden:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
Betrachten Sie beispielsweise ein virtuelles A/B-Gerät mit einer Werksgröße von 4 GB, einem erwarteten Wachstum von 50 % und dem Wissen, dass fast alle Benutzer 1 GB frei haben (oder bereit sind, bis zu 1 GB Speicherplatz für ein Update freizugeben). . Für dieses Gerät kann super
wie folgt dimensioniert werden:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
Daher sollte dieses Gerät über eine 11 GB super
verfügen.
Mit Komprimierung
Bei Komprimierung benötigt ein vollständiger OTA einen Snapshot von etwa 70 % der Größe des Betriebssystems:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
Stellen Sie sich beispielsweise ein Gerät vor, das mit virtueller A/B-Komprimierung konfiguriert ist, mit einer Werksgröße von 4 GB, einem erwarteten Wachstum von 50 % und dem Wissen, dass fast alle Benutzer 1 GB frei haben (oder bereit sind, bis zu 1 GB Speicherplatz dafür freizugeben). ein Update). Für dieses Gerät kann super
wie folgt 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 über eine 9,2 GB super
verfügen.
Ohne auf /data angewiesen zu sein
Wenn Sie OTAs haben möchten, die niemals Snapshot-Speicherplatz auf /data
benötigen, ist super
Skalierung ganz einfach.
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
Betrachten Sie beispielsweise ein virtuelles A/B-Gerät mit einer Werksgröße von 4 GB und einem erwarteten Wachstum von 50 %. Um sicherzustellen, dass dieses Gerät niemals /data
für OTA-Snapshots verwendet, würde seine Berechnung wie folgt aussehen:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
Daher sollte dieses Gerät über eine 12 GB super
verfügen.
Mit Komprimierung
Für ein virtuelles A/B-Gerät mit Komprimierung:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = FinalDessertSize + FinalOTASnapshotSize
Betrachten Sie beispielsweise ein virtuelles A/B-Komprimierungsgerät mit einer Werksgröße von 4 GB und einem erwarteten Wachstum von 50 %. Um sicherzustellen, dass dieses Gerät niemals /data
für OTA-Snapshots verwendet, würde seine Berechnung wie folgt aussehen:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = 6GB + 4.2GB = 10.2GB
Daher sollte dieses Gerät über eine 10,2 GB super
verfügen.
Vorbehalte
Es könnte verlockend sein zu beobachten, dass super
9 GB und nicht 10 GB groß sein muss, wenn die Werksgröße 4 GB beträgt und das endgültige Update 5 GB beträgt. Wenn jedoch sowohl das erste Update als auch das letzte Update 5 GB groß sind, reicht der Speicherplatz in super
möglicherweise nicht für das letzte Update aus. Bei den obigen Formeln wird davon ausgegangen, dass es jederzeit zu einem Partitionswachstum kommen kann. Der zum Anwenden des letzten Updates benötigte Speicherplatz ist möglicherweise derselbe, der zum Anwenden des ersten Updates erforderlich ist.
Beachten Sie, dass es sich bei den Komprimierungsverhältnissen um Schätzungen handelt. Ein Betriebssystem-Image kann je nach Inhalt besser oder schlechter komprimiert werden. Bei Verwendung eines komprimierten Dateisystems wie EROFS führt die zusätzliche Komprimierung durch Virtual A/B zu geringeren Erträgen. In diesem Fall ist es besser, eine der unkomprimierten Formeln als Richtlinie zu verwenden.
Messung
Um den Wert von FinalDessertSize
in den obigen Beispielen zu ermitteln, addieren Sie die Größen aller dynamischen Partitionen. Die dynamischen AOSP-Partitionsbilder sind:
-
system.img
-
vendor.img
-
product.img
-
system_ext.img
-
vendor_dlkm.img
-
system_dlkm.img
Stellen Sie sicher, dass Sie die Größe basierend auf nicht gesparten Bildern berechnen. Beim Erstellen von Android 12 oder niedriger werden Bilder standardmäßig mit Sparsing versehen und können mit simg2img
aufgehoben 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
Oder Sie können das OTA-Analysetool verwenden. Dieses Tool lädt keine Dateien hoch und analysiert OTA-Pakete lokal.
Um den Wert von ExpectedGrowth
zu ermitteln, verwenden Sie ein zuvor veröffentlichtes Gerät. Verwenden Sie das früheste und das neueste super
, um das Wachstum zu berechnen.