Não é possível exibir corretamente o uso de memória no Linux

2

Eu tenho o VPS e tenho o Ubuntu nele. Eu instalei o apache na função de trabalho (não prefork) também instalei o ruby EE 1.8.7 & mysql 5.x

Agora, quando eu verifico a memória, vejo 18,6% (de 924 MB) é usado pelo rack (deve ser o aplicativo rails que estou executando)

e quando eu faço livre -m recebo os seguintes resultados:

             total       used       free     shared    buffers     cached
Mem:           924        602        322          0          0          0
-/+ buffers/cache:        602        322
Swap:            0          0          0

onde minha memória está esgotada? free -m mostra toda a memória usada é o meu cache e nada mais como isso é possível? Não tenho usuários para o site a partir de agora.

O AUX não mostra nada de interessante, exceto 18,6% por rack e 2,6% por mysql.

Assim que encerro minha instância do apache, a memória chega a 150 mb.

Lista de módulos do apache carregados:

 core_module (static)
 log_config_module (static)
 logio_module (static)
 mpm_worker_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgid_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 status_module (shared)
 passenger_module (shared)

Este é o resultado do cat /proc/meminfo

MemTotal:       946344 kB
MemFree:        336624 kB
Buffers:             0 kB
Cached:              0 kB
SwapCached:          0 kB
Active:              0 kB
Inactive:            0 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       946344 kB
LowFree:        336624 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:           0 kB
AnonPages:           0 kB
Mapped:              0 kB
Slab:                0 kB
PageTables:          0 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:         0 kB
Committed_AS:        0 kB
VmallocTotal:        0 kB
VmallocUsed:         0 kB
VmallocChunk:        0 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB
    
por Gaurav Shah 05.09.2011 / 07:34

2 respostas

3

Existem algumas razões para o comportamento que você está vendo. Primeiro:

  • ps aux% é baseado no residente:

    %mem       %MEM    ratio of the process's resident set size  to the physical memory on the machine, expressed as a percentage. (alias pmem).
    
  • O relatório de
  • free inclui coisas diferentes de Memória ativa (residente /% MEM de ps) ao exibir valores

A essência disso é que, quando você olha de graça, está vendo o VSZ e outras alocações sendo adicionadas ao exibir o total. Quando você olha para o% em ps, você está vendo apenas uma peça do quebra-cabeça.

Para verificar isso, você pode analisar duas coisas: executar primeiro:

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www      18442  0.0  0.0 519156 65460 ?        Sl   Sep08   1:47 httpd

Você deve ver que o VSZ será consideravelmente maior que o RSS e, se você fizer os cálculos, provavelmente renderia um% muito maior, se incluído.

Em segundo lugar, você pode verificar a quantidade real de memória em uso olhando diretamente para / proc / meminfo:

# cat /proc/meminfo 
MemTotal:       99197880 kB
MemFree:        72697684 kB
Buffers:        13813488 kB
Cached:          4841820 kB
SwapCached:          196 kB
Active:          4662952 kB
...

Você notará que a coluna 'usada' do livre é mais do que apenas Ativo (aproximadamente RSS do ps).

A verdadeira explicação de por que isso é realmente é coberto em uma coleção de vários livros que são realmente uma ótima leitura se você está tentando adormecer, mas você pode obter algum conhecimento básico de alguns artigos:

Meminfo: link

ps / virtual e VSZ explicados: link

    
por 10.09.2011 / 21:17
1

Se desligar o Apache libera 450mb (aproximadamente metade da sua memória), então comece a olhar para o Apache. Observe que os módulos que são carregados na inicialização, qualquer ambiente relacionado e qualquer memória consumiram solicitações de resposta. Você pode ter um módulo com pouca memória ou vazamento no seu aplicativo. Veja também o número de trabalhadores na inicialização e o tamanho do pool de trabalho.

    
por 07.09.2011 / 15:18