Existe-t-il une taille maximale à laquelle un fichier d'échange peut fonctionner?

8

Pour autant que je sache, la limite théorique pour un fichier d'échange est incroyablement grande selon qu'un système 32 bits ou 64 bits est utilisé.

J'ai créé un fichier d'échange de 16 Go sur un système RAM 64 bits de 4 Go avec des spécifications par ailleurs bas, car j'ai plus qu'assez d'espace sur mon disque dur interne de 1 To ...

Mais le gros fichier d'échange fait-il vraiment une différence de vitesse / performances?

Devon van Schoor
la source
1
Connexe: askubuntu.com/q/49109/367990
Byte Commander
2
OMI si vous utilisez le swap, vous avez vraiment besoin de plus de RAM, pas d'un fichier de swap plus grand
Panther
1
si vous utilisez des disques durs, vous devez utiliser zram à la place et réduire la priorité des échanges de disques durs. Et une si grande partition de swap n'aidera pas, car selon le type que vous utilisez comme le swap de 4 Go, votre système a été lent à analyser
phuclv
2
Connexe: askubuntu.com/q/1017021/504066
PerlDuck
Pour autant que je me souvienne, un fichier d'échange consommera une certaine quantité de RAM physique (je pense que moins de 1% de la taille du fichier d'échange). Un fichier d'échange trop volumineux peut donc nuire aux performances en raison de cette consommation de mémoire. Mais pour un fichier d'échange de taille raisonnable, cela ne posera pas de problème.
kasperd

Réponses:

7

Vous pouvez avoir jusqu'à 32 zones d'échange (fichiers ou partitions) avec jusqu'à ~ 4 milliards (2 ^ 32) pages chacune, où une "page" fait 4 Ko sur un système traditionnel (par exemple x86 ou x86_64) mais peut être plus grande sur d'autres architectures ou si vous avez spécialement configuré de grandes pages.

Cela donne un maximum théorique de 16 To par zone de swap et jusqu'à 32 zones de swap. Il peut y avoir d'autres limitations qui s'appliquent avant que vous n'atteigniez cela, mais c'est une zone de swap aussi importante que vous mkswappouvez créer pour vous.

Quant à la quantité que vous souhaitez, toute zone d'échange au-delà du maximum que vous utilisez réellement ne contribue en rien aux performances ou à la stabilité du système. L'astuce consiste à estimer la quantité maximale d'utilisation qui se produira dans une situation normale ou même anormale, et à l'utiliser comme taille de fichier d'échange et pas plus.

Au moment de la rédaction, un espace d'échange supérieur à environ 4 Go de plus que la taille de votre mémoire physique est très peu susceptible d'être utilisé, sauf si votre système est très anormal. Sur un système typique tel qu'un système de bureau utilisé par une seule personne à la fois, vous pouvez même vous arrêter à un maximum de 6 Go à 8 Go, même si votre mémoire physique est supérieure.

thomasrutter
la source
6

Cela ne fait aucune différence en termes de vitesse ou de performances. Il vous permet simplement d'utiliser jusqu'à 20 Go de mémoire virtuelle avant que le tueur OOM ne commence à tuer les processus de récupération de mémoire.

Si vous voulez de meilleures performances:

  • diminuer swappinesssi vous n'utilisez pas plus de 4 Go souvent
  • ajouter de la RAM
  • passer à un SSD et y mettre le fichier d'échange
Chai T. Rex
la source
Si vous arrivez souvent à devoir échanger des blocs de mémoire, un SSD en raison de son architecture et de ses cycles d'écriture limités n'est pas la solution, car il peut facilement utiliser très rapidement les cycles d'écriture du SSD. Si vous ne rencontrez qu'occasionnellement le besoin de swap mémoire, les SSD vont bien.
Videonauth
11
@Videonauth: "Utilisez facilement les cycles d'écriture du SSD très rapidement": tout type de SSD moderne à moitié décent peut maintenir l'écriture de la pleine capacité du SSD jour après jour pendant des années . Votre conseil était peut -être correct en 2010, mais il est obsolète. Même un Samsung SSD 840 de 256 Go de qualité grand public peut supporter une écriture de 100 Go par jour pendant plus de 2 ans.
AlexP
Si vous avez beaucoup de RAM, la diminution de la permutation fait encore moins de différence que si vous aviez une mémoire RAM limitée. En fait, l'installation de beaucoup de RAM rend les autres modifications à échanger redondantes si cela suffit pour éviter les échanges. Gardez une partition de swap pour la stabilité "au cas où", 99,9% du temps, elle ne sera pas utilisée, et vous conserverez d'excellentes performances.
thomasrutter
1
De plus, le problème des cycles d'écriture SSD limités est faux depuis plus d'une décennie, il est vraiment temps que ce FUD soit appelé. Désolé, ce commentaire est tellement redondant étant donné qu'AlexP a déjà abordé ce sujet, mais il convient de le souligner. Les SSD sont parfaits pour les applications gourmandes en écriture.
thomasrutter
1
Le nivellement de l'usure dans les SSD est devenu chose courante vers 2008 ( article de 2008 | article d'Anandtech de 2009 ). "Est-ce que les ordinateurs portables à des prix de consommation normaux sont même venus avec des SSD en 2008?"
thomasrutter
3

D'après la réponse de Gilles

... Il y avait autrefois une limite de taille de swap de 2 Go (sur la plupart des plateformes 32 bits), mais ce n'est plus le cas depuis des années. La limitation a été supprimée à un moment donné de la série des noyaux 2.2.

De plus, il cite une page de manuel pour mkswap:

La taille maximale utile d'une zone de swap dépend de l'architecture et de la version du noyau.

Dans la bibliothèque linux / swap.h, il y a une MAX_SWAPFILESentrée, il y a donc une limite sur le nombre de fichiers d'échange au niveau du noyau, mais ce n'est apparemment pas une zone définitive non plus. Selon le document lié:

Il convient de noter que les six bits pour «type» devraient permettre jusqu'à 64 zones de permutation d'exister dans une architecture 32 bits au lieu de la restriction MAX_SWAPFILES de 32

Ce que je comprends a un maximum de 64 fichiers d'échange sur les architectures 32 bits. Cependant, je n'ai pas remarqué dans le document mentionner ce qui se passerait sur une architecture 64 bits. Il convient également de noter que dans ce cas , les efforts d'OP pour créer des fichiers d'échange ont échoué à la 30e entrée.

En ce qui concerne les partitions de swap, il semble n'y avoir aucune limite pour cela dans le noyau, en plus des constats mentionnés précédemment, mais le nombre de partitions serait toujours limité par le BIOS sous-jacent et la disposition du disque .

Sergiy Kolodyazhnyy
la source
2

Cette réponse peut ne pas être appropriée pour Ubuntu 18.04 (merci à @Chai T. Rex de l'avoir signalé dans les commentaires).

Quoi qu'il en soit pour les versions précédentes, c'est parti (il n'y a toujours pas de mise à jour proposée LTS> LTS, donc cela pourrait toujours être pertinent):

Ce n'est pas un fichier, c'est une partition, et oui, c'est à cause de la permutation

Le paramètre swappiness contrôle la tendance du noyau à déplacer les processus de la mémoire physique vers le disque d'échange. Étant donné que les disques sont beaucoup plus lents que la RAM, cela peut entraîner des temps de réponse plus lents pour le système et les applications si les processus sont trop agressivement déplacés hors de la mémoire.

Donc, fondamentalement, si votre partition de swap est beaucoup plus grande que la RAM que vous avez, le système aura tendance à swap plus, provoquant une lenteur générale.

dadexix86
la source
4
Il existe maintenant des fichiers d'échange, et ce sont ceux par défaut (au lieu de partitions) lors de l'installation de 18.04 à partir de zéro.
Chai T. Rex
1
Je suppose que le comportement du swap reste à peu près le même, qu'il soit soutenu par une partition ou un fichier. Vous pouvez également avoir plusieurs fichiers d'échange et / ou partitions en même temps. Quoi qu'il en soit, je ne pense pas que plus de swap aurait un effet négatif alors qu'il reste encore suffisamment de RAM.
Byte Commander
Je supposerais la même chose, mais jusqu'à ce que je mette la main dessus, ce n'est qu'une supposition folle
dadexix86
Il y a des partitions d'échange et il y a des fichiers d'échange. Les partitions de swap peuvent être utilisées par deux ou plusieurs installations Linux sur le même PC (dual boot ou triple boot). La partition de swap est meilleure en cas de disque plein où le fichier de swap pourrait être créé fragmenté. ... Les fichiers d'échange fonctionneront aussi bien que les partitions d'échange s'ils sont créés sur des disques non pleins pour éviter la fragmentation - Devon van Schoor j
Devon van Schoor
2

Il n'y a pas beaucoup de différence de vitesse ou de performances lorsque vous augmentez arbitrairement la partition de swap.

Il existe plusieurs facteurs liés au swap qui peuvent affecter les performances telles que le type de swappinessdisque dur (SDD ou HDD).

Le swap est assez lent et l'augmentation du swappiness réduit les performances. Cependant, cela n'a d'effet que s'il n'y a pas assez de RAM. Mais c'est mieux que de ne pas avoir de swap. Ma recommandation est de rendre la taille de la partition de swap deux fois plus grande que votre RAM.

Zanna
la source
5
cette recommandation est dépassée. Les systèmes modernes avec 32 ou 64 Go de RAM n'auront pas besoin d'un échange de 64 ou 128 Go
phuclv
3
@ LưuVĩnhPhúc Je n'utiliserais pas plus de 2 Go de swap ces jours-ci ...
el.pescado
2 Go semblent très faibles ... les machines ou jeux virtuels pourraient vraiment remplir plus de 2 Go de swap très rapidement. Je pense que 4 à 8 Go de swap fonctionnent bien avec n'importe quelle quantité de RAM. Si vous avez besoin de plus de 8 Go, vous devez probablement ajouter plus de RAM.
Germain
0

J'arrive au fait qu'un fichier d'échange ou une partition d'échange n'ont pratiquement aucune limite. De plus, mon fichier d'échange de 16 Go est assez gros mais la taille n'affecte pas la vitesse.

Cependant, ce que je comprends, c'est que ce qui affecte la vitesse est que le système utilise réellement cet espace d'échange par opposition au matériel physique.

Ma solution est de créer une valeur de swappiness élevée afin que le swap ne soit pas trop utilisé par opposition au matériel plus rapide. alors j'ai fait:

sudo -s
nano /etc/sysctl.conf

Ajouté au fichier:

#vm.swappiness = 50

enregistrer

sudo sysctl -p

pour rafraîchir (ou pourrait juste avoir redémarré)

Devon van Schoor
la source
L'ajout de la ligne #vm.swappiness = 50à /etc/sysctl.confn'a aucun effet, le début #fait de cette ligne un commentaire, supprimez-la. Vous pouvez vérifier la permutation avec cat /proc/sys/vm/swappiness.
mook765
Mais la méthode que j'ai décrite a fonctionné. Quand j'entre [cat / proc / sys / vm / swappiness] j'obtiens 50 comme sortie
Devon van Schoor