comando 'libero' mostra ram disponibile meno di buff / cache!

4

Ho un portatile con Ubuntu 16.04 con RAM da 4 GB. L'ho usato per circa un mese e recentemente ho notato che il sistema rallenta molto anche con solo 3-4 app in esecuzione. Questo è l'output di free -m con un terminale e gedit aperto.

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

È possibile vedere che la memoria disponibile è inferiore alla memoria cache. La memoria cache non dovrebbe essere inclusa nella memoria disponibile? Il problema è che quando apro un'altra applicazione, la dimensione della memoria cache aumenta invece di dare spazio alla nuova app! Ecco l'output di 'free -m' dopo aver aperto firefox, document viewer e 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' non aiuta molto.

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

Risulta che non riesco nemmeno ad aprire 5 applicazioni su Ubuntu contemporaneamente. Sembra che la memoria 2265mb sia appena uscita. È più della metà della mia ram fisica! Cosa posso fare a riguardo?

    
posta saga 15.08.2016 - 10:18

1 risposta

1

Se vuoi calcolare la tua memoria gratuita prova questo

(lo stamperà in MB)

crea uno script in bash aggiungi questi

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}")

quindi fai questo

echo "$mem1 / $mem3 / $mem2"

source: my own code:)

link

    
risposta data patrick 15.08.2016 - 10:26

Leggi altre domande sui tag