Cómo medir Súper

El dimensionamiento correcto de la super partición es importante para la capacidad de actualización del dispositivo. El tamaño afecta directamente cuántas actualizaciones puede tomar un dispositivo y cuántos usuarios pueden tomar esas actualizaciones con éxito.

Hay algunas variables importantes a considerar. El primero es el tamaño de fábrica , que es el tamaño de todas las particiones dinámicas cuando el dispositivo se flashea por primera vez. El segundo es la tasa de crecimiento , que es el porcentaje que aumenta el tamaño del sistema operativo durante toda la vida útil de actualización del dispositivo.

Además, los dispositivos virtuales A/B pueden usar espacio en /data durante una actualización, y esto debe tenerse en cuenta al dimensionar super . Si se necesita demasiado espacio en /data , algunos usuarios no pueden (o no quieren) realizar la actualización. Sin embargo, si se sabe que la mayoría de los usuarios tienen un porcentaje de espacio libre, los dispositivos pueden restar cómodamente ese espacio de super . O bien, los dispositivos pueden garantizar que /data nunca sea necesario, simplemente haciendo que super suficientemente grande.

A continuación se muestran algunos modelos para ayudar a orientar el tamaño super partición en función de estas variables.

Confiando en /datos

Virtual A/B fomenta la reducción super para permitir aumentar el tamaño de /data . Parte de ese espacio es necesario durante una actualización. Para comprender el impacto en la capacidad de actualización, es esencial saber qué porcentaje de dispositivos es probable que tengan esa cantidad de espacio libre con el tiempo. Calcular este número depende en gran medida del hardware del dispositivo y del comportamiento de los usuarios de ese dispositivo. En los ejemplos a continuación, este número se conoce como AllowedUserdataUse .

Sin compresión

Sin compresión, una OTA completa necesita una instantánea de aproximadamente el mismo tamaño que el sistema operativo, por lo que debe tenerse en cuenta al dimensionar super :

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

Por ejemplo, considere un dispositivo Virtual A/B con un tamaño de fábrica de 4 GB, un crecimiento esperado del 50 % y el conocimiento de que casi todos los usuarios tienen 1 GB libre (o están dispuestos a liberar hasta 1 GB de espacio para una actualización). Para este dispositivo, super se puede dimensionar así:

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

Por lo tanto, este dispositivo debe tener una super partición de 11 GB.

con compresión

Con la compresión, una OTA completa necesita una instantánea de aproximadamente el 70 % del tamaño del sistema operativo:

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

Por ejemplo, considere un dispositivo configurado con compresión Virtual A/B, con un tamaño de fábrica de 4 GB, un crecimiento esperado del 50 % y sabiendo que casi todos los usuarios tienen 1 GB libre (o están dispuestos a liberar hasta 1 GB de espacio para una actualización). Para este dispositivo, super se puede dimensionar así:

  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

Por lo tanto, este dispositivo debería tener una super partición de 9,2 GB.

Sin depender de /data

Si desea tener OTA que nunca requieran espacio para instantáneas en /data , entonces dimensionar super es sencillo.

Sin compresión

Para un dispositivo Virtual A/B sin compresión o un dispositivo A/B normal:

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

Por ejemplo, considere un dispositivo Virtual A/B con un tamaño de fábrica de 4 GB y un crecimiento esperado del 50 %. Para asegurarse de que este dispositivo nunca use /data para instantáneas OTA, su cálculo se vería así:

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

Por lo tanto, este dispositivo debe tener una super partición de 12 GB.

con compresión

Para un dispositivo Virtual A/B con compresión:

  FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth)
  FinalOTASnapshotSize = FinalDessertSize * 0.7
  Super = FinalDessertSize + FinalOTASnapshotSize

Por ejemplo, considere un dispositivo de compresión A/B virtual con un tamaño de fábrica de 4 GB y un crecimiento esperado del 50 %. Para asegurarse de que este dispositivo nunca use /data para instantáneas OTA, su cálculo se vería así:

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

Por lo tanto, este dispositivo debe tener una super partición de 10,2 GB.

Advertencias

Puede ser tentador observar que si el tamaño de fábrica es de 4 GB y la actualización final es de 5 GB, entonces super necesita ser de 9 GB, en lugar de 10 GB. Sin embargo, si la primera actualización y la actualización final son de 5 GB, es posible que el espacio en super sea insuficiente para la actualización final. Las fórmulas anteriores asumen que el crecimiento de la partición podría ocurrir en cualquier momento. El espacio necesario para aplicar la actualización final puede ser el mismo que se necesita para aplicar la primera actualización.

Tenga en cuenta que las relaciones de compresión son una estimación. Una imagen del sistema operativo puede comprimirse mejor o peor según su contenido. Si usa un sistema de archivos comprimidos como EROFS, la compresión adicional de Virtual A/B tiene rendimientos decrecientes. En este caso, es mejor usar una de las fórmulas sin comprimir como guía.

Medición

Para encontrar el valor de FinalDessertSize en los ejemplos anteriores, sume los tamaños de todas las particiones dinámicas. Las imágenes de partición dinámica de AOSP son:

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

Asegúrese de calcular el tamaño en función de las imágenes no dispersas. Al compilar Android 12 o versiones anteriores, las imágenes se dispersan de forma predeterminada y se pueden eliminar con simg2img .

También es posible calcular el tamaño de las particiones desde un paquete OTA. Al hacerlo, también estima el tamaño de la instantánea virtual A/B para cada partición:

  python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip

O bien, puede utilizar la herramienta de análisis OTA . Esta herramienta no carga ningún archivo y analiza los paquetes OTA localmente.

Para encontrar el valor de ExpectedGrowth , use un dispositivo lanzado anteriormente. Utilice la super más antigua y más reciente para calcular el crecimiento.