O uso de memória do Linux não é adicionado

3

Eu tento monitorar o uso de memória no meu servidor Ubuntu. Quando eu executo o comando 'top', ele mostra que 70% da memória é usada. (mostrado na linha 'Mem:'). Mas eu quero encontrar os processos que usam minha memória e os somam, está longe de 70%. Alguém pode ajudar a explicar isso para mim?

Muito obrigado!

Aqui está o resultado do meu primeiro comando:

top - 20:59:06 up 23 days, 33 min,  3 users,  load average: 0.06, 0.12, 0.09
Tasks:  92 total,   1 running,  91 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3%us,  0.2%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4124236k total,  2903104k used,  1221132k free,   147508k buffers
Swap:  4192252k total,      440k used,  4191812k free,  2596860k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
30558 mysql     20   0  311m  36m 5956 S    0  0.9   0:00.74 mysqld
28848 jiechao   20   0 50688 9244 3144 S    0  0.2   0:05.65 python
  956 root      20   0 11712 8004 2964 S    0  0.2   0:39.26 ddclient - slee
28846 jiechao   20   0 49256 7652 3280 S    0  0.2   0:07.17 python
22284 jiechao   20   0 10400 6876 1664 S    0  0.2   0:00.49 bash
30433 jiechao   20   0 10344 6776 1620 S    0  0.2   0:00.46 bash
31053 jiechao   20   0 10344 6768 1612 S    0  0.2   0:00.47 bash
28847 jiechao   20   0 48168 6096 2980 S    0  0.1   0:00.59 python
29178 www-data  20   0  228m 5392 2052 S    0  0.1   0:00.06 apache2
29179 www-data  20   0 12796 5148 1920 S    0  0.1   0:00.02 apache2
29180 www-data  20   0 12796 5148 1920 S    0  0.1   0:00.02 apache2
29181 www-data  20   0 12796 5148 1920 S    0  0.1   0:00.02 apache2
29182 www-data  20   0 12796 5148 1920 S    0  0.1   0:00.02 apache2
29183 www-data  20   0 12796 5148 1920 S    0  0.1   0:00.02 apache2
  999 root      20   0 11396 3948 2052 S    0  0.1   0:21.21 apache2
  926 whoopsie  20   0 24572 3284 2280 S    0  0.1   0:00.18 whoopsie
30933 root      20   0  9604 3104 2484 S    0  0.1   0:00.00 sshd
22164 root      20   0  9604 3096 2484 S    0  0.1   0:00.01 sshd
30313 root      20   0  9604 3096 2480 S    0  0.1   0:00.00 sshd
24302 root      20   0  9632 3024 2428 S    0  0.1   0:00.07 sshd
  787 root      20   0  6664 2424 1988 S    0  0.1   0:00.05 sshd
    1 root      20   0  3504 1876 1276 S    0  0.0   0:01.57 init
24421 jiechao   20   0  9632 1596  992 S    0  0.0   0:00.00 sshd
  812 syslog    20   0 31044 1484 1008 S    0  0.0   1:47.00 rsyslogd
    
por Jiechao Li 29.12.2012 / 06:00

1 resposta

4

Certamente, esse número é uma combinação de RAM usada por processos e buffers e cache para arquivos. O Linux tem uma filosofia de maximizar o uso de RAM para arquivos acessados em vez de ter que bater no disco rígido para esses arquivos.

Tente usar o comando free ou observar o próprio kernel por meio desse comando, cat /proc/meminfo.

grátis

% free
             total       used       free     shared    buffers     cached
Mem:       7987492    7717152     270340          0     314644    2435048
-/+ buffers/cache:    4967460    3020032
Swap:      5963772       1304    5962468

cat / proc / meminfo

% cat /proc/meminfo 
MemTotal:        7987492 kB
MemFree:          284328 kB
Buffers:          314384 kB
Cached:          2427852 kB
SwapCached:          116 kB
Active:          4698232 kB
Inactive:        2374796 kB
Active(anon):    3756264 kB
Inactive(anon):   768392 kB
Active(file):     941968 kB
Inactive(file):  1606404 kB
Unevictable:          68 kB
Mlocked:              68 kB
SwapTotal:       5963772 kB
SwapFree:        5962468 kB
Dirty:               452 kB
Writeback:             0 kB
AnonPages:       4330964 kB
Mapped:           185540 kB
Shmem:            193864 kB
Slab:             306532 kB
SReclaimable:     261520 kB
SUnreclaim:        45012 kB
KernelStack:        6192 kB
PageTables:        94376 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     9957516 kB
Committed_AS:    9671884 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      585392 kB
VmallocChunk:   34359040964 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       12288 kB
DirectMap2M:     8237056 kB

O comando free mostrará o total de RAM, 7987492, no meu caso, dos quais 7717152 está sendo usado e 270340 está livre. Esta é uma combinação da RAM, buffers e cache. A segunda linha mostra o quanto dessa RAM está sendo usada pelos buffers e pelo cache, 4967460, o que significa que eu tenho 3020032 de RAM livre.

De um artigo do itworld.com para entender o uso da memória:

The buffers number represents in-memory blocks that result from the kernel accessing the disk, such as when the kernel needs to read the contents of files. The cached figure tells us how much RAM is being used to cache the content of recently read files. The buffer figure increases when the file system layer is bypassed while the cache grows when the file system is used. Both grow as read operations increase.

OBSERVAÇÃO: Lembre-se de que o gerenciador de memória do kernel do Linux libera qualquer RAM usada para buffers & cache é uma aplicação que realmente precisa disso.

Recursos

por 29.12.2012 / 07:19