VMware

Administración de Memoria VMware ESXi: Active Memory

Hola a todos!! Después de casi 2 meses de no escribir en el blog desde el ultimo articulo que publique el 17 de Agosto,esto debido a múltiples reuniones de planificación y demás tareas para la organización del evento VMware LATAM Tech Summit 2019, acá estoy de vuelta con una serie de artículos que empezare a escribir sobre administración de memoria vSphere.

Este vez les hablare sobre Active Memory, específicamente para entender de una vez por todas el acertijo de la diferencia entre ESXi host Active Memory y Guest OS Active Memory reportado en el administrador de tareas (Windows) o top (Linux).

He leído sobre este tema en foros, blogs y documentación oficial VMware, grupos de administradores VMware , etc; pero es confuso de entender el porque no reflejan los mismos valores y cuales son los usos correctos que se le deben dar.

Host Active Memory vs Guest OS Active Memory

Antes de iniciar, veamos una explicación teórica:

Host Active Memory: cantidad de RAM en uso para una maquina virtual en el host ESXi, el cual es calculado por el VMkernel basándose en las ultimas paginas de memoria tocadas (Touched Memory Pages) para poder determinar que tan agresivamente esta la maquina virtual tocando paginas de memoria.

Guest OS Active Memory: cantidad de memoria utilizada por el sistema operativo y la aplicaciones que este ejecutada.

Esto nos hará preguntarnos lo siguiente:

  • ¿Que uso tiene el valor Host Active Memory?
  • ¿Cual métrica debo usar para administrar la memoria del ESXi?
  • ¿Porque los valores mostrados del sistema operativo no son los mismos de vCenter/ESXI?
  • ¿Donde se indica el Guest OS Active Memory de máquinas virtuales en vSphere?

¿Que uso tiene el valor Host Active Memory?

La administración de memoria virtual en host ESXi VMware se diseñó con el fin de aprovechar una asignación compartida entre procesos y la capacidad de recuperar memoria inactiva en escenarios de contención. Sin embargo, para realmente tomar buena decisiones en la administración de recursos, hay de tener una medición de la paginación de memoria por cada  maquina virtual, es otras palabras “Touch memory Pages”.

Para cubrir esta necesidad VMware diseño la métrica Host Active Memory la cual nos indica la cantidad de paginas de memoria tocadas por una máquina virtual según cálculos hechos por el VMkernel en los últimos 20 segundos (desde los gráficos de rendimiento de vCenter) o cada 5 segundos (desde ESXTOP en el ESXi).

Nota: Este algoritmo es bastante beneficioso para la administración de recursos, pero no puede determinar si las paginas de memoria que fueron tocadas en el ultimo periodo son únicas o no.

¿Cual métrica debo usar para administrar la memoria de mi ESXi?

La respuesta a esta pregunta esta meramente relacionada al diseño de mi cluster vSphere; que si bien es cierto, por defecto realiza cálculos basado en memoria activa, aunque también según la necesidad de diseño del Centro de Datos puede ser cambiado a que sea basado en los cálculos de memoria consumida por las maquinas virtuales (A partir de vSphere 6.5). Estos 2 valores tienen un gran impacto en los cálculos hechos por Distribuited Resource Scheduler (DRS)

Con eso dicho, el valor Host Active Memory se ha utilizado erróneamente, ya que se cree que si la memoria activa de la maquina virtual no cambia en los graficos de vCenter, esa es la cantidad utilizada por el sistema operativo; lo cual no es correcto.

Esta suposición hace que se utilice para propósitos diferentes a los que fue creado (ayudar en la optimización y administración de recursos de memoria en el hipervisor ESXi), no como en realidad debería de ser (como contador para planificar capacidad de memoria del host). Para clarificar mejor esto, veamos un ejemplo:

Una maquina virtual fue asignada con 4GB de RAM (Granted), de las cuales solo 1.1GB fueron reportadas como “Active” según la ultima muestra tomada de paginas de memoria tocadas por la maquina virtual. No se reporta “Ballooned memory” como se muestra en los gráficos de rendimiento en vCenter:

vcenter memory Perf Chart

Desde una sesión SSH/Shell al ESXi donde se este ejecutando la maquina virtual, con el comando esxtop seguido de la letra “M” para mostrar información de métricas de memoria, se muestra el valor TCHD (Touched Memory Pages), el cual es de 1149.12KB, que calculado en GB son 1.14GB.

esxtop memory metrics

Aquí encontramos una pieza del rompecabezas. Ya que el valor en la columna TCHD es justamente lo que reportan los gráficos de rendimiento de vCenter como “Active“. La diferencia de que existe en las métricas de este ejemplo es debido a que esxtop refresca cada 5 segundos por defecto (se puede cambiar con s 20) y los gráficos de vCenter lo hacen cada 20 segundos, por lo siempre existe diferencia entre estos valores. 

Ya que hemos determinado de donde proviene el valor Host Active Memory de vCenter para maquinas virtuales, veamos lo que reporta el sistema operativo como Guest OS Active Memory.

¿Por que los valores del sistema operativo no son los mismo de vCenter/ESXi? 

Desde el administrador de tareas del sistema operativo (Windows en este ejemplo), la cantidad de memoria RAM utilizada (Guest OS Active Memory) es apenas de 0.8GB:

Task Manager active Memory

¿Porque apenas 0.8GB?
Recordemos que Guest OS Active memory reporta la cantidad de RAM consumida por el OS de la maquina y las aplicaciones que este ejecuta, por otro lado Host Active memory es la cantidad de páginas de memoria tocadas en el ultimo periodo para determinar que tan agresivamente esta la maquina virtual tocando páginas de memoria. Por obvias razones estos valores no pueden ser iguales.

Siendo así, surge la ultima pregunta.

¿Donde se indica el Guest OS Active Memory en vSphere?

Desde vSphere no hay manera de poder monitorear la memoria activa en el OS de las maquinas virtuales, pero con el uso herramientas de monitoreo como vRealize Operations (vROps) podremos obtener esta métrica instalando un agente vROps en las maquinas virtuales que tome los valores de memoria activa del OS y lo reporte a vROps.

Con esto obtenemos todas las piezas del rompecabezas.

Espero haber aclarado las dudas y diferencias entre Host Active Memory y Guest OS Active Memory. No olviden compartirlo en redes sociales y suscribirse a mi blog por e-mail.

Pronto mas artículos de administración de recursos de memoria en host ESXi.

Escribe tu comentario

Este sitio utiliza Akismet para disminuir el spam. Aprenda más de como sus comentarios son procesados.

Oscar Zuñiga

Oscar Zuñiga

Senior Virtualization and Cloud Engineer | vExpert | Trainer | Blogger
Especialista en SDDC y Cloud Computing con mas de 5 años de experiencia en IT. Oscar también es instructor técnico para cursos de AWS, VMware, Juniper y Cisco.
EnglishPortugueseSpanish