Como obter o tamanho do armazenamento virtual de um processo continuamente?

2

Todos sabemos que o comando top monitora os processos em execução continuamente. Eu tenho um aplicativo que está sendo executado continuamente em um Linux embarcado e eu preciso monitorar seu valor VSZ (tamanho de armazenamento virtual) do comando top , quero dizer, enquanto o aplicativo está em execução, cada período de tempo obter o valor VSZ e log (Bem, basicamente pegue o valor pelo menos primeiro). Como obter o valor de VSZ em tal contexto? É possível em C / C ++, bash, qualquer outro método? Agradecemos antecipadamente.

    
por 3bdalla 02.06.2015 / 08:37

2 respostas

3

Com um kernel Linux, você pode se referir a /proc/[PID]/stat (definido em /usr/src/linux/fs/proc/array.c ). Contém numerosos campos, o 23º é o tamanho da memória virtual em bytes (veja man proc ).

Como alternativa, você também tem /proc/[PID]/statm , que contém apenas valores sobre a memória (em páginas) ou, mais legível para humanos, /proc/[PID]/status .

Todas essas informações estão detalhadas em man proc .

Use o comando cat para visualizar esses arquivos.

    
por 02.06.2015 / 08:54
1

Com ps -eo vsz,comm , você pode listar os valores de VSZ e de comando. Então você pode combinar isso em uma sub-rotina (shell script) como:

while true
do
    ps -eo vsz,comm | grep process-i-want >> /path/to/output
    sleep 1
done

Você também pode substituir >> /path/to/output por | tee /path/to/output se quiser ver e registrar a saída.

    
por 02.06.2015 / 09:41