web-dev-qa-db-fra.com

La commande 'free' affiche moins de RAM disponible que buff / cache!

J'ai un ordinateur portable sous Ubuntu 16.04 avec 4 Go de RAM. Je l'utilise depuis environ un mois et récemment, j'ai remarqué que le système ralentissait beaucoup, même lorsque seulement 3 ou 4 applications étaient en cours d'exécution. Ceci est la sortie de free -m avec un terminal et gedit ouverts.

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

Vous pouvez voir que la mémoire disponible est inférieure à la mémoire en cache. La mémoire en cache ne devrait-elle pas être incluse dans la mémoire disponible? Le problème est que, lorsque j'ouvre une autre application, la taille de la mémoire en cache augmente au lieu de laisser de la place à la nouvelle application! Voici la sortie de 'free -m' après l'ouverture de Firefox, de la visionneuse de documents et de 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'aide pas beaucoup.

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

Il s'avère que je ne peux même pas ouvrir 5 applications sur Ubuntu simultanément. On dirait que la mémoire de 2265 Mo vient de fuir. C'est plus de la moitié de mon bélier physique! Que puis-je faire à ce sujet?

4
saga

Si vous voulez calculer votre mémoire libre, essayez ceci

(il sera imprimé en Mo)

faire un script bash ajouter ces

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

alors fais juste ça

echo "$mem1 / $mem3 / $mem2"

source: mon propre code :)

https://github.com/ppigmans/Tool-box

1
patrick