O que está usando memória? [fechadas]

3

De acordo com htop e free , a máquina que estou vendo está atualmente em 6631/11907 MB de RAM. Isso é mais ou menos metade da RAM disponível. No entanto, quando eu escolho top ou htop por MEM%, a maior parte da memória usada é pelo Xorg com 0.8% MEM. gnome-settings está usando 0,3% e alguns outros estão usando 0,1%. Essas porcentagens não chegam a ~ 50%.

Como posso descobrir o que está usando ~ 50% da memória e por que não estou vendo esse uso de memória no topo / htop?

A saída de free -mt :

             total       used       free     shared    buffers     cached
Mem:         11907      10660       1246          0        650       3379
-/+ buffers/cache:       6629       5277
Swap:         3999         26       3973
Total:       15907      10686       5220

EDITAR : conforme solicitado ...

vmstat 1 5

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  26640 312180 695976 4229988    0    0     4    34    0    1  1  1 96  2  0   
 0  0  26640 312032 695976 4230016    0    0     0     0  157  191  0  0 100  0  0  
 0  0  26640 312156 695976 4230016    0    0     0     0  158  270  0  0 100  0  0  
 0  0  26640 312156 695976 4230016    0    0     0     0  128  189  0  0 100  0  0  
 0  0  26640 312156 695976 4230016    0    0     0     0  212  308  0  0 100  0  0  

cat / proc / meminfo

MemTotal:       12192876 kB
MemFree:          311644 kB
Buffers:          695984 kB
Cached:          4230016 kB
SwapCached:         7684 kB
Active:          1378792 kB
Inactive:        3656424 kB
Active(anon):       2192 kB
Inactive(anon):   108500 kB
Active(file):    1376600 kB
Inactive(file):  3547924 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4095992 kB
SwapFree:        4069352 kB
Dirty:                28 kB
Writeback:             0 kB
AnonPages:        102412 kB
Mapped:            52116 kB
Shmem:              1456 kB
Slab:            5584084 kB
SReclaimable:    4402760 kB
SUnreclaim:      1181324 kB
KernelStack:        3176 kB
PageTables:        17852 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    10192428 kB
Committed_AS:     678004 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      185496 kB
VmallocChunk:   34359540220 kB
HardwareCorrupted:     0 kB
AnonHugePages:     28672 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:     5177316 kB
DirectMap2M:     7403520 kB
DirectMap1G:           0 kB
    
por CptSupermrkt 18.07.2014 / 16:35

4 respostas

1

O problema pode estar relacionado à memória compartilhada, que não é levada em conta por muitos utilitários porque é compartilhada entre vários processos. Você pode verificar com o utilitário smemstat ("usar memória de relatório com a memória compartilhada dividida proporcionalmente").

EDIT: Uma parte significativa da memória também pode ser obtida pelo kernel (incluído no valor used da saída free ). Veja o conteúdo de /proc/meminfo . De acordo com Rastreando o uso de memória "ausente" no linux , Slab + Shmem + KernelStack + PageTables fornece o espaço do kernel. A laje parece ser bastante importante em geral.

Outros usuários tiveram problemas semelhantes:

por 18.07.2014 / 18:07
0

Existem duas explicações possíveis para a discrepância:

  • Você está em uma máquina virtual e há memória compartilhada.
  • Você tem muitos processos muitos que consomem uma quantidade minúscula de memória, mas quando agregados, eles consomem muito mais memória.

O primeiro é fácil de determinar, o segundo ... da mesma forma, mas com a ressalva de que você precisa encontrar vários processos que estão usando sua memória RAM. ps, uniq e sort podem ajudar você:

➜  ~  ps axco command | uniq -c | sort -nr | head
      2 xdg-open <defunct>
      2 mplayer
      1 zsh
      1 zsh
      1 zsh
      1 x-session-manag
      1 xprop
      1 Xorg
      1 writeback
      1 watchdog/0

Com isso, você pode ver se há um processo desonesto chamando a si mesmo e usando sua memória.

    
por 18.07.2014 / 16:59
-1

Você já recebeu sua resposta com o comando livre,

free -m
-/+ buffers/cache:       6629       5277

esta é a linha que você precisa, então esses valores são memória real usada, então você tem 5277 de memória livre real e é assim que você não a vê com top ou htop

Primeiro campo do livre:

             total       used       free     shared    buffers     cached
Mem:         11907      10660       1246          0        650       3379

Isso mostra a memória que é realmente reservada pelo SO (kernel) e não é real usada sem buffers, você pode consultar vmstat para mais informações e mdb -k module para verificar memmory usado pelo kernel e calculá-lo com vaulues de free comando.

Como já indiquei, sua memória é reservada (em cache) pelo kernel e permanece lá até que alguns dos aplicativos a solicitem. Então é por isso que você não pode ver qual processo o usa.

Por favor, dê a saída de cat /proc/meminfo e nos dê o campo de cache que é realmente o que é usado pelo kernel!

    
por 18.07.2014 / 17:08
-2

Você tem 1246 MB de memória completamente livre, MAS o 5277 mb que você vê é sem a memória 'cache'. Isso significa que o sistema operacional colocou algumas coisas em sua memória para ser mais rápido. Ele chama isso de "usado" (portanto, seu número "livre" é apenas 1246), mas ele está realmente disponível para você, se necessário.

veja esta resposta: 'free': formato de saída

    
por 18.07.2014 / 16:52

Tags