Je pensais que l’essence même du swap était d’agir en tant que filet de sécurité du stockage temporaire lorsque la mémoire RAM était saturée, mais ma partition d’échange est utilisée en permanence, même si j’ai parfois jusqu’à 3 Go de RAM libre. Est-ce normal?
kernel
swap
memory-usage
Mysterio
la source
la source
free -m
,top -b 1
Réponses:
Vous pouvez essayer de changer votre valeur "swappiness":
De la FAQ sur l'échange sur Ubuntu :
Aussi, vous pouvez vérifier: https://askubuntu.com/a/103916/54187
la source
sudo sysctl --load=/etc/sysctl.conf
après modification du fichier pour appliquer les modificationsVotre question comporte différents aspects.
Premièrement, quelle est votre définition du terme "gratuit"? En réalité, ce n’est pas aussi simple que cela puisse paraître sous Linux (ou tout système d’exploitation moderne).
Comment Linux utilise la RAM (très simplifié)
Chaque application peut utiliser une partie de votre mémoire. Linux utilise toute la mémoire autrement inoccupée (à l'exception des derniers Mo) en tant que "cache". Cela inclut le cache de page, les caches d’inodes, etc. C’est une bonne chose: cela permet d’accélérer les choses. L'écriture sur le disque et la lecture à partir du disque peuvent être accélérées énormément par le cache.
Idéalement, vous avez suffisamment de mémoire pour toutes vos applications et il vous reste encore plusieurs centaines de Mo à mettre en cache. Dans cette situation, tant que vos applications n'augmentent pas l'utilisation de la mémoire et que le système ne cherche pas à obtenir suffisamment d'espace pour le cache, aucun échange n'est nécessaire.
Une fois que les applications réclament plus de RAM, elles accèdent simplement à une partie de l'espace utilisé par le cache, ce qui réduit le cache. Désaffecter le cache est assez simple et peu coûteux pour que ce soit tout simplement fait en temps réel: tout ce qui se trouve dans le cache est soit une seconde copie de quelque chose qui est déjà sur le disque, alors vous pouvez simplement le désallouer instantanément, ou c'est quelque chose que nous aimerions. ont dû vider le disque dans quelques secondes de toute façon .
Ce n'est pas une situation spécifique à Linux - tous les systèmes d'exploitation modernes fonctionnent de cette façon. Les différents systèmes d'exploitation peuvent simplement signaler la RAM libre différemment: certains incluent le cache dans ce qu'ils considèrent comme "libre" et d'autres pas.
Lorsque vous parlez de RAM libre, il est beaucoup plus utile d’ inclure le cache, car il est pratiquement gratuit: il est disponible si une application le demande. Sous Linux, la
free
commande l'indique dans les deux sens: la première ligne inclut le cache dans la colonne RAM utilisée, et la deuxième ligne comprend le cache (et les tampons) dans la colonne libre.Comment Linux utilise le swap (encore plus simplifié)
Une fois que vous avez utilisé suffisamment de mémoire pour qu'il ne reste plus assez de cache pour un cache en bon fonctionnement, Linux peut décider de réaffecter une partie de la mémoire d'application non utilisée de la RAM à permuter.
Cela ne correspond pas à une coupure définitive. Ce n'est pas comme si vous atteigniez un certain pourcentage d'allocation, alors Linux commence à permuter. Il a un algorithme plutôt "flou". Il prend en compte de nombreux éléments, qui peuvent être décrits de la manière suivante: "quelle pression existe-t-il pour l'allocation de mémoire". S'il y a beaucoup de "pression" pour allouer une nouvelle mémoire, cela augmentera les chances que certaines personnes soient permutées pour gagner de la place. S'il y a moins de "pression", cela réduira ces chances.
Votre système possède un paramètre "swappiness" qui vous aide à modifier le calcul de cette "pression". Il est généralement déconseillé de modifier cela, et je ne vous recommanderais pas de le modifier. Dans l’ensemble, la permutation est une très bonne chose - bien qu’il existe quelques cas extrêmes qui nuisent aux performances, si vous examinez les performances globales du système, c’est un avantage net pour un large éventail de tâches. Si vous réduisez le swappiness, vous laissez la quantité de mémoire cache diminuer un peu plus que ce ne serait le cas autrement, même si cela peut vraiment être utile. Il vous appartient de décider si cela vous convient, quel que soit le problème que vous rencontrez avec la permutation. Vous devriez juste savoir ce que vous faites, c'est tout.
Il existe une situation bien connue dans laquelle le swap nuit réellement aux performances perçues sur un ordinateur de bureau. Il s’agit de la rapidité avec laquelle les applications peuvent à nouveau réagir à la saisie de l’utilisateur après une longue période d'inactivité et des processus d'arrière-plan lourds en IO (comme une sauvegarde du jour au lendemain). Il s’agit d’une lenteur très visible, mais insuffisante pour justifier la désactivation de l’échange de swap et très difficile à éviter sous n’importe quel système d’exploitation. Désactivez l'échange et cette lenteur initiale après l'analyse de sauvegarde / virus ne se produira peut-être pas, mais le système risque de fonctionner un peu plus lentement toute la journée. Ce n’est pas non plus une situation limitée à Linux.
Lors du choix de ce qui doit être échangé sur le disque, le système essaie de choisir la mémoire qui n'est pas réellement utilisée - lue ou écrite. Il a un algorithme assez simple pour calculer cela qui choisit bien la plupart du temps.
Si vous avez un système où vous avez une énorme quantité de RAM (au moment de l'écriture, 8 Go est une quantité énorme pour une distribution Linux typique), vous aurez très rarement recours à une situation dans laquelle un échange est absolument nécessaire. Vous pouvez même essayer de désactiver le swap. Je ne recommande jamais de le faire, mais uniquement parce que vous ne savez jamais quand davantage de mémoire RAM pourrait vous éviter un blocage d'application. Mais si vous savez que vous n'en aurez pas besoin, vous pouvez le faire.
Mais comment l'échange peut-il accélérer mon système? L'échange ne ralentit-il pas les choses?
Le transfert de données de la RAM vers l’échange est une opération lente, mais elle n’est prise que lorsque le noyau est pratiquement certain que les avantages globaux l’emporteront. Par exemple, si la mémoire de votre application a atteint un niveau tel qu'il ne vous reste presque plus de cache et que vos E / S sont très inefficaces, vous pouvez obtenir beaucoup plus de vitesse de votre système en libérant de la mémoire, même après la dépense initiale de permutation des données afin de les libérer.
C'est également un dernier recours si vos applications demandent réellement plus de mémoire que vous n'en avez réellement. Dans ce cas, la permutation est nécessaire pour éviter une insuffisance de mémoire, ce qui entraînerait souvent le blocage d'une application ou son exécution forcée.
L’échange n’est associé qu’à des moments où votre système ne fonctionne pas bien, car il se produit parfois lorsque vous manquez de RAM utilisable, ce qui ralentirait votre système (ou le rendrait instable) même si vous n’aviez pas d’échange. Donc, pour simplifier les choses, l’échange se produit parce que votre système est en train de s’embourber, et non l’inverse.
Une fois les données échangées, quand les données sont-elles à nouveau publiées?
Transférer des données en mode swap est (du moins pour les disques durs traditionnels) aussi fastidieux que de les stocker. Il va donc de soi que votre noyau sera tout aussi réticent à supprimer des données de l’échange, en particulier si elles ne sont pas réellement utilisées (c’est-à-dire qu'elles sont lues ou écrites). Si vous avez des données en swap et qu'elles ne sont pas utilisées, c'est une bonne chose qu'elles restent en swap, car elles laissent plus de mémoire pour d'autres éléments utilisés, ce qui peut potentiellement accélérer votre système.
la source
free -m
.Définir la valeur de swappiness ne fonctionne pas dans toutes les situations. Si cela fonctionne pour vous, tant mieux. Si ce n'est pas le cas, j'ai écrit un script pour effacer périodiquement l'échange en le désactivant puis le rallumant.
Basculer swap est un peu risqué si vous ne faites pas attention. Si vous ne disposez pas de suffisamment de RAM libre pour tout stocker dans la RAM et dans le swap, essayer de le désactiver rendra votre système inactif. Mon script vérifie d'abord s'il y a assez de RAM disponible (ce qui prend un peu de travail, car la quantité réelle de RAM libre est différente de celle qui est
free
signalée comme étant libre), puis ne bascule que le swap si c'est le cas. Toutefois, si vous êtes un peu à court de RAM, ne démarrez pas un autre processus important pendant l'exécution du script. C'est ici:Vous devez exécuter ce script en tant que root (avec, par exemple
sudo
). Ce script ne laissera pas votre système inactif; Si vous ne disposez pas de suffisamment de RAM, il refusera le basculement. J'ai utilisé ce script sans problèmes pendant près de cinq ans maintenant.la source
En général, l’échange reste inutilisé sur les systèmes actuels. D'après mon expérience, les processus qui s'exécutent depuis longtemps sans opérations intensives sont décalés pour être échangés par Linux.
Cela ralentit quelques programmes affectés.
Si vous avez beaucoup de mémoire libre, vous pouvez désactiver le swap en exécutant la commande:
swapoff -av
(vous aurez besoin desudo
droits pour cela).Si vous n'aimez pas le swap, vous pouvez l'activer en utilisant la commande symétrique:
swapon -av
( à nouveausudo
requis).la source
Une fois que l'échange a été utilisé pour un programme, il a tendance à rester mappé pendant toute la durée de vie du programme. De nombreux programmes ont un code (et des données) qui est rarement utilisé. Une fois que la mémoire est remplacée, il est peu probable qu’elle le soit.
Une façon de forcer ces pages en mémoire consiste à éteindre le périphérique d'échange. Si vous en avez deux, vous pouvez en désactiver un, le réactiver, puis éteindre le second. Si un échange est vraiment nécessaire, il se déplacera d'un périphérique à l'autre. Vous pouvez simplement désactiver le périphérique (ou le fichier) swap, mais si vous avez vraiment besoin d'espace swap, des conséquences dramatiques peuvent survenir.
En plus des choses normales en mémoire, tempfs utilise l’espace d’échange et s’échange comme le reste de la mémoire. Si vous exécutez quelque chose qui nécessite beaucoup de disque temporaire, cela peut forcer le remplacement des pages. Une fois créés, les fichiers temporaires ne peuvent plus être utilisés après quelques minutes et sont de bons candidats pour être déplacés vers le périphérique de swap.
Dans un pincement, vous pouvez utiliser un fichier comme périphérique de swap. Ceci est utile si vous avez besoin temporairement d'un espace d'échange supplémentaire.
la source
J'ai modifié le script de Scott Severance pour qu'il corresponde aux versions les plus récentes de free, qui incluent déjà un champ de mémoire totale disponible.
la source