Processar uso de memória no Linux

0

Eu tenho três fontes conflitantes de informações sobre o uso de memória de um processo. Estou usando o gnome-terminal como o processo de exemplo.

ps aux relata um uso de 624480 unidades para o pid 31880 (digo unidades, porque não sei o que ele usa como unidade), mas de acordo com link , está em bytes.

Então eu tenho /proc/31880/status , o que me diz que é a mesma quantidade, mas as unidades são kB:

[...]
VmPeak:   624480 kB
VmSize:   624480 kB
VmLck:         0 kB
[...]

que se traduz em 624 MiB (completamente impossível?); e finalmente eu tenho gnome-system-monitor o que me dá aprox. 9,9 MiB.

Qual deles está correto?

    
por Lev 10.03.2018 / 19:19

2 respostas

2

Eles estão corretos: ps mostra kibibytes, assim como /proc/.../status . 610 MiB (624.480 kiB) é o tamanho virtual do processo, que é a quantidade total de espaço de endereço que ele reservou (em seus próprios mapeamentos). 9.9 MiB é seu tamanho residente, que é a quantidade de memória que está realmente usando.

Consulte Precise de explicação sobre o tamanho do conjunto de residentes / tamanho virtual para obter mais detalhes.

    
por 10.03.2018 / 19:42
1

Instale o pacote smem se você não o tiver já. É o mais preciso. ps -eo pid,command,rss e ps -eo pid,command,size são ambos um pouco imprecisos, pois podem não informar o suficiente ou apenas muito, já que contam a memória que está realmente alocada.

smem mostra o PID, Usuário, Comando, Troca, USS, PSS e RSS. Execute-o e preste atenção na coluna PSS . Essa é a quantidade real de memória física sendo usada e também é responsável pela quantidade adequada de memória compartilhada que é realmente usada. Se você quiser apenas PID, Command e PSS, poderá canalizá-lo para awk . Para mim, seriam as colunas 1, 3 e 6.

smem | awk '{print $1,$3,$6}'

    
por 10.03.2018 / 19:43

Tags