Il dimensionamento corretto della partizione super è importante per l'aggiornabilità del dispositivo. Le dimensioni
influenzano direttamente il numero di aggiornamenti che un dispositivo può ricevere e il numero di utenti che possono ricevere correttamente questi
aggiornamenti.
Ci sono alcune variabili importanti da considerare. La prima è la dimensione di fabbrica, ovvero la dimensione di tutte le partizioni dinamiche al primo flash del dispositivo. Il secondo è il tasso di crescita, ovvero la percentuale di aumento delle dimensioni del sistema operativo durante l'intero ciclo di vita aggiornabile del dispositivo.
Inoltre, i dispositivi Virtual A/B possono utilizzare spazio su /data durante un aggiornamento e questo
deve essere preso in considerazione quando si dimensiona super. Se è necessario troppo spazio su
/data, 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 sottrarre comodamente questo spazio da super. In alternativa, i dispositivi possono garantire che /data non sia mai necessario semplicemente rendendo super sufficientemente grande.
Di seguito sono riportati alcuni modelli per aiutarti a dimensionare le partizioni super in base a queste variabili.
Affidarsi a /data
Il test A/B virtuale incoraggia a ridurre super per aumentare le dimensioni di
/data. Parte di questo spazio è necessario durante un aggiornamento. Per comprendere l'impatto sull'aggiornabilità, è essenziale sapere la percentuale di dispositivi che probabilmente avranno quella quantità di spazio libero nel tempo. Determinare questo numero dipende molto dall'hardware del dispositivo e
dal comportamento degli utenti del dispositivo. Negli esempi riportati di seguito, questo numero viene indicato come
AllowedUserdataUse.
Senza compressione
Senza compressione, un aggiornamento OTA completo richiede uno snapshot di dimensioni simili a quelle del sistema operativo, pertanto è necessario
tenerne conto quando si dimensiona super:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
Ad esempio, considera un dispositivo A/B virtuale con una dimensione 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 dimensionato nel seguente modo:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
Pertanto, questo dispositivo dovrebbe avere una partizione super da 11 GB.
Con compressione
Con la compressione, un aggiornamento OTA completo richiede uno snapshot di dimensioni pari a circa il 70% di quelle del sistema operativo:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
Ad esempio, considera un dispositivo configurato con la compressione A/B virtuale, con una dimensione 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 dimensionato
nel seguente modo:
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 a /data
Se vuoi che gli aggiornamenti over-the-air non richiedano mai spazio per gli snapshot su /data, il dimensionamento
super è semplice.
Senza compressione
Per un dispositivo Virtual A/B senza compressione o un normale dispositivo A/B:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
Ad esempio, considera un dispositivo Virtual A/B con una dimensione di fabbrica di 4 GB e una crescita prevista del 50%. Per garantire che questo dispositivo non utilizzi mai /data per gli snapshot OTA, il calcolo sarebbe il seguente:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
Pertanto, questo dispositivo dovrebbe avere una partizione super da 12 GB.
Con compressione
Per un dispositivo Virtual A/B 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
sarebbe 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 da 10,2 GB.
Avvertenze
Potrebbe essere allettante osservare che se le dimensioni di fabbrica sono 4 GB e l'aggiornamento finale è
5 GB, allora super deve essere 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 la crescita della partizione possa verificarsi 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. Un'immagine del sistema operativo potrebbe essere compressa meglio o peggio a seconda dei suoi 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.
Calcolare le dimensioni
Per trovare il valore di FactorySize negli esempi precedenti, somma le dimensioni di tutte le partizioni dinamiche. Le immagini delle partizioni dinamiche AOSP sono:
system.imgvendor.imgproduct.imgsystem_ext.imgvendor_dlkm.imgsystem_dlkm.img
Assicurati di calcolare le dimensioni in base alle immagini non sparse. Quando crei Android
12 o versioni precedenti, le immagini vengono sparse per impostazione predefinita e possono essere rese non sparse con
simg2img.
È anche possibile calcolare le dimensioni delle partizioni da un pacchetto OTA. In questo modo viene stimata anche la dimensione 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 alcun file e analizza i pacchetti OTA localmente.
Per trovare il valore di ExpectedGrowth, utilizza un dispositivo rilasciato in precedenza. Utilizza l'immagine
più vecchia e quella più recente di super per calcolare la crescita.