Alto uso de memória que não pode ser atribuído a um serviço ou aplicativo

Alto uso de memória que não pode ser atribuído a um serviço ou aplicativo

No Ubuntu 22.04 estou enfrentando um problema estranho de memória. Não consigo descobrir por que meu uso de memória é tão alto. Quando inicializo meu laptop, o uso de memória é o esperado, mas com o tempo algumas coisas parecem consumir minha memória, mas o sistema parece não saber para que é usado.

Depois que o laptop estiver funcionando por alguns dias e dormindo durante a noite, free -mrelata o seguinte:

               total        used        free      shared  buff/cache   available
Mem:           14812        7329        2683        1810        4799        5348
Swap:           2047         416        1631

Todas as inscrições foram encerradas e de acordo comesta ferramentaa memória acumulada usada por todos os aplicativos é de 1,7 GiB. Então, o que está usando os últimos ~ 5,5 GiB (7,2-1,7)?

Estou esquecendo de algo?

insira a descrição da imagem aqui

Responder1

Esta resposta foi escrita na tentativa de solucionar possíveis causas de uso de memória "não contabilizado", que pode ir além do que o OP está enfrentando.

Fundo

No Linux, o uso de memória pode ser atribuído em grande parte a dois elementos:

  • Uso por processos/threads
  • Uso por um sistema de arquivos

No caso desta questão, o OP não pode contabilizar toda a memória usada por processos/threads. Portanto, é muito provável que a memória restante seja usada pelo kernel para operações do sistema de arquivos.

Causas prováveis

Atualmente estou ciente de três razões principais para o uso excessivo de memória do sistema de arquivos:

  1. Cache ZFS ARC (ou cache de sistema de arquivos semelhante, que é registrado como uso de memória "normal")
  2. Ramdisks ( tmpfse sistemas de arquivos semelhantes)
  3. Compressão nativa do sistema de arquivos, combinada com E/S excessiva de disco (para que a compactação/recompactação ocorra com consumo constante de memória como resultado)

Para solucionar esses três cenários, eu recomendaria o seguinte:

1. Cache ZFS ARC

Execute este comando para obter informações detalhadas sobre o cache ARC do ZFS:

arcstat -a 

A estatística relatada por sizeaparecerá como memória usada normalmente.

Pela sua postagem, é óbvio que 0,5 GB são usados ​​​​aqui.

2. Ramdiscos

Execute este comando para obter informações sobre quaisquer tmpfsramdisks atuais do sistema de arquivos:

df -hl -t"tmpfs"

Qualquer quantidade informada por usedaparecerá como memória usada normalmente.

O Ubuntu (e muitas outras variantes do Linux) tem um ramdisk padrão em /dev/shm. Os aplicativos podem usar este espaço e, portanto, você pode verificar facilmente:

ls -ahl /dev/shm

Além disso, tmpfso uso também é mostrado sharedna freesaída, portanto, pela sua postagem, é óbvio que 1,8 GB é usado aqui.

3. Compressão FS

Verifique o disco IO com este comando: ( iostatfaz parte do sysstatpacote)

iostat

Combine isso com o conhecimento sobre a compactação do sistema de arquivos habilitada para os discos relevantes. Para ZFS, execute este comando para obter propriedades de compactação para todos os Zpools e conjuntos de dados:

zfs get compression

Se você tiver alta E/S de disco, combinada com a compactação nativa habilitada, isso poderá resultar em memória excessiva relatada como memória usada normalmente.

Responder2

Você está usando compactação em seu sistema de arquivos ou um sistema de arquivos copy-on-write como BTRFS ou ZFS?

É possível que o uso excessivo de memória seja devido ao kernel tentar (re)compactar arquivos em tempo real ou copiar/versionar cada gravação quando arquivos grandes são alterados com frequência.

A pressão da memória torna-se especialmente perceptível se você tiver arquivos grandes, como imagens para máquinas virtuais, onde os arquivos mudam com frequência e são dimensionados em gigabytes em vez de megabytes.

Você pode desabilitar a compactação em um nível de sistema de arquivos/subvolume/volume ou em nível de arquivo individual e/ou desabilitar COW (cópia na gravação)

BTRFS:
É compatível com a remoção da compactação de arquivos específicos com o comando btrfs:

 property set <file> compression none

para remover COW (cópia na gravação) de uma pasta específica:

chattr -R +C /directory/of/your/vm_images/

ZFS:
Não acredito que você possa remover a compactação de arquivos individuais. Desabilitar a compactação em um volume afetará apenas gravações futuras, portanto, você precisará copiar cada arquivo individualmente para que a compactação seja desativada.

zfs set compression=off name_of_zfs_vol

informação relacionada