'free' comando mostra ram disponível menor que buff / cache!

4

Eu tenho um laptop rodando o Ubuntu 16.04 com 4 GB de RAM. Eu tenho usado por cerca de um mês agora e, recentemente, notei que o sistema desacelera muito, mesmo com apenas 3-4 aplicativos em execução. Esta é a saída de free -m com um terminal e o gedit aberto.

       total        used        free      shared      buff/cache   available
Mem:    3872         797         842        1971            2232         848
Swap:   4015         141        3874

Você pode ver que a memória disponível é menor que a memória armazenada em cache. A memória cache não deve ser incluída na memória disponível? O problema é que, quando eu abro algum outro aplicativo, o tamanho da memória em cache aumenta em vez de dar espaço para o novo aplicativo! Aqui está a saída de 'free -m' depois de abrir o firefox, o visualizador de documentos e o vscode.

              total        used        free      shared  buff/cache   available
Mem:           3872        1391         145        1923        2335         299
Swap:          4015         250        3765

sudo sync; echo 3>'/proc/sys/vm/drop_cache' não ajuda muito.

              total        used        free      shared  buff/cache   available
Mem:           3872        1368         239        1923        2265         324
Swap:          4015         256        3759

Acontece que não consigo nem abrir 5 aplicativos no Ubuntu simultaneamente. Parece que a memória de 2265MB acabou de vazar. É mais da metade do meu carneiro físico! O que posso fazer sobre isso?

    
por saga 15.08.2016 / 10:18

1 resposta

1

Se você quiser calcular sua memória livre, tente isto

(imprimirá em MB)

faça um script no bash adicione estes

mem1=$( free | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print  }' | awk '{ total =  / 1024 ; print total }' | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print }' )
mem2c=$( free | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print }' | awk '{ total =  / 1024 ; print total }' | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print }' )
mem3=$( free | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print }' | awk '{ total =  / 1024 ; print total }' | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print }' )
mem2f=$( free | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print }' | awk '{ total =  / 1024 ; print total }' | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print }')
mem2=$(awk "BEGIN {print $mem2c+$mem2f; exit}")

faça isso

echo "$mem1 / $mem3 / $mem2"

fonte: meu próprio código:)

link

    
por patrick 15.08.2016 / 10:26

Tags