A memória roda ao longo do tempo, alto uso de "buffer / cache", baixa memória "disponível"

5

Sempre que eu reinicializo meu laptop, tudo é executado de maneira incrível e eu uso no máximo 40% de memória (de 8 GB). No entanto, ao longo do tempo (~ 1 dia de uso), o uso da memória sobe para 90% + e o sistema inicia a troca.

Agora, free -mh retorna isso:

              total        used        free      shared  buff/cache   available
Mem:           7,7G        1,3G        141M        223M        6,3G        246M
Swap:          7,5G        530M        6,9G

Eu estava supondo que a memória de buff / cache está livre para ser realocada se os processos exigirem, mas parece estar indisponível.

cat /proc/meminfo :

MemTotal:        8055268 kB
MemFree:          145184 kB
MemAvailable:     247984 kB
Buffers:           49092 kB
Cached:           423724 kB
SwapCached:        38652 kB
Active:           881184 kB
Inactive:         791552 kB
Active(anon):     708420 kB
Inactive(anon):   725564 kB
Active(file):     172764 kB
Inactive(file):    65988 kB
Unevictable:         252 kB
Mlocked:             252 kB
SwapTotal:       7812092 kB
SwapFree:        7267624 kB
Dirty:               352 kB
Writeback:             0 kB
AnonPages:       1195320 kB
Mapped:           235860 kB
Shmem:            234068 kB
Slab:            6117796 kB
SReclaimable:     167260 kB
SUnreclaim:      5950536 kB
KernelStack:       10352 kB
PageTables:        30312 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    11839724 kB
Committed_AS:    6410728 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:    104448 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:     1361472 kB
DirectMap2M:     5859328 kB
DirectMap1G:     1048576 kB

Eu achei esses valores especialmente interessantes, pois eles se correlacionam muito com o uso de buff / cache de free , mas eu não sei o que fazer com eles ou onde procurar a seguir:

SReclaimable:     167260 kB
SUnreclaim:      5950536 kB
Slab:            6117796 kB

Onde posso procurar em seguida? O que é a laje e existe uma maneira de reduzir o uso de memória?

    
por Max Hollmann 09.01.2018 / 13:54

2 respostas

2

Você deve verificar com top se algo está realmente usando sua RAM ou não, classificar por uso de memória ou verificar o uso de memória no Monitor do Sistema.

O Linux emprestará memória não utilizada para o armazenamento em cache de disco. Isso faz com que pareça que você está com pouca memória, mas você não está. Confira esta página para mais explicações: link

Você tem aproximadamente 6,5 GB de memória não utilizada no exemplo que foi postado. Você também pode ver que a quantidade de swap é muito baixa (540Mb).

Você pode liberar o (s) cache (s) como explicado aqui e então free exibirá a memória livre no campo disponível:

  • Para liberar pagecache:

    # echo 1 > /proc/sys/vm/drop_caches
    
  • Para libertar dentaduras e inodes:

    # echo 2 > /proc/sys/vm/drop_caches
    
  • Para liberar pagecache, dentries e inodes:

    # echo 3 > /proc/sys/vm/drop_caches
    

Ou com este comando:

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

Sobre o Slab:
Laje, SReclaimable, SUnreclaim
O kernel faz muita repetição durante o tempo de execução. Alguns objetos, como pedir o inode específico de um arquivo, podem ser executados milhares de vezes por dia. Nesse caso, seria prudente armazená-lo em uma lista de referência rápida ou em cache. Laje são os caches dos objetos do kernel, para otimizar as atividades que mais acontecem.

O campo Slab é o total de SReclaimable e SUnreclaim.

Tente solucionar o problema do uso da quantidade de memória Slab SUnreclaim com slabtop .

Os itens acima devem ser executados como root.

    
por 09.01.2018 / 14:05
1

Então, depois de uma solução de problemas um pouco overengineered , descobri que xflux parece estar fazendo com que a laje kmalloc-4096 cresça lentamente, mas de forma constante. Vou tentar descobrir o porquê e atualizar este anwser.

    
por 17.07.2018 / 08:42