O que o Linux gasta em memória além da userland, caches e slab?

2

Eu tenho um sistema com 1 GB de RAM física. No momento, free mostra o seguinte uso de memória:

             total       used       free     shared    buffers     cached
Mem:       1026360     863660     162700          0          0      50216
-/+ buffers/cache:     813444     212916
Swap:      5242876     500648    4742228

Portanto, exceto o cache de blocos, 813 MB são usados. /proc/meminfo (que vou postar na parte inferior devido ao comprimento) me diz que, deste, 283 MB são mapeados em processos userland ( AnonPages + Mapped ), e que 127 MB são usados pelo kernel ( Slab + KernelStack + PageTables ).

Isso ainda deixa ~ 400 MB não contabilizados, no entanto. As minhas concepções de como o sistema usa a memória são um pouco corretas? Existe uma maneira de saber para que metade da minha memória é usada?

MemTotal:        1026360 kB
MemFree:          193768 kB
Buffers:               0 kB
Cached:            28932 kB
SwapCached:       101208 kB
Active:           178816 kB
Inactive:         182476 kB
Active(anon):     167196 kB
Inactive(anon):   168184 kB
Active(file):      11620 kB
Inactive(file):    14292 kB
Unevictable:        9848 kB
Mlocked:            9848 kB
SwapTotal:       5242876 kB
SwapFree:        4739272 kB
Dirty:                24 kB
Writeback:             0 kB
AnonPages:        268280 kB
Mapped:            14832 kB
Shmem:               280 kB
Slab:             111828 kB
SReclaimable:      27432 kB
SUnreclaim:        84396 kB
KernelStack:        2280 kB
PageTables:        13200 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     5756056 kB
Committed_AS:    1506036 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      145004 kB
VmallocChunk:   34359581976 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       79808 kB
DirectMap2M:      968704 kB
    
por Dolda2000 10.07.2015 / 05:43

1 resposta

-1

Eu uso um pouco awk para obter os usuários de memória top10 com base no tamanho do conjunto residente (RSS) que é a quantidade de memória que um processo realmente usa em seus servidores RAM (sem páginas trocadas):

awk '{ printf "%8d %8d %8d pid:%-5d comm:%-10s state:%c\n",$14,$15,$24,$1,$2,$3; }' /proc/[1-9]*/stat |sort -rn -k3 |sed 10q

sem o sed 10q , você obtém a lista completa de processos classificados em ordem decrescente.

O RSS é a terceira coluna na saída. Possivelmente você precisa corrigir os números de campo do seu kernel com base em man 5 proc .

    
por 10.07.2015 / 07:22

Tags