Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Diagnose container memory issues with SysOM

Última actualización: Sep 04, 2026

Para resolver la visibilidad limitada en la capa del motor de contenedores, SysOM ofrece monitoreo de contenedores a nivel del kernel del sistema operativo. Esto mejora la observability de los problemas de memoria y facilita la migración de contenedores. Este tema explica cómo utilizar SysOM para diagnosticar problemas de memoria en contenedores, incluido el desglose del conjunto de trabajo más allá de las métricas estándar.

Requisitos previos

Asegúrese de cumplir con lo siguiente:

Facturación

Cuando se habilita, ack-sysom-monitor envía métricas de monitoreo a Prometheus Service for Alibaba Cloud. Estas métricas se facturan como Custom Metrics y generan costos adicionales.

Consulte la descripción general de facturación de Prometheus Service for Alibaba Cloud antes de habilitar esta función. Los costos dependen del tamaño del clúster y de la cantidad de aplicaciones. Utilice Resource Consumption para monitorear el uso.

Conceptos clave

Componentes de la memoria del contenedor

ACK proporciona monitoreo de contenedores a nivel del kernel del sistema operativo para rastrear con precisión el uso de memoria y prevenir problemas de OOM.

La memoria del contenedor se divide en tres categorías:

Categoría

Subcategoría

Descripción

Memoria de aplicación

Memoria anónima: segmentos de heap, pila y datos de un proceso, asignados mediante las llamadas al sistema brk y mmap

Memoria utilizada por la aplicación en ejecución

Caché de archivos: datos almacenados en caché para E/S de archivos. La caché de acceso frecuente (ActiveFileCache) no se recupera fácilmente.

Buffers: metadatos para dispositivos de bloque o sistemas de archivos

HugeTLB: memoria asignada mediante HugePages

Memoria del kernel

Slab: pool de memoria para cachés de objetos del kernel

Memoria utilizada por el kernel del sistema operativo

Vmalloc: asigna bloques grandes de memoria virtual

allocpage: asigna memoria local

Otros: pila del kernel, tabla de páginas y memoria reservada

Memoria libre

—

Memoria disponible y sin usar

Conjunto de trabajo frente a RSS

Kubernetes rastrea dos métricas de memoria clave:

  • Conjunto de trabajo (Working set): memoria que un contenedor utiliza activamente: working set = inactive_anon + active_anon + active_file. El OOM killer y Kubernetes usan este valor para decidir si desalojan o finalizan un contenedor.

  • RSS (resident set size): memoria física mapeada en el espacio de direcciones del contenedor, excluyendo la caché de archivos. El RSS refleja la memoria real de la aplicación, pero excluye la memoria en caché que Kubernetes contabiliza dentro del límite.

Dado que Kubernetes utiliza el conjunto de trabajo para las decisiones de desalojo, la caché de archivos puede inflarlo silenciosamente y desencadenar terminaciones por OOM incluso cuando la memoria de la aplicación es estable. SysOM desglosa el conjunto de trabajo en sus componentes para identificar qué tipo de memoria causa el problema.

Funcionamiento

SysOM muestra métricas a nivel del kernel del sistema operativo en los paneles de Prometheus Monitoring dentro de la consola de ACK. Organiza la memoria del pod en componentes del conjunto de trabajo para rastrear el alto uso hasta tipos específicos de memoria.

Utilice estas fórmulas al diagnosticar problemas de memoria:

  • Total pod memory = RSS + Cache ≈ inactive_anon + active_anon + inactive_file + active_file

  • working set = inactive_anon + active_anon + active_file

Localización y corrección de problemas de memoria en contenedores

Paso 1: Abrir el panel de SysOM

  1. Inicie sesión en la ACK console. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Operations > Prometheus Monitoring.

  3. En la página Prometheus Monitoring, haga clic en la pestaña SysOM y luego en SysOM - Pods.

Paso 2: Identificar el agujero negro de memoria

  1. En la sección Pod Memory Monitor, aplique la fórmula de memoria total del pod para desglosar la memoria en caché y RSS. Revise las proporciones de caché (active_file, inactive_file, shmem) y RSS (active_anon, inactive_anon). En este ejemplo, inactive_anon predomina.

    image

  2. En la sección Pod Resource Analysis, utilice la clasificación superior para identificar el pod con mayor consumo de InactiveAnon. En este ejemplo, arms-prom tiene el consumo más alto.

    image.png

  3. En la sección Pod Memory Details, consulte la composición de memoria del pod identificado. Los componentes incluyen Pod Cache, InactiveFile (caché de archivos inactiva), InactiveAnon (memoria anónima inactiva) y memoria sucia (modificaciones no escritas). Utilice estos desgloses para localizar con precisión el agujero negro de memoria.

    image.png

Paso 3: Investigar el uso de la caché de archivos

En la sección Pod File Cache, identifique qué impulsa el alto consumo de memoria en caché.

La caché de archivos no recuperable infla el conjunto de trabajo y se convierte en un agujero negro de memoria. Este se contabiliza dentro del límite de memoria del pod y puede desencadenar desalojos o terminaciones por OOM sin que aumente la memoria de la aplicación.

image.png

Paso 4: Corregir el agujero negro de memoria

Una vez identificado el agujero negro de memoria, resuélvalo mediante la programación detallada de ACK. Consulte Enable container memory QoS.

Siguientes pasos