Memory Pool Monitor

Memory Pool Monitor (Poolmon.exe) es una herramienta de soporte usada en la detección de cuellos de botella de memoria. Esta heramienta fue realizada con la intención primaria de que los desarrolladores aislen problemas en controladores y aplicaciones. Sin embargo, puede resultar muy útil en problemas relacionados con limitaciones de recursos del Kernel. En particular, si se detectan limitaciones de recursos de conjuntos no paginados. Poolmon puede identificar el componente del kernel o elcontrolador que consume estos recursos.


Crear una consola para Poolmon:

Poolmon es una aplicación de consola que muestra información en un formato de tabla. Las filas pueden ser mayores de 80 carácteres que es el tamaño predeterminado de la ventana de sistema(CMD), podemos variar esto, en caso necesario, configurando la consola.



  1. Desde Ejecutar, escribimos cmd y luego ENTER.

  2. Pulsamos en el icono de la esquina-izquierda de la ventana de comandos y pulsamos en propiedades.

  3. En las propiedades, ficha Layout.

  4. En Screen Buffer Size, establecer la anchura de la ventana, o cambiar a la ficha Font y establecer un tamaño de fuente más pequeño.

  5. Aceptar para volver a la cmd, y elegir si aplicar a la ventana o a las sucesivas, luego Acptar.

  6. La ventana mostrará todos los datos de poolmon.exe, si es el caso.


poolmon02 poolmon03



                                            poolmon01


poolmon /? muestra los parámetros aplicables.


Teclas de comando que pueden utilizarse en la ventana:


D: ordena por la columna Diff
P: ordena la lista de etiquetas por Paginado, No paginado o una combinación. P recorre cíclicamente cada uno.
B: ordena las etiquetas por uso máximo de bytes.
M: ordena las etiquetas por asignación máxima de bytes.
T: ordena las etiquetas alfabéticamente por nombre de etiqueta.
E: muestra el total Paginado, No paginado en la parte inferior. Lo recorre cíclicamente.
L: Remarca
A: ordena las etiquetas por tamaño de asignación.
F: ordena las etiquetas por «libres».
S: ordena las etiquetas por las diferencias de asignaciones y libres.
E: muestra el total Paginado, No paginado en la parte inferior. Lo recorre cíclicamente.
R: Imprime resumen de información de memoria
Q: sale.


Usar archivos Pooltag:

Poolmon muestra la memoria utilizada por controladores y aplicaciones. En cuanto usamos el comado para resolver cuellos de botella, lo importante es identificar el controlador, componente de kernel o aplicación que está causando el problema para poder solucionarlo. El comando nos proporciona información para identificar esos componentes problemáticos; sin embargo, puede que la información mostrada sea un poco enredada de interpretar y no ser demasiado útil en el proceso. Afortunadamente, podemos configurar la herramienta para mostrar nombres más amistosos para estos componentes mediante archivos pooltag. Pooltag.txt, que se incluye en herramientas de depuraciónpara Windows, lista las etiquetas usadas por los componentes en modo kernel y controladores.


Para tener la versión actual de Pooltag, instala la última versión de las herramientas de depuración de Windows. El siguiente comando enviará la información a la ruta indicada.


poolmon -g «C:Program FilesDebugging Tools for Windowstriagepooltag.txt»


 poolmon04


Identificando el origen de los cuellos de botella de grupos no paginados:

poolmon05


Poolmon muestra información diversa, la más útil puede que se encuentre en un número limitado de columnas:



  • Type Esta columna muestra Nonp o Paged para el uso de memoria paginada o no paginada. La no paginada suele ser la que causa los problemas.

  • Diff Esta muestra el número de asignaciones de memoria del componente y que no han sido liberadas. Un valor en la columna es la diferencia entre los correspondientes valores en las columnas de asignaciones y liberados (Allocs y Frees). Si el valor de un componente se incrementa podría indicar un cuello de botella de memoria en ese componente.

  • Bytes Cantidad de memoria asignada actualmente. Si dicho valor se incrementa en un componente, podría significar un cuello de botella de memoria en el componente.

En la mayoría de escenarios estaremos interesados en la identificación de un componente que tiene un cuello de botella de memoria no paginada. El parámetro P es útil ya que hace que poolmon muestre aquéllos componentes que están usando memoria no paginada. El parámetro D lo es también, ya que ordena las filas por la columna Diff.


Estos parámetros se pulsan después de efectuar el comando:


poolmon -g «C:Program FilesDebugging Tools for Windowstriagepooltag.txt»


pulsar P y luego pulsar D.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *