GNU/Linux >> Tutoriales Linux >  >> Linux

Acerca de Mem y Vmem?

Estoy trabajando con una máquina de clúster que se ejecuta en Linux.

Tengo un script de shell que usa mpirun para enviar mis trabajos a la máquina del clúster. En ese mismo script, puedo elegir la cantidad de nodos que se asignarán al trabajo. Hasta ahora todo bien.

Mi problema surge después:cuando envío algunos trabajos, todo funciona bien, sin embargo, cuando lleno la capacidad de los nodos, algunos de los trabajos enviados no se completarán. En consecuencia, sospecho que la memoria disponible en el clúster no es suficiente para manejar todos mis trabajos al mismo tiempo.

Es por eso que quiero verificar el uso de memoria de cada trabajo a lo largo del tiempo, luego uso qstat -f comando, pero muestra muchas cosas, y la mayoría de ellas no las puedo entender.

Esta es mi pregunta: En la salida de muestra de qstat -f comando a continuación, podemos ver dos tipos de memoria:mem y vmem . Me gustaría saber cuál es la diferencia entre estos dos y cuál es la cantidad real de memoria utilizada.

resources_used.cput = 00:21:04
resources_used.mem = 2099860kb
resources_used.vmem = 40505676kb
resources_used.walltime = 00:21:08

Además, agradecería cualquier referencia donde se detalle la salida de este comando. Probé man qstat pero no entra en los detalles de cada línea devuelta.

Respuesta aceptada:

Solo para eliminar esto de la lista de preguntas abiertas y dar una respuesta simplificada (el comentario anterior de Goldilocks y la documentación de qstat asumen una mayor familiaridad con los sistemas):

La respuesta depende de qué quiere decir exactamente con "la cantidad real de memoria utilizada" (y más adelante en su respuesta al comentario:"el espacio de RAM utilizado").

"mem" es la cantidad de memoria RAM de la máquina utilizada por su trabajo, más precisamente, el uso máximo observado. Este no es necesariamente el uso máximo real, ya que el sistema de monitoreo de trabajos en su clúster solo puede verificar el uso de vez en cuando. Es posible que su trabajo esté tratando de usar mucha más memoria de la que se informa aquí, pero el sistema no le está dando más memoria al trabajo, por ejemplo, porque no hay más memoria u otras tareas que se ejecutan en la misma máquina compiten por la memoria. Además, la memoria caché del sistema de archivos puede ser un competidor para la RAM si hay mucha actividad de archivos (E/S).

Relacionado:Linux:¿qué aplicación usar para un calendario?

"vmem" es una cantidad relacionada con la forma en que los procesadores modernos administran la memoria. Nuevamente es un valor máximo. Este número puede incluir varias cosas a las que pueden acceder los procesos, como archivos asignados en memoria y espacio de intercambio. Incluye espacio que un proceso asignó pero nunca usó y, por lo tanto, puede ser bastante grande. Si el número es bajo, le permite concluir que la memoria no es el problema, pero si es alto, no sabe y necesita investigar más. Algunas aplicaciones asignan mucha memoria virtual incluso si solo necesitan una fracción.


Linux
  1. Hay un nuevo centro para trabajos de código abierto, y no se trata solo de desarrolladores y administradores

  2. Supervisión y gestión de la memoria

  3. Preguntas sobre putenv() y setenv()

  4. ¿Qué es /dev/mem?

  5. uso y cambio de tamaño de tmpfs

Cómo instalar y utilizar la herramienta forense de memoria de volatilidad

Cómo aumentar la memoria y la CPU en la máquina Vagrant

Supervisión eficaz del ancho de banda de la red, la CPU y la memoria

10 datos divertidos sobre Linus Torvalds y Linux

Crear y eliminar un trabajo cron

Límite de memoria y límite de CPU en Docker Container