web-dev-qa-db-fra.com

échanger partition vs fichier pour des performances?

Quoi de mieux pour les 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 permute les partitions.

D'un autre côté, une partition de swap contourne tout le système de fichiers permettant directement les écritures sur le disque, ce qui peut être plus rapide qu'un fichier.

Quel est le compromis performance?

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

Est-ce un cas qu'il sera plus long de passer à la partition de swap, mais les performances seront meilleures alors que c'est sur la partition de swap que s'il s'agissait d'un fichier de swap?

67
Bill Gray
  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 a plus de secteurs par cylindre. Ainsi, la création du swap 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 non fragmenté fichier d'échange. Lorsqu'une partition/un fichier d'échange est activé par swapon, le noyau 2.6 trouve sur quel disque les blocs sur lesquels le fichier d'échange est stocké , de sorte que lorsque vient le temps de permuter, il n'a pas à traiter avec le système de fichiers du tout.

Ainsi, si le fichier d'échange n'est pas fragmenté, c'est exactement comme s'il y avait une partition d'échange à son même emplacement. Ou, autrement dit, vous obtiendriez des performances identiques si vous utilisiez une partition de swap brute ou la formatiez avec un système de fichiers, puis créiez un fichier de 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 l'on crée le fichier d'échange lorsque le système de fichiers est frais (garantissant ainsi qu'il n'est pas fragmenté et au début du volume), les performances doivent être identiques à celles d'une partition d'échange juste avant le volume. De plus, si l'on crée le fichier d'échange, disons au milieu du volume, avec des fichiers de chaque côté, on peut obtenir de meilleures performances, car il y a moins de recherche à échanger.

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

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

33
Shay

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

La création d'un fichier "normal" avec dd allouera le fichier (si possible) en une seule fois, tandis que la création d'un fichier clairsemé vous dira que vous avez un fichier de 10 Go qui traîne mais que vous n'utilisez pas réellement tout l'espace. Je ne sais pas si mkswap n'allouera pas de toute façon l'espace mais généralement un fichier d'échange augmentera dans le temps et n'allouera donc pas un secteur continu (comme dans une partie du disque) mais allouera plutôt des blocs selon les besoins qui conduisent à 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 pour l'instant ce qui se passe sous le capot, vous devez me faire confiance sur celui-ci à moins que quelqu'un ne trouve quelque chose de plus officiel. Tout ce que je peux trouver maintenant, c'est:

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

Si vous voulez des performances optimales (et qu'est-ce que c'est vraiment? ... l'échange est lent, point. Augmentez RAM pour ne pas échanger pour meilleures performances), vous voudriez utiliser une partition.

25
serverhorror

C'est une question intéressante et j'ai beaucoup lu sur la même chose. En général, une partition de swap est meilleure qu'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, il était considéré qu'une partition de swap est 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 aussi trouvé sur Internet.

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

et

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

3
Viky

Je pense qu'au stade où nous en sommes, à moins que vous n'utilisiez un ordinateur portable avec une configuration qui écrit les données dans le swap quand il se suspend/s'endort, le swap devrait vraiment être considéré comme "en dernier recours". Votre meilleur pari est de mettre suffisamment de RAM dans une boîte pour qu'il ne se déplace jamais sur le disque.

Cela étant dit, une partition est probablement la meilleure façon, en termes de performances, bien qu'un fichier soit plus flexible. Assurez-vous simplement qu'il est sur une broche 7200+ RPM.

2
Matt Simmons

La pensée de notre travail est que, comme 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, la définition d'un fichier d'échange de taille statique fait à 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 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 SSD). L'augmentation de la taille des disques signifie que la partition de swap que nous créons est plus proche du début du disque qu'elle ne l'était lorsque les disques de 18 Go étaient livrés en standard, donc les vitesses de swap sont encore plus rapides qu'elles ne l'étaient autrefois.

Bien sûr, sur nos systèmes Windows basés sur ESX, la position du fichier d'échange est complètement, complètement théorique. 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 gardons sur une partition séparée car c'est juste la norme.

2
sysadmin1138

L'utilisation d'un fichier d'échange peut utiliser un peu de mémoire supplémentaire 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, uniquement les données organisationnelles, qui devraient être la plupart des besoins en mémoire supplémentaire.

En outre, je doute que vous perdrez toute performance raisonnable, sauf peut-être une fois sur 1000 fois une seule recherche de tête supplémentaire.

Fait amusant, l'utilisation de zswap avec un fichier de swap à expansion dynamique entraîne une accélération impressionnante des opérations de swap à très peu de frais tout en étant inutilisé.

0
Crass Spektakel