permuter la partition contre le fichier pour la performance?

62

Quoi de mieux pour la performance? Une partition plus proche de l'intérieur du disque aura des temps d'accès plus lents, et nous devons attendre que le lecteur bascule entre le système d'exploitation et les partitions d'échange.

D'autre part, une partition de swap contourne tout le système de fichiers, ce qui permet des écritures directement sur le disque, ce qui peut être plus rapide qu'un fichier.

Quel est le compromis de performance?

À quel point avoir un fichier d'échange de taille fixe fait-il une différence?

Est-il un cas où il sera plus long de passer à la partition de swap, mais les performances seront meilleures pendant qu'il est sur la partition de swap que s'il s'agissait d'un fichier d'échange?

Bill Gray
la source
Juste par curiosité. Pouvez-vous fournir des détails système tels que la version du noyau, la RAM, les schémas de partition et de système de fichiers?
Viky
Sur quel OS recherchez-vous?
Mathieu Chateau
4
Pour plus d'informations sur Linux, voir lkml.org/lkml/2005/7/7/326
Adam Monsen
Une mise à jour pour les réponses aux questions?
kokbira

Réponses:

29
  1. Sur les disques durs, le débit et la recherche sont souvent plus rapides vers le début du disque, car ces données sont stockées plus près de la zone externe du disque, qui contient plus de secteurs par cylindre. Ainsi, la création de la permutation au début du disque peut améliorer les performances.

  2. Pour un noyau Linux 2.6, il n'y a pas de différence de performances entre une partition de swap et un fichier de swap non fragmenté . Quand un fichier / partition de swap est activé par swapon, le noyau 2.6 trouve le disque sur lequel le fichier swap est stocké . Ainsi, lorsqu’il est temps d’échanger, il n’a pas à gérer le système de fichiers.

Ainsi, si le fichier d'échange n'est pas fragmenté, c'est exactement comme s'il y avait une partition d'échange au même endroit. Autrement dit, vous obtiendriez des performances identiques si vous utilisiez une partition swap brute ou si vous la formatiez avec un système de fichiers, puis créez un fichier swap remplissant tout l'espace. Dans les deux cas, une zone contiguë est utilisée pour l'échange, que le noyau utilise directement.

Ainsi, si l'on crée le fichier d'échange lorsque le système de fichiers est récent (en s'assurant ainsi qu'il n'est pas fragmenté et au début du volume), les performances doivent être identiques à celles d'une partition de swap située juste avant le volume. En outre, si vous créez le fichier d'échange, par exemple au milieu du volume, avec des fichiers situés de chaque côté, vous obtiendrez de meilleures performances car le nombre de fichiers échangés est moindre.

Sous Linux, si le fichier d'échange est créé non fragmenté et jamais développé, il ne peut pas être fragmenté, du moins avec les systèmes de fichiers normaux tels que ext3 / 4. Il utilisera toujours les mêmes blocs de disque, qui sont contigus.

Je conclus que le seul avantage d’une partition d’échange dédiée est la non-fragmentation garantie lorsque vous devez l’étendre; si votre échange ne sera jamais étendu, un fichier créé sur un nouveau système de fichiers ne nécessite pas de partition supplémentaire.

Shay
la source
5
La seule chose à ajouter ici est que si votre machine est configurée pour "suspendre sur disque", ce qui se passe réellement est que les éléments en mémoire sont écrits pour être échangés. Pour que cela fonctionne, le swap doit être sur sa propre partition, car le swap ne peut pas être sur un système de fichiers actif pour que cela se produise. Par conséquent, si vous avez un serveur, vous n'utiliserez probablement pas cette fonctionnalité et vous pourrez utiliser un fichier d'échange. Si vous avez un ordinateur portable, vous voulez probablement une partition de swap pour pouvoir suspendre le fichier en veille prolongée.
Nathan S. Watson-Haigh
@ NathanS.Watson-Haigh Que se passe-t-il avec les données déjà échangées? Il ne peut pas être jeté.
FT
3
@ NathanS.Watson-Haigh Pouvez-vous lier une source? Ubuntu 17.04 utilise un fichier d'échange par défaut. Il serait surprenant de ne pas pouvoir "suspendre sur disque".
Matthias Weiler
22

En réalité, cela ne fait pas beaucoup de différence tant que vous n'utilisez pas de fichiers fragmentés .

Créer un fichier "normal" avec dd allouera le fichier (si possible) en une seule exécution, tandis que la création d'un fichier fragmenté vous indiquera que vous avez un fichier de 10 Go qui traîne mais n'utilise pas réellement tout l'espace. Je ne sais pas si mkswap n'allouera pas l'espace de toute façon, mais généralement, un fichier d'échange augmentera avec le temps et n'allouera donc pas un secteur continu (comme une partie du disque), mais allouera plutôt des blocs en fonction des besoins, ce qui entraînera fragmentation dans le temps (bien sûr en fonction de votre utilisation du disque)

En interne, le noyau Linux accédera plus ou moins directement aux blocs sous-jacents d'un fichier d'échange. Je ne trouve pas le lien en ce moment, il faut me faire confiance, à moins que quelqu'un ne trouve quelque chose de plus officiel. Tout ce que je peux trouver pour l'instant, c'est:

Tout cela ne concerne que la ligne 2.6 des noyaux Linux.

Si vous voulez des performances optimales (et qu'est-ce que c'est vraiment? ... le swap est lent, point. Augmentez la mémoire RAM pour ne pas permuter les meilleures performances), vous voudriez utiliser une partition.

serveurhorror
la source
18
Les versions modernes de swapon vont carrément refuser de travailler avec des fichiers fragmentés formatés en swap, prétextant que le fichier contient des trous.
Tim Post
3

C'est une question intéressante et j'ai beaucoup lu sur le même sujet. En règle générale, une partition de swap est préférable à un fichier en raison du système de fichiers sous-jacent. Mais si vous avez toujours besoin d'augmenter la taille de votre échange, le fichier est une meilleure option. Jusqu'au noyau 2.4, on considérait qu'une partition de swap était plus rapide qu'un fichier, mais maintenant, avec les améliorations du noyau 2.6, les performances sont presque les mêmes.

Quelque chose que j'ai trouvé sur internet aussi.

http://www.go2linux.org/swap-file-vs-swap-partition

et

http://www.sunmanagers.org/pipermail/summaries/2005-November/006913.html

Viky
la source
Aucun de ces liens n'explique réellement les raisons de leurs décisions.
Bill Grey
Le raisonnement est que le fichier aura une surcharge du système de fichiers sous-jacent. Si vous créez un fichier, il pourrait être fragmenté. En fonction du fichier mis en cache lors du swap, les lectures peuvent être lentes par rapport à une partition entière qui est un système de fichiers swap à part entière.
Viky
Essayé de creuser plus loin et trouvé un article relatif sur wiki. Juste pour vous aider, il y a peu de paramètres de réglage d'échange que vous pouvez vérifier. Vérifiez également l'explication sous implémentation pour Linux. Pourrait aider. en.wikipedia.org/wiki/Paging
Viky
Suit l'une des citations sur le lien wiki mentionné ci-dessus et trouve un fil de discussion intéressant sur le même problème. Peut-être envie de vérifier cela. lkml.org/lkml/2005/6/28/427
Viky
J'ai mentionné la surcharge du système de fichiers dans ma question, mais il ne s'agit pas d'un blocage de performances, mais d'une partition située à proximité du disque interne. Ce délai serait supérieur à la surcharge du système de fichiers.
Bill Grey
2

Je pense qu'au stade où nous en sommes, à moins que vous n'utilisiez un ordinateur portable avec une configuration qui enregistre les données sur le swap lorsqu'il suspend / dort, le swap devrait vraiment être considéré comme "dernier recours". Votre meilleur pari est de mettre assez de RAM dans une boîte pour qu’elle ne mette jamais les pages sur le disque.

Cela dit, une partition est probablement la meilleure solution en termes de performances, bien qu'un fichier soit plus flexible. Assurez-vous simplement que c'est sur une broche de 7 200 tr / min.

Matt Simmons
la source
1
Pourquoi une partition aurait-elle un meilleur impact sur les performances, alors que les temps d'accès peuvent être un facteur de retard supplémentaire?
Bill Grey
5
Parce que l’utilisation d’un fichier peut nécessiter plus de mouvements de tête, car lorsqu’on trouve la page à lire / écrire, les données peuvent se trouver n’importe où sur le système de fichiers, il est donc nécessaire de rechercher les structures fs, cloison. Cela fait du temps d’accès (par rapport au débit de masse) un facteur de différenciation.
David Spillett
2
"Ne configurez pas le swap sauf si vous devez passer en veille prolongée" est un point de vue controversé. Parfois, lorsque le système manque de mémoire réelle, la permutation de mémoire peut permettre au système de récupérer. Le fait de ne pas avoir d'échange peut vous empêcher d'exécuter des programmes qui allouent beaucoup de mémoire, mais n'en touchent pas la plupart (par exemple, certains outils de débogage). Parfois, une région de mémoire occupée mais inactive est mieux utilisée en tant que cache de disque et ce compromis ne peut être effectué que si un échange est disponible. Voir unix.stackexchange.com/questions/2658/… pour en savoir plus.
Anon
1
Qu'est-ce que @Anon a dit. Chrome est un gros problème de mémoire. Même avec moins de 100 onglets, mon ordinateur portable de 16 Go ne répond plus pendant plusieurs minutes lorsque la mémoire utilisée est d’environ 90% et qu’il n’ya pas de fichier d'échange. Étonnamment, Ubuntu n’a pas de mécanisme intégré pour avertir l’utilisateur que le système d’exploitation manque de mémoire .
Dan Dascalescu
2

Dans notre travail, nous pensons que, dans la mesure où un fichier d'échange peut devenir fragmenté et que la fragmentation ralentit l'accès au swap, une partition constitue une meilleure approche. Bien sûr, définir un fichier d'échange de taille statique revient à peu près à la même chose, mais cela semble subjectivement plus net.

Cette approche est-elle la seule vraie voie? Probablement pas, car la pratique a été établie il y a près de 10 ans. Le seul changement majeur survenu dans la technologie des disques au cours des années écoulées est la complexité des contrôleurs RAID que nous utilisons (nous ne sommes pas encore assez riches pour les disques SSD). L'augmentation de la taille des disques signifie que la partition swap que nous créons est plus proche de son début qu'elle ne l'était à l'époque où les disques de 18 Go étaient livrés en standard. Les vitesses de swap sont donc encore plus rapides qu'auparavant.

Bien entendu, sur nos systèmes Windows basés sur ESX, la position du fichier d'échange est complètement inutile. Il y a tellement de couches de virtualisation entre le fichier d'échange et les plateaux de disques physiques que cela n'a pas d'importance. Mais nous le conservons sur une partition séparée car ce n'est que la norme.

sysadmin1138
la source
4
Un fichier d'échange ne devient pas fragmenté, car le noyau utilise une approche de type mmap direct et ne grossira ni ne réduira jamais le fichier. +1 si pour votre commentaire sur la virtualisation: cela n’a souvent aucune importance.
Parasietje
0

L'utilisation d'un fichier d'échange peut utiliser un peu plus de mémoire pour la traduction de fichier à mémoire. Nous parlons de moins de 1 Mo de mémoire par échange de 1 Go. Le cache du système de fichiers NE met PAS en cache les données échangées, mais uniquement les données d'organisation, ce qui devrait représenter l'essentiel de la mémoire supplémentaire requise.

En outre, je doute que vous perdiez toute performance raisonnable, sauf peut-être une fois sur 1 000 fois la tête cherchée de plus.

Fait amusant, l’utilisation de zswap avec un fichier d’échange à extension dynamique permet d’obtenir une vitesse impressionnante lors des opérations d’échange, à un coût minime, sans être utilisé.

Crass Spektakel
la source
1
Pouvez-vous fournir une sorte de justification pour vos revendications? Cela semble plutôt anecdotique.
austinian