Estimativa de RAM necessária para um processo no Linux

1

Eu sou um usuário de um cluster de computação baseado em Linux que executa um sistema de enfileiramento de tarefas PBSPro . PBSPro gosta de saber quanta RAM deve estar disponível para uma tarefa para garantir que ela seja executada corretamente; por exemplo, por qsub -l select=1:mem=4GB someapp declaro que desejo enviar someapp para execução em um nó que tenha pelo menos 4 GB de memória livre. Quanto mais restrito eu puder fornecer, mais rápido meu aplicativo será agendado para execução.

Como posso estimar a quantidade de memória que someapp precisa?

Eu posso fazer um teste e assistir htop , observando cuidadosamente o RSS do meu processo, mas existe alguma ferramenta ou método que o torne mais automático? Vamos dizer, retornar a quantidade máxima de memória paginada para o processo durante todo o tempo de execução?

Sou apenas um usuário normal no cluster, sem acesso root. Eu só estou executando um único processo com potencialmente vários segmentos; mesmo se someapp for fork() , não me interessa se a memória do processo filho é contada ou não.

    
por liori 17.04.2016 / 22:41

1 resposta

2

O tempo GNU tem uma opção -v que inclui o máximo de RSS. Não é o shell embutido, então /usr/bin/time -v

A realidade é mais complicada do que isso. No entanto, você provavelmente não quer se incomodar com um mapa detalhado analisando a pmap nem precisa dos detalhes fornecidos pelo perfil como valgrind .

Ou você sabe que alguma tarefa de tamanho, digamos de 4 GB, será agendada rapidamente e lidará com falhas se isso for muito pouco.

    
por 18.04.2016 / 04:45