95 votes

Partition d'échange vs fichier pour les performances?

Quelle est la meilleure option en termes de performances? 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.

En revanche, une partition d'échange contourne tout le système de fichiers, permettant des écritures directes sur le disque, ce qui peut être plus rapide qu'un fichier.

Quel est le compromis en termes de performance?

Dans quelle mesure le fait d'avoir un fichier d'échange de taille fixe fait-il une différence?

Est-ce que cela signifie qu'il faudra plus de temps pour passer à la partition d'échange, mais que les performances seront meilleures une fois dessus que si c'était un fichier d'échange?

0 votes

Juste par curiosité. Pouvez-vous fournir des détails sur le système tels que la version du noyau, la RAM, la partition et le schéma du système de fichiers ?

0 votes

Sur quel système d'exploitation recherchez-vous ?

4 votes

Pour plus d'informations sur Linux, consultez lkml.org/lkml/2005/7/7/326

56voto

Shay Points 461
  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 comporte plus de secteurs par cylindre. Ainsi, créer le swap au début du disque pourrait améliorer les performances.

  2. Pour un noyau Linux 2.6, il n'y a pas de différence de performance entre une partition swap et un fichier swap non fragmenté. Lorsqu'une partition/fichier swap est activée par swapon, le noyau 2.6 trouve sur quels blocs disque le fichier swap est stocké, de sorte que lorsqu'il est temps de faire du swap, il n'a pas à traiter le système de fichiers du tout.

Ainsi, si le fichier swap n'est pas fragmenté, c'est exactement comme s'il y avait une partition swap à son emplacement. Autrement dit, vous obtiendriez des performances identiques si vous utilisiez une partition swap brute, ou si vous la formattiez avec un système de fichiers, puis créiez un fichier swap qui remplissait tout l'espace, car de toute façon sur ce disque, il y a une région contiguë utilisée pour le swap, que le noyau utilise directement.

Donc, si on crée le fichier swap lorsque le système de fichiers est frais (garantissant ainsi qu'il n'est pas fragmenté et au début du volume), les performances devraient être identiques à celles d'une partition swap juste avant le volume. De plus, si on crée le fichier swap disons au milieu du volume, avec des fichiers de part et d'autre, on pourrait obtenir de meilleures performances, car il y aurait moins de recherche pour effectuer le swap.

Sous Linux, si le fichier swap est créé non fragmenté, et jamais agrandi, il ne peut pas devenir fragmenté, du moins avec des systèmes de fichiers normaux comme ext3/4. Il utilisera toujours les mêmes blocs disque, qui sont contigus.

J'en conclus que pratiquement le seul avantage d'une partition swap dédiée est la garantie de non fragmentation lorsque vous devez l'agrandir; si votre swap ne sera jamais agrandi, un fichier créé sur un système de fichiers frais ne nécessite pas de partition supplémentaire.

12 votes

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 dans le swap. 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'utilisez probablement pas cette fonctionnalité et vous pourriez utiliser un fichier de swap sans problème. Si vous avez un ordinateur portable, vous voulez probablement une partition de swap afin de pouvoir "suspendre sur fichier" pour l'hibernation.

0 votes

@NathanS.Watson-Haigh Que se passe-t-il avec les données qui sont déjà dans le swap ? Elles ne peuvent pas être jetées.

8 votes

@ NathanS.Watson-Haigh Pouvez-vous fournir une source? Ubuntu 17.04 utilise un fichier d'échange par défaut. Ce serait surprenant s'il ne pouvait pas "suspendre sur le disque".

29voto

Martin M. Points 6418

En fait, cela ne fait pas beaucoup de différence tant que vous n'utilisez pas des fichiers épars.

Créer un fichier "normal" avec dd allouera le fichier (si possible) en une seule fois, alors que la création d'un fichier épars vous dira que vous avez un fichier de 10 Go quelque part mais n'utilise pas réellement tout l'espace. Je ne suis pas sûr que mkswap n'alloue pas quand même l'espace mais généralement un fichier swap augmentera avec le temps et ne pas allouer un secteur continu (comme une partie du disque) mais plutôt allouer des blocs au besoin, ce qui entraînera une fragmentation au fil du 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 sur ce qui se passe en interne, vous devez me faire confiance à ce sujet à moins que quelqu'un ne trouve quelque chose de plus officiel. Tout ce à quoi je peux penser maintenant est:

tout cela s'applique uniquement à la ligne 2.6 des noyaux Linux.

Si vous voulez des performances optimales (et quelles sont-elles vraiment ?... le swapping est lent, point final. Augmentez la RAM pour ne pas utiliser le swap pour la meilleure performance), vous voudriez utiliser une partition.

22 votes

Les versions modernes de swapon refuseront catégoriquement de fonctionner avec des fichiers épars formatés comme swap, invoquant que le fichier a des trous.

4voto

Matt Simmons Points 20098

Je pense qu'à l'étape où nous en sommes actuellement, à moins que vous n'utilisiez un ordinateur portable avec une configuration qui écrit les données sur le swap lorsqu'il se met en veille ou hibernation, le swap devrait vraiment être considéré comme un "dernier recours". Votre meilleure option est de mettre suffisamment de RAM dans une boîte pour qu'elle n'écrive jamais sur le disque.

Cela dit, une partition est probablement la meilleure option en termes de performance, bien qu'un fichier soit plus flexible. Assurez-vous simplement qu'il est sur un disque dur à au moins 7200 tours/minute.

1 votes

Pourquoi une partition serait-elle mieux en termes de performances, alors que les temps d'accès peuvent être plus déterminants pour les retards?

6 votes

Parce que l'utilisation d'un fichier peut nécessiter plus de mouvements de tête, car en trouvant la page à lire/écrire, les données pourraient être n'importe où sur le système de fichiers, les structures fs doivent être recherchées, alors qu'avec une partition d'échange chaque page sera à un emplacement connu dans la partition. Cela rend le temps d'accès (par opposition à la bande passante brute) un facteur de différenciation.

2 votes

"Ne configurez pas de swap à moins que vous ayez besoin d'hiberner" est une opinion controversée. Parfois, lorsque le système manque de mémoire réelle, le swap peut permettre au système de récupérer. Ne pas avoir de swap peut vous limiter dans l'exécution de programmes qui allouent de grandes quantités de mémoire mais n'y accèdent pas réellement (par exemple, certains outils de débogage). Parfois, une région de mémoire occupée mais inutilisée est mieux utilisée comme cache disque et ce compromis ne peut être fait que s'il y a du swap disponible. Consultez unix.stackexchange.com/questions/2658/… pour une discussion.

4voto

Viky Points 638

C'est une question intéressante et j'ai beaucoup lu à ce sujet. En général, une partition d'échange est meilleure qu'un fichier en raison du système de fichiers sous-jacent. Mais si vous devez toujours augmenter la taille de votre échange, un fichier est une meilleure option. Jusqu'au noyau 2.4, il était considéré qu'une partition d'échange é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

0 votes

Aucun de ces liens n'explique vraiment les raisons derrière leurs décisions cependant.

0 votes

La raison est que le fichier aura une surcharge de son système de fichiers sous-jacent. Si vous créez un fichier, il pourrait être fragmenté. et en fonction du fichier qui est mis en cache sur swap, les lectures pourraient être lentes par rapport à une partition entière qui est un système de fichiers de swap en soi.

0 votes

J'ai essayé de creuser plus loin et j'ai trouvé un article relatif sur wiki. Juste pour vous aider, il y a quelques paramètres de réglage swap que vous pouvez vérifier. Veuillez également consulter l'explication sous implémentation pour linux. Cela pourrait aider. fr.wikipedia.org/wiki/Paging

4voto

sysadmin1138 Points 129885

La réflexion à notre travail est que puisqu'un fichier d'échange peut devenir fragmenté, et que la fragmentation ralentit l'accès à l'échange, une partition est une meilleure approche. Bien sûr, définir un fichier d'échange de taille fixe fait à peu près la même chose, mais cela semble simplement plus propre.

Cette approche est-elle la seule vraie voie? Probablement pas, car la pratique a été établie il y a près de 10 ans. La seule modification majeure dans la technologie des disques au cours des années intermédiaires est la complexité des contrôleurs RAID que nous utilisons (nous ne sommes pas encore assez riches pour les SSD). L'augmentation de la taille des disques signifie que la partition d'échange que nous créons est plus proche du début du disque que ce n'était le cas lorsque les disques de 18 Go étaient expédiés en standard, ce qui signifie que les vitesses d'échange sont encore plus rapides qu'elles ne l'étaient à l'époque.

Bien sûr, sur nos systèmes Windows basés sur ESX, la position du fichier d'échange est complètement, complètement sans importance. Il y a tellement de couches de virtualisation entre le fichier d'échange et les plateaux de disque physique que cela n'a pas d'importance. Mais nous le gardons sur une partition séparée car c'est simplement la norme.

7 votes

Un fichier d'échange ne devient pas fragmenté, car le noyau utilise une approche mmap directe et ne fera jamais grossir ou rétrécir le fichier. +1 cependant pour votre commentaire sur la virtualisation : cela importe souvent peu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X