Comment nettoyer ou désactiver le cache mémoire?

49

Après le démarrage du système, mon cache mémoire se remplit en quelques minutes et il commence à utiliser le swap. Voici une capture d'écran de / proc / meminfo.

Mémoire

Cependant, si je peux désactiver ce processus / nettoyer le cache une fois par la suite, je pense que mon système accélérera dans une certaine mesure. Corrigez-moi si je me trompe ici.

J'ai également essayé le nettoyage de mémoire Bleachbit, mais cela ne semble pas nettoyer le cache de mémoire correctement. En outre, la fonctionnalité est encore à un stade expérimental.

mémoire de bleachbit

Il y avait déjà une question similaire postée ici: comment puis-je désactiver le cache de prélecture? , mais il s’agissait du serveur Ubuntu, et les réponses impliquaient des réglages manuels, etc.

Donc, je veux savoir s'il existe un logiciel pour désactiver / activer le cache mémoire pour Ubuntu 12.04.

Bharadwaj Srigiriraju
la source
Êtes-vous sûr que cela résoudra votre problème? La mémoire ne se remplit pas sans raison. J'ai également eu le problème que ma mémoire se remplissait et je l'ai retrouvé tracker-miner. Après avoir désinstallé tous les packages de suivi, mon problème a disparu. J'ai aussi 4 Go de mémoire, et 2 Go sont utilisés par les chaches, mais je ne rencontre pas de problèmes.
daniel kullmann
1
@danielkullmann: Il fait référence à la mémoire en cache, pas à la mémoire utilisée par les applications ...
ish
@izx Oui, je sais. Il se pourrait simplement qu'il cherche la solution du mauvais problème. Le noyau est assez intelligent pour ne pas remplir la mémoire avec des caches quand les programmes en ont besoin. C'est pourquoi je pense que ses problèmes de mémoire proviennent d'un programme qui utilise trop de mémoire.
daniel kullmann
@danielkullmann: Je suis curieux de savoir comment vous en êtes arrivé à un processus qui engloutit toute cette mémoire ... Existe-t-il un outil / une commande pour cela?
Bharadwaj Srigiriraju Le
Je viens d'utiliser la commande htop et de trier par utilisation de la mémoire.
daniel kullmann

Réponses:

58

Note: Linux ne "mange" pas votre RAM! S'il vous plaît jeter un oeil à l' excellente réponse de Geirha ci-dessous pour comprendre pourquoi ...

Après la remarque ci-dessus, si vous pensez toujours que "nettoyer" la mémoire cache peut vous aider, vous pouvez certainement essayer: il s’agit d’un one-liner à partir du terminal:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

Il n’existe pas de moyen facile de désactiver le cache, mais vous pouvez obtenir le même effet en le nettoyant toutes les minutes , si vous le souhaitez:

  • Faites-en un boulot
  • Appuyez sur Alt-F2, tapez gksudo gedit /etc/crontabet ajoutez cette ligne près du bas:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • Cela nettoie toutes les 15 minutes. Vous pouvez définir 1 ou 5 minutes si vous voulez vraiment en changeant le premier paramètre en *ou à la */5place de*/15

Une doublure pour connaître la RAM libre réelle, excepté le cache

La réponse de Geirha explique les détails, mais en bref, vous obtenez le nombre de mégaoctets gratuits avec:

free -m | sed -n -e '3p' | grep -Po "\d+$"

qui sur mon serveur de ligne de commande de 2 Go retourne une santé extrêmement 1835.

ish
la source
3
Ergh! Supprimer la mémoire cache est déjà une mauvaise chose, mais vous avez besoin d'un travail cronjob? Je veux dire, cela "résout" la question, pour ainsi dire, mais cela ne la rend pas moins douloureuse.
Reid
@izx: hmm ... c'est comme ça qu'on crée un cronjob. Si je supprime périodiquement le cache, cela ne signifie-t-il pas que je ralentis réellement le système? Si tel était le cas, je pense que votre réponse ressemble plus à une réponse théorique qu'à la réponse de geirha. : p Bonne réponse BTW ...
Bharadwaj Srigiriraju
1
@ForbiddenOverseer: Je n'ai ajouté cela que parce que vous vouliez "désactiver" le cache, et le déposer périodiquement est le seul moyen d'y parvenir. Ma note en haut (et le lien de geirha) indique clairement que le cache accélère réellement votre système la plupart du temps, même s'il ressemble à sa "consommation de RAM" --- alors oui, IMO vous ralentiriez votre système , mais vous vouliez essayer, donc je viens de répondre à votre question au lieu de simplement vous harceler et vous dire que c'est une mauvaise idée et vous ne devriez pas le faire , je viens de vous donner le pouvoir d'expérimenter ...: D
ish
1
J'utilise Ubuntu Server 12.04 LTS en tant que VDS. J'essaie l'approche fournie dans cette réponse, mais j'obtiens constamment tee: /proc/sys/vm/drop_caches: Permission denied. Des conseils?
Eimantas
44

Aidez-moi! Linux a mangé ma RAM!

www.linuxatemyram.com explique cela merveilleusement sous forme de FAQ, l'essentiel étant:

Que se passe-t-il?

Linux emprunte de la mémoire inutilisée pour la mise en cache du disque. Cela donne l'impression que vous avez peu de mémoire, mais vous ne l'êtes pas! Tout va bien!

Pourquoi ça fait ça?

La mise en cache de disque rend le système beaucoup plus rapide! Il n'y a pas d'inconvénients, sauf pour les débutants déroutants. Cela n'enlève rien à la mémoire des applications!

Et si je veux exécuter plus d'applications?

Si vos applications souhaitent disposer de plus de mémoire, elles reprennent simplement un morceau emprunté par le cache disque. Le cache disque peut toujours être restitué aux applications immédiatement! Vous n'êtes pas à court de bélier!

Comment puis-je voir combien de bélier gratuit j'ai vraiment?

Pour voir combien de RAM vos applications pourraient utiliser sans permutation, lancez free -m et regardez la colonne "disponible":

$ gratuit -m
              Total utilisé libre buff / cache partagé disponible
Mem: 1504 1491 13 0 855       792
Échange: 2047 6 2041
Ceci est votre réponse en mebibytes.


Source: comme mentionné, l'excellent www.linuxatemyram.com - veuillez visiter pour plus d'informations.

geirha
la source
1
@geirha: Merci pour le lien ... C'était très instructif et j'ai bien aimé les expériences données à la fin !!
Bharadwaj Srigiriraju
@izx: tbh, j'ai du mal à décider de la réponse acceptée. Sans oublier que ce lien était en fait informatif de toutes les manières possibles
;;
@ForbiddenOverseer: voir mon commentaire dans ma réponse pour une réponse détaillée - je vous ai expliqué brièvement pourquoi vous ne devriez pas le faire, mais j'ai quand même répondu à votre question, vous donnant le pouvoir d'expérimenter et de l'essayer vous-même. Si vous pensez que nettoyer / supprimer la mémoire cache aide, ne le faites plus jamais.
jeudi
@izx, j'ai trouvé un peu difficile de le faire pour ce cas. Cependant, vous avez écrit un texte utile sur le sujet, alors vous pourriez peut-être simplement ajouter l'URL à votre réponse et nous supprimerons ma réponse?
geirha
Pas besoin, votre lien dans une excellente ressource; Je viens d’incorporer quelques éléments dans la réponse (avec l’attribution) de sorte que c’est maintenant une alternative parfaitement valable (c’est la meilleure réponse vue par le public!). Excellent travail, mieux voté - bienvenue à 5k!
Ish
4

Pour vérifier votre utilisation actuelle de la mémoire

 watch -n 1 free -m

ou

 watch -n 1 cat /proc/meminfo

Libérer de l'espace

 sudo sysctl -w vm.drop_caches=3

REMARQUE: cette action ne rendra pas votre système plus rapide ni n'affectera sa stabilité et ses performances. Elle nettoiera simplement la mémoire utilisée par le noyau Linux dans les caches.

ou

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

REMARQUE: Vous pouvez utiliser des tâches cron pour planifier l'exécution des commandes ci-dessus à des intervalles de temps spécifiques.

SilleBille
la source