Come prendere la taglia Super

Il corretto dimensionamento della super partizione è importante per l'aggiornabilità del dispositivo. La dimensione influisce direttamente sul numero di aggiornamenti che un dispositivo può ricevere e sul numero di utenti che possono eseguire correttamente tali aggiornamenti.

Ci sono alcune variabili importanti da considerare. La prima è la dimensione di fabbrica , ovvero la dimensione di tutte le partizioni dinamiche quando il dispositivo viene flashato per la prima volta. Il secondo è il tasso di crescita , ovvero la percentuale di aumento delle dimensioni del sistema operativo durante l'intera vita aggiornabile del dispositivo.

Inoltre, i dispositivi A/B virtuali possono utilizzare lo spazio su /data durante un aggiornamento e questo deve essere considerato quando si dimensiona super . Se è necessario troppo spazio su /data , alcuni utenti non possono (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 comodamente sottrarre tale spazio da super . Oppure, i dispositivi possono garantire che /data non sia mai necessario, semplicemente rendendolo super grande.

Di seguito sono riportati alcuni modelli che aiutano a guidare il dimensionamento super partizione in base a queste variabili.

Affidarsi a /data

L'A/B virtuale incoraggia la riduzione super per consentire l'aumento della dimensione di /data . Parte di questo spazio è necessaria durante un aggiornamento. Per comprendere l'impatto sull'aggiornabilità, è essenziale sapere quale percentuale di dispositivi avrà probabilmente quella quantità di spazio libero nel tempo. La determinazione di questo numero dipende fortemente dall'hardware del dispositivo e dal comportamento degli utenti di quel dispositivo. Negli esempi riportati di seguito, questo numero viene indicato come AllowedUserdataUse .

Senza compressione

Senza compressione, un OTA completo necessita di uno snapshot delle stesse dimensioni del sistema operativo, quindi è 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 libero (o sono disposti a liberare fino a 1 GB di spazio per un aggiornamento). . Per questo dispositivo, super può essere dimensionato in questo modo:

  FinalDessertSize = 4GB + (4GB * 0.5) = 6GB
  Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)

Pertanto, questo dispositivo dovrebbe avere una super partizione da 11 GB.

Con compressione

Con la compressione, un OTA completo necessita di uno snapshot pari a circa il 70% delle dimensioni del sistema operativo:

  FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth)
  FinalOTASnapshotSize = FinalDessertSize * 0.7
  Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)

Ad esempio, consideriamo un dispositivo configurato con 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 libero (o sono disposti a liberare fino a 1 GB di spazio per un aggiornamento). Per questo dispositivo, super può essere dimensionato in questo 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 super partizione da 9,2 GB.

Senza fare affidamento su /data

Se desideri avere OTA che non richiedano mai spazio per gli snapshot su /data , il dimensionamento super è semplice.

Senza compressione

Per un dispositivo A/B virtuale senza compressione o un dispositivo A/B normale:

  FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth)
  Super = FinalDessertSize * 2

Ad esempio, considera un dispositivo A/B virtuale 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 suo calcolo sarebbe simile a:

  FinalDessertSize = 4GB + (4GB * 0.5) = 6GB
  Super = FinalDessertSize * 2 = 12GB

Pertanto, questo dispositivo dovrebbe avere una super partizione da 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 garantire che questo dispositivo non utilizzi mai /data per gli snapshot OTA, il suo calcolo sarebbe simile a:

  FinalDessertSize = 4GB + (4GB * 0.5) = 6GB
  FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB
  Super = 6GB + 4.2GB = 10.2GB

Pertanto, questo dispositivo dovrebbe avere una super partizione da 10,2 GB.

Avvertenze

Potrebbe essere allettante osservare che se la dimensione di fabbrica è 4 GB e l'aggiornamento finale è 5 GB, super deve essere 9 GB, anziché 10 GB. Tuttavia, se il primo aggiornamento e l'aggiornamento finale misurano entrambi 5 GB, lo spazio in super potrebbe essere insufficiente per l'aggiornamento finale. Le formule sopra presuppongono che la crescita 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. Un'immagine del sistema operativo potrebbe comprimersi meglio o peggio a seconda del suo contenuto. Se si utilizza un file system compresso come EROFS, la compressione aggiuntiva da Virtual A/B ha rendimenti decrescenti. In questo caso è meglio utilizzare come linea guida una delle formule non compresse.

Misurare

Per trovare il valore di FinalDessertSize negli esempi precedenti, somma insieme le dimensioni di tutte le partizioni dinamiche. Le immagini della partizione dinamica AOSP sono:

  • system.img
  • vendor.img
  • product.img
  • system_ext.img
  • vendor_dlkm.img
  • system_dlkm.img

Assicurati di calcolare la dimensione in base alle immagini non scomparse. Quando si crea Android 12 o versioni precedenti, le immagini vengono sparse per impostazione predefinita e possono essere annullate 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 ciascuna 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 , utilizzare un dispositivo rilasciato in precedenza. Utilizza la prima e la più recente super immagine per calcolare la crescita.