Sobre mem e vmem

3

Estou trabalhando com uma máquina de cluster em execução no linux.

Eu tenho um script de shell que usa mpirun para enviar meus trabalhos para a máquina do cluster. Nesse mesmo script, posso escolher o número de nós que serão atribuídos ao trabalho. Até agora tudo bem.

Meu problema surge depois: quando eu submeto alguns trabalhos, tudo funciona bem, no entanto, quando preencho a capacidade dos nós, alguns dos trabalhos enviados não serão concluídos. Por conseguinte, suspeito que a memória disponível no cluster não é suficiente para lidar com todos os meus trabalhos ao mesmo tempo.

É por isso que quero verificar o uso de memória de cada trabalho ao longo do tempo, depois uso o comando qstat -f , mas ele exibe muitas coisas, e a maioria delas não consigo entender.

Então, aqui está a minha pergunta: No exemplo de saída do comando qstat -f abaixo, podemos ver dois tipos de memória: mem e vmem . Eu gostaria de saber qual é a diferença entre esses dois e qual é a quantidade real de memória usada?

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

Além disso, gostaria de receber qualquer referência onde a saída deste comando é detalhada. Eu tentei o man qstat, mas ele não entra nos detalhes de cada linha retornada.

    
por Mary 14.11.2014 / 04:18

1 resposta

1

Apenas para remover isso da lista de perguntas abertas e para dar uma resposta simplificada (o comentário de Cachinhos Dourados acima e a documentação do qstat assumem uma familiaridade mais profunda com os sistemas):

A resposta depende exatamente do que você quer dizer com "a quantidade real de memória usada" (e mais adiante na sua resposta ao comentário: "o espaço de RAM usado").

"mem" é o quanto da RAM da máquina foi usada pelo seu trabalho, mais precisamente o pico de uso observado. Isso não é necessariamente o pico real de uso, pois o sistema de monitoramento de tarefas em seu cluster pode estar apenas verificando o uso de vez em quando. Seu trabalho pode estar tentando usar muito mais memória que relatou aqui, mas o sistema não está dando mais memória ao trabalho, por exemplo, porque não há mais memória ou outras tarefas em execução na mesma máquina competem por memória. Além disso, o cache do sistema de arquivos pode ser um concorrente da RAM, se houver uma grande atividade de arquivos (E / S).

"vmem" é uma quantidade relacionada a como os processadores modernos gerenciam a memória. Mais uma vez, é um valor de pico. Esse número pode incluir várias coisas que processos podem acessar, como arquivos mapeados na memória e espaço de troca. Inclui espaço que um processo alocou mas nunca usou e, portanto, pode ser bastante grande. Se o número for baixo, permite concluir que a memória não é o problema, mas se for alta, você não sabe e precisa investigar mais. Alguns aplicativos alocam muita memória virtual, mesmo que precisem apenas de uma fração.

    
por 25.01.2017 / 16:22