GNU/Linux >> Tutoriels Linux >  >> Linux

Qu'est-ce que l'échange peut spécifiquement faire que la RAM ne peut pas?

Hibernation (ou suspension sur disque). L'hibernation réelle éteint complètement le système, de sorte que le contenu de la RAM est perdu et que vous devez enregistrer l'état dans un stockage persistant. AKA Swap. Contrairement à Windows avec hiberfil.sys et pagefile.sys , Linux utilise l'espace d'échange pour la mémoire surchargée et l'hibernation.

D'un autre côté, l'hibernation semble un peu capricieuse pour bien fonctionner sous Linux. Que vous "pouviez" réellement hiberner est une chose différente. ¯\_(ツ)_/¯


Que peut-on faire avec swap qui ne se ferait pas aussi en ajoutant de la RAM ?

Cette question pourrait en fait être reformulée en Que peut-on faire avec de la RAM non volatile qui ne serait pas également fait en ajoutant de la RAM plus volatile ? . Le simple fait que vous dédiez une partition à la pagination (une manière dédiée d'interagir avec la RAM volatile), cela ne change pas le fait qu'elle fait toujours partie d'un support de stockage secondaire persistant. La partition d'échange n'est pas non plus obligatoire pour mettre un système en veille prolongée, un "fichier d'échange" créé sur une partition préexistante peut également être utilisé.

En fin de compte, que vous utilisiez une partition d'échange ou un fichier d'échange, ce que vous allez stocker, ce sont des éléments à écrire sur ou depuis la RAM. Si vous deviez débrancher le cordon d'alimentation d'un système avec une partition swap activée, cette partition swap ne serait pas effacée comme par magie.

Bien que ces données d'échange ne soient pas lues lors de votre prochain démarrage (parce que le fichier d'échange aurait des entrées correspondant à des processus qui ne sont plus en cours d'exécution), et certaines distributions pourraient prendre des mesures délibérées pour les détruire lors d'un arrêt ou d'un redémarrage correct , si quelqu'un débranchait un cordon d'un système, il serait en mesure d'examiner cette partition d'échange de manière médico-légale.

En ce qui concerne le cas des périphériques embarqués que vous avez mentionnés, Flash, étant un type de stockage de RAM non volatile (NVRAM ou EEPROM), s'use parce que sa capacité à prendre des hits d'E/S (Flash Cell Endurance représentée en termes de nombre de programme /cycles d'effacement) est pâle par rapport à celui de la RAM volatile. Vous rasez littéralement une couche d'oxyde chaque fois que vous effectuez une écriture à cet endroit, et finalement il n'y a tout simplement plus d'oxyde pour permettre le stockage persistant de la charge et elle s'échappe littéralement avant sa lecture ultérieure.

D'autre part, la capacité de survie de la RAM volatile est pratiquement inexistante (de l'ordre de quelques minutes dans des conditions expérimentales idéales) par rapport au flash, si ou lorsque vous coupez sa source d'alimentation. Dans le cas de la RAM volatile, il n'y a rien pour arrêter la fuite de la charge et l'état correspondant de la bascule (entrées, sorties déterminantes, qui re-déterminent ensuite les entrées), c'est-à-dire des verrous contrôlés par rétroaction.


32 Go de RAM et pas d'échange contre 16 Go de RAM avec 16 Go d'échange.

Interrogé comme ça, le swap permet surtout d'économiser de l'argent, en augmentant les performances par rapport au dollar, peut-être aussi par watt.

Mais l'échange est toujours plus qu'une "mémoire aussi lente qu'un disque". Il s'agit d'un stockage temporaire pour les pages mémoire, qui peuvent être directement (sales comme elles le sont, sans surcharge du système de fichiers) chargées dans la RAM en cas de besoin.

Bien sûr, cela dépend beaucoup de la charge (le type de la charge), et l'idée d'échanger peut même se retourner contre vous. C'est pourquoi il y a le paramètre "swappiness", en plus de swapon / swapoff lui-même, et la discussion sur la bonne taille.

De wikipedia, j'ai reçu cette déclaration sur "swap" sous Linux (dans l'article "pagination")

Le noyau Linux prend en charge un nombre pratiquement illimité de backends d'échange (périphériques ou fichiers...

Si plusieurs backends d'échange se voient attribuer la même priorité, ils sont utilisés de manière circulaire (ce qui est quelque peu similaire aux dispositions de stockage RAID 0),...

Cela montre que vous pouvez transformer l'échange en quelque chose qui a plus de sens au niveau matériel :un "lecteur de travail" dédié donnerait à ces pages échangées une meilleure maison. Idéalement, un disque de travail devrait être (très) petit mais rapide et robuste.

Selon la "nouvelle" règle de taille (racine carrée de Giga), votre exemple doit comparer :

16 GB RAM + 0 GB Swap+1000 GB Disk

16 GB RAM + 4 GB Swap+ 996 GB Disk

Parce que ce qui n'a vraiment aucun sens, c'est :

16 GB RAM+0 GB Swap + 1000 GB Disk

12 GB RAM+4 GB Swap + 1000 GB Disk

Ce serait une partition d'échange sur un tmpfs ("disque virtuel") - peut-être même pas trop nocif, mais je ne vois aucun avantage ici. Vous ne pouvez même pas hiberner.

(voir ci-dessous pour zram et zswap, cependant, lorsque vous ajoutez la compression à cela)

Pour comprendre le swap, vous devez considérer l'ensemble du système et la charge moyenne. Et parce que vm/mm (gestion de la mémoire virtuelle) est un système complexe, il est vraiment difficile de nommer un avantage clair. J'aime l'idée d'une transition "en douceur" vers un système surchargé.

J'ai 8 Go de RAM et pas de swap. Mais je défends quand même le concept, AFA je peux comprendre :-)

J'ai trouvé cette citation redhat dans l'un des liens OP. Le scénario est une demande de mémoire toujours croissante, sur 2 Go de RAM + 2 Go de Swap, si je me souviens bien :

... Dans notre cas [qui vient d'être illustré], un grand nombre d'échanges est disponible, donc le temps de mauvaise performance est long.

Mais l'alternative est OOM Même plus tôt!

Le "temps de mauvaise performance" est long, oui, mais les performances ne se dégradent que proportionnellement à la charge. Je ne connais pas le contexte, peut-être qu'ils veulent juste mettre en garde contre un trop grand partition d'échange. Ça sonne anti-swap, mais au second regard ne l'est pas.

Là encore, pour la même raison, je n'ai pas d'échange. Je veux savoir quand moi et mes applications atteindrons le plafond, puis je déciderai si je dois réduire la charge, acheter plus de RAM ou activer une partition pour l'échange (j'ai une ou deux petites partitions prêtes pour cela).

J'ai recherché ce zram , puis zswap chose :très intéressant... :

En comparaison, zswap agit comme un cache basé sur la RAM pour les périphériques d'échange. Cela fournit à zswap un mécanisme d'éviction pour les pages échangées moins utilisées, ce qui manque à zram.

Par contre, zram fonctionne sans aucun dispositif d'échange. Cela rend possible ce que j'ai dit n'a aucun sens, mais je n'ai pas pris en compte la compression.

Ce que je veux dire, c'est cette expulsion mécanisme inhérent au "swap". Cela peut être très utile sous forte charge, que vous échangez en échangeant ou en comprimant.


Linux
  1. Quelle est la bonne quantité d'espace de swap pour un système Linux moderne ?

  2. Qu'est-ce que DROWN :une vulnérabilité qui peut mettre en péril votre trafic crypté

  3. Échangez la taille de la partition pour 4 Go de RAM

  4. Puis-je tester mon propre réseau ?

  5. E/S de disque Linux OOM. Aussi :swap, à quoi ça sert ?

Quel est le nombre maximal d'adresses IP pouvant être attribuées à un ordinateur donné ?

Que faire lorsque Ctrl + C ne peut pas tuer un processus ?

Comment savoir ce qui fait tourner mon disque ?

Puis-je exécuter un serveur Oracle sans swap ?

Quelle commande peut être utilisée pour forcer la libération de tout dans la partition d'échange en mémoire ?

Qu'est-ce qui peut empêcher Linux de répondre pendant des minutes lors de la navigation sur certains sites Web ?