GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo medir el uso de memoria real de una aplicación o proceso?

Con ps o herramientas similares, solo obtendrá la cantidad de páginas de memoria asignadas por ese proceso. Este número es correcto, pero:

  • no refleja la cantidad real de memoria utilizada por la aplicación, solo la cantidad de memoria reservada para ella

  • puede ser engañoso si las páginas se comparten, por ejemplo, por varios hilos o mediante el uso de bibliotecas vinculadas dinámicamente

Si realmente desea saber qué cantidad de memoria usa realmente su aplicación, debe ejecutarla dentro de un generador de perfiles. Por ejemplo, Valgrind puede brindarle información sobre la cantidad de memoria utilizada y, lo que es más importante, sobre posibles pérdidas de memoria en su programa. La herramienta de perfilado de montón de Valgrind se llama 'massif':

Massif es un perfilador de montones. Realiza perfiles de montón detallados tomando instantáneas periódicas del montón de un programa. Produce un gráfico que muestra el uso del montón a lo largo del tiempo, incluida información sobre qué partes del programa son responsables de la mayoría de las asignaciones de memoria. El gráfico se complementa con un archivo de texto o HTML que incluye más información para determinar dónde se asigna la mayor cantidad de memoria. Massif ejecuta programas unas 20 veces más lento de lo normal.

Como se explica en la documentación de Valgrind, debe ejecutar el programa a través de Valgrind:

valgrind --tool=massif <executable> <arguments>

Massif escribe un volcado de instantáneas de uso de memoria (por ejemplo, massif.out.12345 ). Estos proporcionan, (1) una línea de tiempo del uso de la memoria, (2) para cada instantánea, un registro de dónde se asignó la memoria de su programa. Una gran herramienta gráfica para analizar estos archivos es massif-visualizer. Pero encontré ms_print , una herramienta simple basada en texto incluida con Valgrind, que ya es de gran ayuda.

Para encontrar fugas de memoria, use el (predeterminado) memcheck herramienta de valgrind.


Pruebe el comando pmap:

sudo pmap -x <process pid>

Linux
  1. ¿Cómo monitorear el uso de la memoria dedicada al kernel?

  2. ¿Cómo puedo configurar la afinidad del procesador de un proceso en Linux?

  3. ¿Cómo puedo reservar un bloque de memoria del kernel de Linux?

  4. ¿Cómo reducir el uso de memoria de ClamAV?

  5. ¿Cómo puedo ocultar la salida de una aplicación de shell en Linux?

¿Cómo perfilar el uso de la memoria?

Si conozco el número PID de un proceso, ¿cómo puedo obtener su nombre?

¿Cómo puedo observar el ancho de banda de la memoria?

¿Cómo limitar el uso de la memoria de la aplicación?

¿Cómo puedo obtener la hora del reloj de pared de un proceso en ejecución?

¿Cómo limitar el uso de memoria por aplicación en Linux?