La dimensione corretta della partizione super
è importante per l'aggiornabilità del dispositivo. Le dimensioni influiscono direttamente sul numero di aggiornamenti che un dispositivo può ricevere e sul numero di utenti che possono riceverli correttamente.
Esistono alcune variabili importanti da considerare. La prima è la dimensione di fabbrica, ovvero le dimensioni di tutte le partizioni dinamiche al primo flashing del dispositivo. Il secondo è il tasso di crescita, ovvero la percentuale di aumento delle dimensioni del sistema operativo nell'intero ciclo di vita del dispositivo aggiornabile.
Inoltre, i dispositivi A/B virtuali possono utilizzare spazio su /data
durante un aggiornamento e questo deve essere preso in considerazione quando si determina le dimensioni di super
. Se su /data
è necessario troppo spazio, alcuni utenti non sono in grado (o non vogliono) eseguire l'aggiornamento. Tuttavia, se è noto che la maggior parte degli utenti ha una certa percentuale di spazio libero, i dispositivi possono tranquillamente sottrarre questo spazio da super
. In alternativa, i dispositivi possono garantire che /data
non sia mai necessario, semplicemente aumentando la dimensione di super
.
Di seguito sono riportati alcuni modelli per aiutarti a determinare le dimensioni delle partizioni super
in base a queste variabili.
Affidarsi a /data
Il test A/B virtuale incoraggia la riduzione di super
per consentire l'aumento delle dimensioni di
/data
. Parte di questo spazio è necessaria durante un aggiornamento. Per comprendere l'impatto sull'aggiornabilità, è essenziale sapere quale percentuale di dispositivi ha la probabilità di avere questa quantità di spazio libero nel tempo. La determinazione di questo numero dipende molto dall'hardware del dispositivo e dal comportamento degli utenti. Negli esempi riportati di seguito, questo numero è indicato come
AllowedUserdataUse
.
Senza compressione
Senza compressione, un'OTA completa richiede uno snapshot di dimensioni approssimativamente uguali a quelle del sistema operativo, pertanto questo deve essere preso in considerazione quando si determinano le dimensioni di super
:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
Ad esempio, prendi in considerazione un dispositivo virtuale A/B con dimensioni di fabbrica di 4 GB, una crescita prevista del 50% e la consapevolezza che quasi tutti gli utenti hanno 1 GB di spazio libero (o sono disposti a liberare fino a 1 GB di spazio per un aggiornamento). Per questo dispositivo, super
può avere le seguenti dimensioni:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
Pertanto, questo dispositivo dovrebbe avere una partizione super
di 11 GB.
Con compressione
Con la compressione, un'OTA completa richiede uno snapshot di circa il 70% delle dimensioni del sistema operativo:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
Ad esempio, prendi in considerazione un dispositivo configurato con la compressione A/B virtuale, con dimensioni di fabbrica di 4 GB, una crescita prevista del 50% e la consapevolezza che quasi tutti gli utenti hanno 1 GB di spazio libero (o sono disposti a liberare fino a 1 GB di spazio per un aggiornamento). Per questo dispositivo, super
può essere impostato su:
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
Pertanto, questo dispositivo dovrebbe avere una partizione super
di 9,2 GB.
Senza fare affidamento su /data
Se vuoi avere OTA che non richiedono mai spazio per le istantanee su /data
, la scelta delle dimensioni di super
è semplice.
Senza compressione
Per un dispositivo A/B virtuale senza compressione o un normale dispositivo A/B:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
Ad esempio, considera un dispositivo A/B virtuale con dimensioni di fabbrica di 4 GB e una crescita prevista del 50%. Per assicurarti che questo dispositivo non utilizzi mai /data
per gli snapshot OTA, il calcolo sarà simile al seguente:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
Pertanto, questo dispositivo dovrebbe avere una partizione super
di 12 GB.
Con compressione
Per un dispositivo A/B virtuale con compressione:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = FinalDessertSize + FinalOTASnapshotSize
Ad esempio, considera un dispositivo di compressione A/B virtuale con una dimensione di fabbrica di 4 GB e una crescita prevista del 50%. Per assicurarti che questo dispositivo non utilizzi mai /data
per gli snapshot OTA, il calcolo sarà il seguente:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = 6GB + 4.2GB = 10.2GB
Pertanto, questo dispositivo dovrebbe avere una partizione super
di 10,2 GB.
Limitazioni
Potrebbe essere allettante osservare che se le dimensioni di fabbrica sono 4 GB e l'aggiornamento finale è di 5 GB, super
deve essere di 9 GB anziché 10 GB. Tuttavia, se il primo aggiornamento e l'aggiornamento finale sono entrambi di 5 GB, lo spazio in super
potrebbe non essere sufficiente per l'aggiornamento finale. Le formule riportate sopra presuppongono che l'aumento della partizione possa avvenire in qualsiasi momento. Lo spazio necessario per applicare l'aggiornamento finale potrebbe essere lo stesso richiesto per applicare il primo
aggiornamento.
Tieni presente che i rapporti di compressione sono una stima. L'immagine di un sistema operativo potrebbe essere compressa meglio o peggio in base ai relativi contenuti. Se utilizzi un file system compresso come EROFS, la compressione aggiuntiva di Virtual A/B ha rendimenti decrescenti. In questo caso, è meglio utilizzare una delle formule non compresse come linea guida.
Calcola le dimensioni
Per trovare il valore di FinalDessertSize
negli esempi precedenti, somma le dimensioni di tutte le partizioni dinamiche. Le immagini delle partizioni dinamiche AOSP sono:
system.img
vendor.img
product.img
system_ext.img
vendor_dlkm.img
system_dlkm.img
Assicurati di calcolare le dimensioni in base alle immagini non analizzate. Quando crei Android
12 o versioni precedenti, le immagini sono sparse per impostazione predefinita e possono essere non sparse con
simg2img
.
È anche possibile calcolare le dimensioni delle partizioni da un pacchetto OTA. In questo modo vengono anche stimate le dimensioni dello snapshot A/B virtuale per ogni partizione:
python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip
In alternativa, puoi utilizzare lo strumento di analisi OTA. Questo strumento non carica file e analizza i pacchetti OTA localmente.
Per trovare il valore di ExpectedGrowth
, utilizza un dispositivo rilasciato in precedenza. Utilizza l'immagine super
più antica e più recente per calcolare la crescita.