C'est une question canonique sur la façon dont les systèmes d'exploitation Unix signalent l'utilisation de la mémoire.
Questions similaires:
J'ai un serveur de production qui exécute Debian 6.0.6 Squeeze
#uname -a
Linux debsrv 2.6.32-5-xen-amd64 #1 SMP Sun Sep 23 13:49:30 UTC 2012 x86_64 GNU/Linux
Chaque jour, cron exécute le script de sauvegarde en tant que root:
#crontab -e
0 5 * * * /root/sites_backup.sh > /dev/null 2>&1
#nano /root/sites_backup.sh
#!/bin/bash
str=`date +%Y-%m-%d-%H-%M-%S`
tar pzcf /home/backups/sites/mysite-$str.tar.gz /var/sites/mysite/public_html/www
mysqldump -u mysite -pmypass mysite | gzip -9 > /home/backups/sites/mysite-$str.sql.gz
cd /home/backups/sites/
sha512sum mysite-$str* > /home/backups/sites/mysite-$str.tar.gz.DIGESTS
cd ~
Tout fonctionne parfaitement, mais je remarque que le graphique de la mémoire de Munin montre une augmentation de la mémoire cache et des mémoires tampons après la sauvegarde.
Ensuite, je télécharge des fichiers de sauvegarde et les supprime. Après la suppression, le graphique de la mémoire de Munin ramène le cache et les tampons à l'état antérieur à la sauvegarde.
Voici le graphique de Munin:
L'image hébergée à l'extérieur était un lien mort.
la source
Réponses:
C’est le même "problème" puisque de la part du serveur refuse d’utiliser la partition de swap et quelques questions similaires sur ce site. ( Utilisation élevée de la mémoire sur un serveur Linux , utilisation de la mémoire dans LINUX , serveur Web à faible mémoire , etc.)
Faites attention au fait que la consommation de mémoire provient du cache . Cela signifie qu'il garde un fichier en mémoire. La mémoire cache est une mémoire "libre". Au lieu de laisser le bloc de mémoire vide, votre système d’exploitation conserve les fichiers récemment lus dans cet espace. Si une application a besoin de cette mémoire, celle-ci l'utilisera. Jusque-là, vous aurez une chance de ne pas avoir à lire un fichier à partir du disque s'il est fréquemment référencé.
Selon ce graphique, votre consommation de mémoire effective n'a pas changé du tout pendant toute la durée du graphique.
la source
sync; echo 3 > /proc/sys/vm/drop_caches
après la sauvegarde?Vous rencontrez le problème Linux Ate My Ram .
Ne paniquez pas.
Ce n'est pas un problème.
Votre système fonctionne comme prévu.
Le problème ne vient pas de votre système d'exploitation, mais de votre compréhension de ce qu'est la mémoire "libre".
Les systèmes Unix utilisent davantage de mémoire que la simple exécution de programmes. La mémoire peut être utilisée pour:
Ce qui suit est un bref aperçu (et en grande partie incomplet) de la façon dont les systèmes Unix modernes signalent l’utilisation de la RAM.
Qu'est-ce que la mémoire libre (la définition du système d'exploitation) ?
Quand un système Unix rapporte la RAM en tant que Free, cela signifie "Je n'utilise cette RAM pour rien".
La RAM libre ne sert à rien, elle ne rend pas votre système plus rapide, elle reste simplement "libre" au cas où quelque chose en aurait besoin. Ce quelque chose pourrait être l'un des trois autres articles que j'ai mentionnés ci-dessus.
Que sont la mémoire cache et la mémoire tampon?
La mémoire cache et la mémoire tampon sont des ressources RAM utilisées par le système d'exploitation pour rendre votre système plus rapide.
Cette mémoire n'est pas nécessaire pour exécuter des programmes pour le moment . Votre système d'exploitation l'utilise donc pour stocker les données dont il a fréquemment besoin. Par exemple, la bibliothèque C (nécessaire à peu près à tous les programmes exécutés) est presque toujours conservée en
cache
mémoire. Le système n'a pas besoin d'aller sur le disque pour trouver les instructions nécessaires pour imprimer "Hello World" à l'écran.C'est en réalité beaucoup plus compliqué que cela - mémoire partagée, mémoire câblée , etc. - mais pour notre propos, cette explication simple convient.
Qu'est-ce que la mémoire active?
La mémoire active fait partie de la mémoire «utilisée» - la mémoire RAM que les applications utilisent, peu importe leur travail - tri des feuilles de calcul, édition de pages Web, édition de graphiques, etc.
La mémoire "active" a été "active" récemment - - le programme affirmant qu'il a utilisé son contenu (en lecture ou en écriture) et qu'il n'est pas considéré comme un bon candidat pour l'échange.
Qu'est-ce que la mémoire inactive?
Comme la mémoire active, la mémoire inactive est la RAM utilisée par les applications, quelle que soit leur activité. La différence, c’est que cette mémoire n’a pas été utilisée depuis un moment. Si le système le permet, le système d’exploitation pense qu’il peut être échangé sur un disque et (avec un peu de chance) le programme affirmant qu’il ne le demanderait plus. ne remarquerez jamais.
Qu'est-ce que la mémoire "utilisée" (définition HUMAN)?
Ce que vous et moi considérons comme mémoire "usagée" est essentiellement la somme des mémoires active et inactive. Toute la RAM actuellement réclamée par les applications pour leur utilisation.
Tant que vous avez plus de RAM installée que la somme de mémoire active et inactive (plus une marge de sécurité appréciable de 512-1024 Mo au-dessus), vous êtes dans un lieu sûr: votre système d'exploitation ne réussira probablement pas. .
Qu'est-ce que la mémoire "libre" (la définition humaine) ?
Ce que vous et moi considérons comme de la mémoire "libre" est la mémoire disponible pour exécuter des programmes.
C’est légèrement plus compliqué que la simple mention "gratuite" de vos rapports de système d’exploitation. Lorsqu'un programme demande de la mémoire RAM, le système d'exploitation essaie de l'obtenir de la manière la moins perturbante possible:
(C’est à peu près là où les performances vont le plus souvent aux chiens: chaque fois qu’un programme obtient son exécution sur le CPU, ses bits permutés doivent être ramenés dans la RAM, ce qui signifie que la mémoire active d’un autre programme doit être remplacée - la le chiffre d'affaires élevé dans l'échange s'appelle raclée )
malloc()
va échouer. Il s’agit du comportement conforme à POSIX: le système d’exploitation indique au programme qui demande la mémoire vive qu’il ne peut pas satisfaire la demande.Le programme peut soit demander moins de RAM, soit s’il ne peut pas se contenter d’une plus petite quantité de mémoire, il peut le nettoyer et le quitter. (Si le programme est mal écrit, il va tout simplement planter.)
Au cas où vous ne pouvez pas comprendre par ma description ici et ma réponse à la question liée, je pense que c'est une façon terrible de traiter le problème.
Pourquoi Free RAM augmente-t-il lorsque vous supprimez des fichiers?
Dans l'exemple de la question ci-dessous, vous avez remarqué qu'il est possible de "libérer" de la RAM en supprimant le fichier de sauvegarde. L'explication est assez simple: vu que rien n'utilise ce fichier (aucun descripteur de fichier ouvert) et qu'il n'est plus accessible depuis. le système de fichiers (non lié), le système d'exploitation sait que personne ne pourra plus accéder à ces données, et il purge les données du cache du système de fichiers.
Le système d'exploitation signale ainsi plus de mémoire disponible, mais n'a aucune incidence sur les performances du système.
la source
top
RAM libre / câblée / active / inactive.Autre chose à vérifier si l’échec ci-dessus échoue:
De: https://stackoverflow.com/a/5467207
la source