2 puntos por mintplo 2026-02-25 | Aún no hay comentarios. | Compartir por WhatsApp

Un artículo que explica el funcionamiento interno de AWS SOCI (Seekable OCI), que permite “ejecutar un contenedor antes de descargar por completo la imagen”, desde la perspectiva de HTTP Range Request/FUSE/zTOC (índice).

Contexto de introducción (insights surgidos del paper de Slacker)

  • Slacker: Fast Distribution with Lazy Docker Containers (USENIX FAST ’16) primero midió por qué el “cold start” de los contenedores es lento
  • Crearon un benchmark llamado HelloBench y midieron, en 57 cargas de trabajo de contenedores, el tiempo desde “inicio del despliegue → posibilidad de realizar trabajo significativo (servicio listo)”
  • Observación 1) La mayor parte del tiempo de inicio se usa en “pull + copia de la imagen/paquetes”
    • pulling packages (copia de datos de paquetes/imágenes) representa el 76% del tiempo de arranque del contenedor
  • Observación 2) Sin embargo, justo después del arranque solo se leen realmente una fracción muy pequeña de los datos totales
    • En promedio, solo el 6.4% de los datos descargados/copiad os se leen realmente “antes de que el contenedor empiece a realizar trabajo significativo”
  • Observación 3) Las imágenes tienen más “compartición/duplicación” de lo esperado
    • Reportan que, frente a la compresión gzip a nivel de imagen, una deduplicación simple a nivel de bloque que encuentra bloques comunes entre imágenes mostró mejores resultados de compresión
  • Conclusión (planteamiento del problema): el enfoque de “descargar todo y luego ejecutar” desperdicia mucho,
    y puede ser efectivo traer primero solo lo necesario para arrancar (priorizar la ejecución) y obtener el resto cuando haga falta (lazy)
  • Con base en estas observaciones, diseñaron un Docker storage driver llamado Slacker
  • Todos los Docker worker/registry comparten almacenamiento central, y aprovechan snapshot/clone del almacenamiento backend para reducir el costo de aprovisionamiento del sistema de archivos
  • Los datos del contenedor se obtienen de forma lazy “cuando se necesitan”, y reportan que con ello redujeron mucho los tiempos de push/pull y el ciclo de desarrollo/despliegue

SOCI Snapshotter (AWS)

  • El README de SOCI snapshotter también cita directamente la observación “76% vs 6.4%” de Slacker (FAST ’16) como base de por qué funciona la carga lazy
  • Si Slacker era un enfoque que dependía fuertemente de “Docker driver + funciones específicas de almacenamiento (servidor)”,
    SOCI lo generaliza como “lazy loading desde el registry (ECR, etc.)” para poder usarse en el ecosistema OCI
  • En lugar de descargar toda la imagen al momento de ejecutar el contenedor,
    SOCI obtiene primero la información de ubicación de archivos/spans mediante un índice separado (zTOC/Index Manifest), trae primero solo los fragmentos necesarios (on-demand) para acelerar el arranque,
    y sigue haciendo prefetch del resto en segundo plano con una estrategia híbrida

Componentes clave de SOCI

  • HTTP Range Request: obtiene del registry (ECR) solo el rango de bytes necesario como 206 Partial Content
  • zTOC: con offsets/metadatos de archivos y checkpoints de compresión (zInfo), permite descomprimir “desde la mitad”
  • FUSE: monta la capa como si fuera un sistema de archivos, intercepta open/read y hace fetch on-demand del span necesario (4 MB por defecto)

Flujo de funcionamiento (basado en ECS Fargate)

  • Verificación del índice (manifest) → descarga de zTOC → montaje con FUSE → ejecución del contenedor
  • Al acceder a un archivo, descarga y descomprime de inmediato solo el span correspondiente mediante Range Request y luego lo entrega
  • Al mismo tiempo, la imagen completa sigue descargándose en segundo plano con una estrategia “híbrida”

Limitaciones / trade-offs

  • El overhead del índice/montaje puede jugar en contra en imágenes pequeñas (por ejemplo, menos de 250 MB)
  • El efecto depende más del “patrón de acceso inicial a archivos” que del tamaño de la imagen
  • Hay margen para ajustar el tamaño del span (número de solicitudes vs. descargas innecesarias), y se mencionan direcciones de mejora como LOD (Load Order Document)

Aún no hay comentarios.

Aún no hay comentarios.