Depois de pesquisar, ainda confuso sobre o monitoramento do uso de RAM

10

Eu passei por este artigo , que explica vários métodos para verificar seu uso de RAM. No entanto, não consigo reconciliar os diferentes métodos e não sei qual deles está correto.

Quando eu faço login pela primeira vez, sou saudado com uma tela como esta:

  System information as of Sun Apr 28 21:46:58 UTC 2013

  System load:  0.0               Processes:           76
  Usage of /:   15.6% of 7.87GB   Users logged in:     1
  Memory usage: 41%               IP address for eth0: 
  Swap usage:   0%

Isso sugere para mim que estou usando 41% da minha memória RAM, o que parece bastante alto, já que o servidor não está fazendo muito. Ou esse número se refere a algo além da RAM?

Em seguida, tento o método free -m :

ubuntu@ip-:~$ free -m
             total       used       free     shared    buffers     cached
Mem:           590        513         76          0         67        315
-/+ buffers/cache:        130        459
Swap:            0          0          0

De acordo com o gráfico explicativo no artigo, isso implica que eu tenho 130MB de RAM usada e 459MB de RAM livre, o que sugere que estou usando cerca de 22% da minha RAM.

Em seguida, corro top :

top - 22:14:48 up 195 days, 21:30,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  77 total,   1 running,  76 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.3%us,  0.3%sy,  0.0%ni, 97.7%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    604376k total,   525692k used,    78684k free,    69124k buffers
Swap:        0k total,        0k used,        0k free,   322740k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
    1 root      20   0 24332 1864  976 S  0.0  0.3   0:08.75 init               
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd     

Este é o mais confuso, como o resumo mostra-me usando 525MG de 604M total, e ainda quando é usar o comando interativo "m" para classificar pela memória superior o processo superior está usando apenas 0,3% da memória ???

Finalmente, o comando ps parece também mostrar muito pouco uso de memória:

root@ip-:/home/ubuntu# ps -o command,rss
COMMAND                       RSS
ps -o command,rss             788
sudo su root                 1764
su root                      1404
bash                         2132

Eu adoraria que alguém corrigisse quaisquer mal-entendidos que eu estivesse criando esses aparentes conflitos.

Obrigado!

EDITAR para Rahul

Ouput de cat /proc/meminfo :

MemTotal:         604376 kB
MemFree:          157564 kB
Buffers:           49640 kB
Cached:           231376 kB
SwapCached:            0 kB
Active:           290040 kB
Inactive:          97772 kB
Active(anon):     107672 kB
Inactive(anon):     4844 kB
Active(file):     182368 kB
Inactive(file):    92928 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                52 kB
Writeback:             0 kB
AnonPages:        106836 kB
Mapped:            22920 kB
Shmem:              5712 kB
Slab:              42032 kB
SReclaimable:      34016 kB
SUnreclaim:         8016 kB
KernelStack:         688 kB
PageTables:         3584 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      302188 kB
Committed_AS:     242768 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        7152 kB
VmallocChunk:   34359729008 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      637952 kB
DirectMap2M:           0 kB
    
por Jonah 29.04.2013 / 00:50

3 respostas

8

Você só precisa entender o Conceito de Memória

Como por sua saída de / proc / meminfo, você apenas precisa observar abaixo as coisas:

Buffers : - Um buffer é algo que ainda precisa ser "gravado" no disco. Representa quanto de RAM é dedicado ao bloco de disco do cache. "Em cache" é semelhante a "Buffers", só que desta vez armazena em cache páginas de leitura de arquivos

Em cache : - Um cache é algo que foi "lido" do disco e armazenado para uso posterior. Geralmente, você pode considerar a área de cache como outra RAM "livre", já que ela será reduzida gradualmente se o aplicativo exigir mais memória.

É suficiente entender que tanto "buffers" quanto "Cached" representam o tamanho do cache do sistema. Eles crescem ou diminuem dinamicamente conforme solicitado pelo mecanismo interno do kernel do Linux.

no Webhosting eles fazem o cache clear usando abaixo cmd: (principalmente configurado no cron):

sync && echo 3 > /proc/sys/vm/drop_caches

Citar Link

EDIT para mais um requisito, por exemplo, por uso de memória do usuário

#!/bin/bash
total_mem=0

printf "%-10s%-10s\n" User MemUsage

while read u m
do
        [[ $old_user != $u ]] && { printf "%-10s%-0.1f\n" $old_user $total_mem; total_mem=0; }
        total_mem=$(echo $m + $total_mem | bc);
        old_user=$u

done < <(ps --no-headers -eo user,%mem| sort -k1)

#--EOF

Por favor, verifique com script acima e deixe-me saber, se ele mostra corretamente ou não.

    
por 29.04.2013 / 07:29
2

Boa resposta @RahulPatil.

Outro ponto a considerar sobre ps ou top é o seguinte

This tool [exmap] is more accurate than ps or top because it takes into account shared libraries in use by multiple applications. For example, if two applications are using the same shared library, which takes up 1MB of memory, ps will show both apps using 1MB of extra memory, whereas exmap more correctly shows each app using 500 KB. This greater accuracy is particularly important for assessing desktop environments such as KDE and GNOME, which make very heavy use of libraries shared between applications.

Via ibm / developerworks / linux_memory

Desde que sua pergunta se refira a um servidor sem cabeçalho - não sei ao certo quanto de top duplo de reportagem ou ps realmente terá.

    
por 01.05.2013 / 04:49
0

Eu temo que possamos estar negligenciando o óbvio porque é um "claro" para a maioria de nós.

Jonah, me perdoe se eu estiver errado, mas suas perguntas soam como se você não tivesse percebido que todos esses valores, o uso da CPU em particular, normalmente variará bastante do segundo para o segundo.

O uso da CPU pode ir de um dígito a 100% instantaneamente quando um novo processo é iniciado, mas rapidamente (esperançosamente) volta para o intervalo de menos de 50%.

O uso da memória muda mais lentamente, mas lá, o Linux tenta usar a memória não em uso ativo, executando processos para acessar caches em cache. Por exemplo, ele tenta prever o que precisará ser lido do disco a seguir, como talvez o restante de um arquivo grande após uma parte ter sido lido, e pré-carregá-lo no cache. Alguns dos valores de uso de memória incluem a memória usada pelos processos, bem como a memória usada para armazenamento em cache. Em um sistema que está sendo executado por algum tempo, os dois combinados provavelmente serão 80-90% ou mais.

Considere também que o processo que você executa para mostrar o uso, como top , também usa CPU e memória. Se você escreveu um script com um loop para relatar continuamente o uso da CPU, quase sempre mostrará 100%, porque o ato de reportar o uso em si (sem alguns sleep de atrasos lançados) usa toda a CPU.

    
por 03.05.2013 / 06:52

Tags