Acerca de mem y vmem

Estoy trabajando con una máquina de clústeres 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 aquí todo bien.

Mi problema surge después: cuando presento algunos trabajos, todo funciona bien; sin embargo, cuando llene la capacidad de los nodos, algunos de los trabajos enviados no se completarán. En consecuencia, sospecho que la memory disponible en el clúster no es suficiente para ocupar todos mis trabajos al mismo time.

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

Así que aquí está mi pregunta: en la salida de muestra del command qstat -f continuación, podemos ver dos types de memory: mem y vmem . Me gustaría saber cuál es la diferencia entre estos dos y cuál es la cantidad real de memory 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 reference donde se detalla la salida de este command. Probé qstat con el hombre, pero no entra en los detalles de cada línea devuelta.

Solo para eliminar esto de la list de preguntas abiertas y para dar una respuesta simplificada (el comentario de goldilocks anterior y la documentation qstat suponen una mayor familiaridad con los sistemas):

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

"mem" es la cantidad de 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 cada cierto time. Es posible que su trabajo intente utilizar mucha más memory que aquí, pero el sistema no le está dando más memory al trabajo, por ejemplo porque no hay más memory u otras tareas que se ejecutan en la misma máquina compiten por la memory. Además, la memory caching del sistema de files puede ser un competidor para la RAM si hay una actividad de files (E / S) intensa.

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