Como obter o tamanho máximo do conjunto virtual de um processo unix durante sua vida útil?

2

O comando time inclui um parâmetro de formato "M", que, de acordo com a página time man no Linux, é usado para o seguinte:

Maximum resident set size of the process during its lifetime, in Kilobytes.

No entanto, não parece que time seja capaz de medir o tamanho máximo do conjunto virtual de um processo durante sua vida útil. Como posso conseguir isso no Linux?

Só para ficar claro, eu tenho controle sobre os processos sendo perfilados, então se eu precisar fazer este processo filho emitir um sinal no final de sua execução que indica que ele está pronto para terminar, para que o processo pai possa ler seu VSZ via ps ou pmap , e então o processo pai terminar explicitamente o filho depois que a memória for lida, eu posso fazê-lo, mas seria doloroso, então eu esperava que houvesse uma solução mais simples que não envolveu instrumentar o código do programa que está sendo analisado - algo como um equivalente drop-in para time que também pode medir o tamanho máximo do conjunto virtual seria ideal. Eu posso escrever um programa C personalizado para iniciar o processo filho, se necessário. No entanto, se eu fosse para a rota C, não sei quais chamadas de sistema eu usaria para habilitar o rastreamento de kernel do VSZ no processo filho.

Qualquer orientação seria apreciada.

EDIT: Isso acaba por ser não trivial. Soluções possíveis aqui: link

    
por jbeard4 09.06.2012 / 01:15

1 resposta

1

Não sei se seria útil para você, mas pidstat -r 1 -p 1 samples / sbin / init assim:

10:53:38          PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
10:53:39            1      0.00      0.00   13648   1108   0.01  init
10:53:40            1      0.00      0.00   13648   1108   0.01  init
10:53:41            1      0.00      0.00   13648   1108   0.01  init
10:53:42            1      0.00      0.00   13648   1108   0.01  init
10:53:43            1      0.00      0.00   13648   1108   0.01  init
10:53:44            1      0.00      0.00   13648   1108   0.01  init
    
por 09.06.2012 / 04:56