Descubra a memória total alocada para um processo específico no Ubuntu

15

Como posso descobrir a memória total alocada para um processo específico no Ubuntu?

Anjali
fonte
1
Você já experimentou ps -aefl e olhou para a coluna SZ?
Mdpc
2
O que você quer dizer com "descobrir a memória alocada"? Deseja saber quanta memória o processo está usando?
Gilles 'SO- stop be evil' -

Respostas:

14

Experimentar:

pidof bash | xargs ps -o rss,sz,vsz

Para encontrar o uso de memória do seu bashshell atual (supondo que você esteja usando bash). Mude bashpara o que estiver investigando. Se você está atrás de um processo específico, basta usar por conta própria:

ps -o rss,sz,vsz <process id>

Na manpágina:

RSS: tamanho do conjunto residente, a memória física não trocada que uma tarefa usou (em kiloBytes).

SZ: tamanho em páginas físicas da imagem principal do processo. Isso inclui texto, dados e espaço de pilha.

VSZ: tamanho da memória virtual do processo em KiB (unidades de 1024 bytes).

A manpágina para pslistará todos os argumentos possíveis para a -oopção (há muito por onde escolher). Em vez de -o rss,szvocê poderia usar a vopção de estilo BSD (sem traço), que mostra um layout de memória alternativo.

garethTheRed
fonte
Thanks gareth ... Você está dizendo que SZ é a memória alocada para esse processo?
Anjali
4
Há uma boa QA aqui que explica a relação entre RSS, SZe VSZ.
precisa saber é o seguinte
0

como descobrir a memória total alocada para um processo específico no ubuntu?

Você não define qual é a memória alocada para um processo e, na verdade, essa é uma pergunta bastante complexa (e os mapeamentos de memória compartilhada - consulte mmap (2) para obter detalhes; e a memória compartilhada POSIX - consulte shm_overview (7) para obter mais informações) ; e algumas páginas no cache de páginas usadas para arquivos abertos; etc ...)

Você pode usar o /proc/sistema de arquivos (que BTW é usado por ps, pmap, top, htopetc ....). Leia proc (5) para mais. Em particular para o processo de pid 1234 você poderia usar /proc/1234/status, /proc/1234/statm, /proc/1234/mapsetc ... Eles são todos os pseudo-arquivos textuais (um pouco como tubos) que você pode ver com cat(ou ler sequencialmente dentro de algum programa). BTW, de dentro de um programa que você pode usar /proc/self (que é um pseudo-link simbólico), por exemplo, ler sequencialmente /proc/self/statusetc ...

Veja também LinuxAteMyRam .

Basile Starynkevitch
fonte