c++ - uso - ver memoria ram linux terminal
monitorear el uso de la memoria de un programa en Linux (6)
No es exactamente lo que estás buscando, pero echa un vistazo a Valgrind .
¿Hay alguna herramienta disponible en Linux que muestre gráficamente o textualmente el uso de memoria para un programa? Por ejemplo, si escribo un programa C ++ y me gustaría verificar que los objetos se estén asignando y desasignando correctamente en la memoria, ¿hay aplicaciones disponibles que muestren visualmente los objetos que se están instanciando y eliminando? Cuando solía programar en Visual Studio, recuerdo recorrer un programa y usar un panel de depuración para monitorear el uso de la memoria y estoy buscando algo similar a eso en Linux.
Normalmente corro para vigilar el uso general de la memoria.
conky ( capturas de pantalla ) es un gran visor de recursos de computadora simple que se publica en el fondo de escritorio. Vigilo el uso de la memoria y el uso específico del programa.
Es realmente difícil calcular cuánta memoria está usando un proceso en un sistema operativo que admite memoria virtual.
El problema no es calcular cuánta memoria está usando, sino cuánto de eso es privado y cuánto se comparte.
Puede ver / proc / pid / maps o / proc / pid / smaps (tal vez). Estos archivos solo le informarán la cantidad de memoria que el proceso ha asignado a su espacio de direcciones, no la cantidad que está usando, y definitivamente no cuánto se comparte con otros procesos en el sistema.
Incluso los mapas "privados" pueden compartirse porque fork () hace copy-on-write, por lo que una página privada aún se puede compartir con algún otro proceso (relacionado, generalmente padre o hermano). Además, las páginas que han sido mapeadas pero nunca utilizadas no consumirán espacio.
Se puede ver el RSS (tamaño del conjunto residente) de cada asignación, pero eso solo le dice cuánto es residente (en RAM, en lugar de intercambiarlo en un archivo de intercambio, aún no asignado, o aún no cargado a la demanda desde un mapa archivo), ahora cuánto se comparte y con qué.
Supongo que tu mejor opción sería contar la cantidad de memoria privada anónima, lo que podría estar bien, en algunos casos.
1) Primera ejecución
ps -u <your user id>
2) Obtenga et pid del proceso que desea supervisar desde la salida de 1)
3) Luego corre
top -p <the pid of the process you want to monitor>
while (/proc/<pid>/status)
echo "VMSize: `ps -p <pid> -o vsize=`" >> ! mem.out
pstack <pid> >> mem.out
sleep 10
end
grep VMSize mem.out | awk -F'':'' ''{print $2}'' | sort -r -n | head -1
grep VMSize mem.out | awk -F'':'' ''{print $2}'' | sort -r -n | head -1
le dará la memoria máxima.
También use mem.out para ver la huella de memoria y la correlación de la pila actual.