? Determinar a quantidade de memória usada por um processo de execução em uma plataforma Linux é uma proposição complicada. Os valores para o uso de memória relatado pelo sistema operacional são imprecisos . Ao usar os utilitários embutidas fornecidas com o Linux , é importante entender as estatísticas de uso de memória e como eles são calculados. Como é que um processo de uso da memória?
Quando um processo é iniciado , o sistema operacional aloca a quantidade de memória que o processo requer para ser executado. Cada processo tem quatro segmentos de memória para o código executável e dados. O segmento de "código" contém as instruções executáveis. O segmento de "dados" contém variáveis estáticas e globais. A " pilha " contém variáveis locais. A " pilha " contém objetos alocados dinamicamente. Os processos podem usar bibliotecas compartilhadas. Bibliotecas compartilhadas só são carregados na memória uma vez, e todos os processos que utilizam uma biblioteca compartilhada especial vai usar essa cópia .
O que a memória faz Estatísticas Relatório Linux?
Memória virtual é o montante total do espaço de endereço reservado pelo sistema operacional para o processo para o seu código , dados e pilha. O tamanho da memória virtual relatado pelo Linux inclui todo o código , dados e espaço de pilha reservado para uso por um processo, em memória física e espaço de swap. Este valor inclui o espaço utilizado por todas as bibliotecas compartilhadas usadas pelo processo. A implicação disso é que as bibliotecas compartilhadas contar na íntegra para o tamanho de um determinado processo.
O tamanho da memória residente de um processo relatado pelo Linux inclui apenas a quantidade de memória física do processo e as bibliotecas compartilhadas que são referenciados a utilizar num determinado momento . Segmentos mudou-se para trocar o espaço não estão incluídos. Tal como com o tamanho da memória virtual, o tamanho da memória residente inclui o espaço utilizado por bibliotecas compartilhadas.
Visualizando um Instantâneo Simples processo com ps
O utilitário ps fornece uma instantâneo de processos em execução no sistema, informar o tamanho virtual e residente na memória , CPU e percentagens de memória e uma grande variedade de outras informações. Para examinar um único processo , use as seguintes opções para ps , incluindo vsz para o tamanho da memória virtual , e rss para o tamanho da memória residente. Por exemplo,
ps p 3746 o pid , rss, vsz , comm
saídas para o processo de 3746 :
PID RSS VSZ COMMAND3746 14444 351216 httpd2
acompanhamento dos processos com top
O utilitário superior fornece uma exibição ao vivo do desempenho do sistema . Para monitorar um ou mais processos específicos, com top , use a opção - p para fornecer uma lista de IDs de processo. Por exemplo :
top- p 3746,6100,28753,23176,25544
Depois de lançar cima , bateu o comando tecla "f" para acessar a tela de seleção da coluna. Ligue o monitor para o PID , VIRT , RES , SHR , SWAP , código, dados e colunas de comando. Como ilustrado na captura de tela , o visor mostra agora as seguintes estatísticas de memória :
virt : sizeRES Memória Virtual: Residente sizeSHR memória : partilhada sizeSWAP memória : Swapped sizeCODE : tamanho do código em memoryDATA físicas : Dados plus size pilha no memória física
Espreitando em /proc
status detalhado e informações de uso de memória do processo pode ser encontrado em /proc / /status e /proc / /smaps . Uma variedade de informação está contida em /proc / /status , incluindo as estatísticas de memória :
VmPeak : Pico sizeVmSize memória virtual : memoryVmData virtuais: segmento de dados sizeVmStk : Pilha sizeVmExe : segmento executável sizeVmLib : Biblioteca tamanho do código
/proc / /smaps fornece uma visão muito detalhada de um processo de " usos de memória , discriminadas por mapeamento para código, pilha , pilha e cada biblioteca compartilhada. A saída completa de smaps é bastante longa e difícil de digerir. Você pode usar o Linux: módulo smaps Perl para analisar e processar o arquivo smaps
.