Linux: ne créez pas de partition de swap?


9

Je me demandais depuis que j'ai entendu dire que le swap est utilisé lorsque vous êtes absent ou RAM et que le swapping est trop mauvais, car j'ai beaucoup de RAM (8 Go) ....

que faire si je ne crée pas de partition de swap?

Aussi, en ai-je besoin pour l'hibernation ou ce n'est pas un must?


vous devez créer un swap, j'ai essayé une fois de ne pas créer de swap, je
n'ai

que se passe-t-il lorsque vous installez à l'intérieur des fenêtres? Je l'ai fait et cela semblait aussi un peu lent pour mon montage par rapport aux fenêtres, mais je n'ai pas créé la partition
Mihai Bratulescu

Je n'ai jamais essayé d'installer un Linux dans Windows, je crée toujours une partition séparée
Lynob

Réponses:


13

Les systèmes d'exploitation modernes nécessitent un espace de swap pour utiliser efficacement la RAM. Même si votre système a beaucoup de RAM, le gaspillage de RAM entraîne un cache de mémoire tampon plus petit, ce qui signifie une augmentation des E / S disque. Donc, peu importe la quantité de RAM dont vous disposez, vous souhaitez toujours que le système l'utilise efficacement. L'utiliser efficacement signifie retirer de la RAM des éléments auxquels il est extrêmement improbable d'accéder.

Lorsque vous démarrez un système typique, un grand nombre de services démarrent. Les programmes exécutent le code d'initialisation et modifient les mappages de mémoire privée dans le processus. Un certain nombre de ces services ne fonctionneront plus jamais . Beaucoup d'entre eux ne fonctionneront pas pendant des heures. Sans échange, le système d'exploitation n'a d'autre choix que de conserver pour toujours les mappages de mémoire privée modifiés associés à ces services dans la RAM. C'est de la RAM qui ne peut jamais être utilisée comme cache disque.

Vous voulez donc échanger si vous en avez besoin ou non.


8
"Donc, vous voulez échanger si vous en avez besoin ou non." - On dirait que vous avez fait valoir qu'il devait échanger, qu'il le veuille ou non.
sciure de bois

2
Supposons que j'ai beaucoup de RAM et que je puisse me permettre de perdre 2 Go. Pourquoi aurais-je besoin d'un fichier d'échange?
Tarik

1
Dans ce cas, vous n'avez pas besoin d'un fichier d'échange. Mais comme je l'ai soutenu, vous en voulez un. Parce que vous pouvez ou non vous permettre de gaspiller de la RAM, vous ne devriez pas vouloir utiliser la RAM de manière inefficace lorsque vous n'en avez pas besoin.
David Schwartz

J'exécute un serveur CLI sans échange et il fonctionne parfaitement. Exécution d'un serveur teamspeak3, apache2, node.js Je ne vois jamais plus de 500M de RAM utilisés. Donc, cela ne me dérange pas d'utiliser la RAM "de manière inefficace". AVERTISSEMENT: La fonction de serveur Web de ce serveur est exclusivement destinée au développement, donc la charge est toujours faible de toute façon. Et si j'ai une fuite de mémoire pendant le développement, je préfère que le tueur OOM le tue dès que je manque de RAM plutôt que de pousser toutes ces bêtises sur le disque.
Native Coder

12

J'exécute un système de bureau sans aucun échange depuis quelques années, et ça va très bien! Il y a quelques comportements différents; certains d'entre eux sont avantageux et d'autres pourraient vous nuire. Tout dépend de ce que vous faites.

Une différence majeure est la façon dont le système se comporte lorsque la mémoire est épuisée:

S'il n'y a pas de partition de swap, le tueur OOM s'exécute immédiatement. Si vous avez un programme qui perd de la mémoire, c'est probablement celui qui est tué. Cela se produit et vous récupérez le système presque instantanément.

S'il est une partition de swap, le noyau pousse le contenu de la mémoire en échange. Un processus errant peut continuer d'allouer de la mémoire. Cela continue jusqu'à ce que le swap soit épuisé, ce qui peut être de dix minutes à une heure si vous avez une grande partition de swap. Pendant ce temps, votre système ralentit jusqu'à une analyse. Il devient impossible d'ouvrir un terminal et de tuer le processus. Je débranche généralement le cordon d'alimentation lorsque cela se produit.

Donc, comme je vais de toute façon perdre mes données lorsque les MOO du système, je préfère que la première option ait au moins une (grande) chance de récupération.


C'est aussi mon expérience. Linux ne gère pas assez bien le swap-thrash pour vous permettre de tuer vous-même le programme incriminé. Il est plus fiable de demander au tueur OOM de le faire lui-même. Bien sûr, c'est une conception horrible - une meilleure solution serait de geler le processus offensant plutôt que de le tuer et de fournir une interface graphique agréable pour vous permettre de le dégeler ou de le tuer, mais ... Linux.
Timmmm

3
Enfin une réponse qui a du sens et correspond à ma propre expérience. Je ne peux pas comprendre le raisonnement derrière "vous devez avoir une partition de swap". Sauf si nous voulons mettre le système en veille prolongée.
Tarik

5

L'échange est nécessaire pour l'hibernation, sinon vous pouvez vous en passer très bien.


Ainsi, la taille de la zone de swap doit être légèrement supérieure à la taille de la mémoire installée sur votre système.
mdpc

@mdpc, pas nécessairement; il doit juste être suffisamment grand pour contenir le bélier utilisé qui ne peut pas être éliminé (c'est-à-dire les données sauvegardées par un fichier sur le disque).
psusi

et comment estimeriez-vous cela sur la création? Souhaitez-vous donc pas la bonne planification et se préparer au pire des cas, car le partitionnement est généralement une douleur à changer une fois qu'il est défini?
mdpc

2

Il est faux de penser que le fait d'avoir une zone de swap affecte négativement les performances. Ce qui affecte gravement les performances, c'est de ne pas avoir suffisamment de RAM. La zone d'échange en soi n'a aucun effet négatif sur les performances, sauf si vous ne vous souciez pas de la fiabilité. Cela peut avoir un impact positif sur les performances même si vous pensez que vous avez suffisamment de RAM (et aucune pénurie de RAM n'est signalée).

Il y a essentiellement trois cas à considérer:

  • 1: Il y a suffisamment de RAM pour les besoins du noyau interne, pour que toutes vos applications aient leur ensemble de pages de travail sur la RAM et aient toujours de la RAM "libre" pour le cache de tampon pour stocker la plupart des données chaudes du système de fichiers.

  • 2: comme ci-dessus, sauf que vous n'avez pas assez de RAM disponible pour que le cache de tampon soit pleinement efficace.

  • 3: Il n'y a pas assez de RAM pour même stocker les pages utilisées de vos applications.

Dans le cas 1, qui devrait être la norme pour une machine de production, avoir ou non une zone de swap ne change rien (au moins sur les OS basés sur Linux et autres OS qui surchargent la mémoire).

Dans le cas 2, le fait d'avoir une zone de swap peut améliorer les performances globales en permettant au système de paginer des pages très rarement utilisées, puis de permettre au cache de tampon de mieux jouer son rôle.

Dans le cas 3, le fait d'avoir une zone de permutation permet à l'application de continuer à fonctionner au détriment d'une dégradation des performances due à la pagination. D'un autre côté, manquer une zone de swap (ou une zone suffisamment grande) fera planter les applications de manière aléatoire. De plus, en fonction des paramètres du système d'exploitation, le tueur OOM peut également décider de tuer les applications les plus gourmandes en mémoire s'il y a une forte demande de RAM sans même leur donner la possibilité de sauvegarder leurs (vos) données critiques.

Ce dernier cas est celui avec lequel vous devez faire un choix. Il existe certainement des cas d'utilisation où la suppression de processus est l'option préférée, comme les systèmes où le temps de réponse est crucial et où la perte d'une transaction / d'un processus n'est pas très grave.

Cependant, j'ai tendance à croire que dans la plupart des situations, il est préférable de laisser une chance à l'utilisateur / administrateur de remarquer la pénurie de RAM et d'agir en conséquence sans risquer de perdre des données.


1

Si vous ne souhaitez pas utiliser de partition de swap, vous pouvez utiliser un fichier de swap: une image du système de fichiers stockée dans un fichier standard et utilisée comme espace de swap.

Les articles suivants expliquent comment procéder en détail:


Quelle est la différence entre un fichier d'échange et une partition d'échange? et que se passerait-il si je n'en avais pas?
Mihai Bratulescu

vitesse d'accès ....
mdpc

2
Si utilisé OUI, il est assez important. Si vous utilisez une partition, c'est un adressage simple, si vous utilisez un fichier, vous devez faire toute la surcharge du système de fichiers pour utiliser un fichier d'échange et vous NE POUVEZ PAS garantir où sur le disque les segments résideront.
mdpc

2
La surcharge du système de fichiers @mdpc est négligeable à partir du noyau 2.6. Les métadonnées, le cache et le code du système de fichiers sont contournés. Les blocs de disques bruts sont simplement accessibles directement.
jlliagre

1
@mdpc Un fichier d'échange ne doit pas être fragmenté de manière significative, sauf si vous le créez récemment. De plus, l'accès au swap est rarement séquentiel mais surtout aléatoire en raison du fonctionnement de la pagination de la demande, la fragmentation ne devrait donc pas être un problème.
jlliagre

0

C'est un peu dangereux mais vous POUVEZ courir sans espace de swap. Mais si vous dépassez enfin la quantité de mémoire dont vous disposez, votre système se bloquera presque immédiatement sans préavis.

Ce que l'échange vous donne essentiellement est une extension mais beaucoup plus lente pour votre mémoire. Si vous dépassez, vous commencerez à échanger, cela prendra vraiment la vie de votre système .... TOUTEFOIS, en tuant les processus errants, vous pouvez toujours enregistrer votre système.

Certains programmes insistent pour allouer (mais ne pas utiliser) l'espace d'échange, certains sont des programmes de base de données si je me souviens bien. Encore une fois, en n'ayant pas d'espace de swap, vous pouvez limiter les programmes qui peuvent être exécutés.

Enfin, regardez SWAP est CHEAP dans le fait que vous n'avez pas à sauvegarder la zone. (J'espère que vous êtes l'un de ces bons administrateurs système exceptionnels qui sauvegardent leurs systèmes).

Alors créez-le.

Ma règle générale était de 2 * taille de la mémoire ..... mais aujourd'hui, je suis d'accord dans de nombreux cas avec 1 * taille de la mémoire, mais j'utilise généralement 1,5 * (taille de la mémoire). Vous n'avez pas besoin de créer une telle quantité, mais je le ferais ... surtout s'il y a un type de travail que vous faites.

Oh oui, et pour l'hibernation, le swap est OBLIGATOIRE pour contenir une image totale de la mémoire. Et donc la taille si vous envisagez h8ibernation devrait être AU MOINS (1 * taille de la mémoire) + 100 Mo .. les 100 Mo sont pour la surcharge possible nécessaire dans le processus.


alors ... pour certains programmes, vous avez en quelque sorte besoin d'une zone de swap pour qu'ils fonctionnent? Je ne suis pas inquiet de manquer de RAM avec 8 Go (mais pas impossible)
Mihai Bratulescu

La règle de taille de mémoire 2x est ancienne et obsolète. Mais avoir un échange n'est pas une mauvaise idée. Il n'utilise pas trop d'espace disque, vous ne manquerez donc pas l'espace utilisé; il n'est généralement pas utilisé si vous avez suffisamment de RAM, et il vous permet de vider le cœur de votre swap.
Hennes

@Hennes - lire ma note ... "était"
mdpc

0

L'échange Linux semble avoir une exigence assez difficile dès qu'il y a une pression mémoire. Le symptôme est que si la quasi-totalité de la RAM est utilisée par des processus actifs, le système se bloque durement et le disque dur fonctionne de manière sauvage.

Pourquoi?

Les pages sans fichier de sauvegarde (généralement de l'allocation dynamique de mémoire) ne peuvent pas être supprimées de la RAM lorsqu'il n'y a pas d'échange. Le noyau recourt à des pages avec un fichier de sauvegarde même si elles sont en fait bientôt nécessaires, i. e. poubelle même sans échange!

Pour plus de détails sur ce problème subtil, consultez cet article de blog.

Conclusion : Ayez toujours un échange.

Et pour la taille à titre indicatif, utilisez quelque chose entre 4 et 8 Go, même pour les systèmes avec beaucoup de RAM, en supposant que vous n'hiberniez pas. Pour plus de détails, consultez la documentation de Red Hat sur l'espace d'échange .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.