Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
windows:swap [Le 02/11/2007, 11:56]
bruno
windows:swap [Le 21/01/2010, 12:54]
frombenny déplacement page windows/swap vers swap
Ligne 2: Ligne 2:
  
 ---- ----
 +
  
 ====== SWAP ====== ====== SWAP ======
  
-Le **swap** (parfois appelé mémoire virtuelle) est un espace réservé sur le disque dur servant à décharger la mémoire physique (RAM) lorsque celle-ci arrive à saturation. Le swap peut être un fichier, on parle alors de **fichier d'​échange** ou une partition dédiée à cette usage, on parle alors de **partition d'​échange**.+Le **swap** (parfois appelé mémoire virtuelle) est un espace réservé sur le disque dur servant à décharger la mémoire physique (RAM) lorsque celle-ci arrive à saturation. Le swap peut être un fichier, on parle alors de **fichier d'​échange**ou une partition dédiée à cet usage, on parle alors de **partition d'​échange**.
  
-N.B. : Lorsque ​la mémoire ​arrive à saturation et que l'​espace d'​échange commence à être utilisé par les système, celui-ci se trouve fortement ralenti. En effet les échanges de données avec le disque dur sont beaucoup plus lent qu'​avec la mémoire physique.+N.B. : Les performances du swap sont bien moins bonnes que celles de la mémoire ​physique. En effetles échanges de données avec le disque dur sont beaucoup plus lents qu'​avec la mémoire physique. L'​utilisation du swap ralentit donc significativement le système, et entraîne une activité permanente du disque dur (bruits de "​grattements"​),​ symptôme classique des PC en fin de vie.
  
 ===== Comparaison entre GNU/Linux et Windows ===== ===== Comparaison entre GNU/Linux et Windows =====
Ligne 13: Ligne 14:
 ==== GNU/Linux ==== ==== GNU/Linux ====
  
-Sous GNU/Linux, le swap correspond généralement à une partition dédiée de taille fixe ayant son propre système de fichier. Sur les distributions récentes comme Ubuntu, une partition de swap est créée automatiquement lors de l'​installation. En principe la taille de cette partition est égale ​à la quantité de mémoire ​ (RAM) installée+Sous GNU/Linux, le swap est traditionnellement ​une partition dédiée de taille fixe. Sur les distributions récentes comme Ubuntu, une partition de swap est créée automatiquement lors de l'​installation. En principela taille de cette partition est fixée ​à la quantité de mémoire (RAM) installée.
-On peut également utiliser un fichier d'​échange sous GNU/Linux, en plus ou la place d'une partition d'​échange.+
  
 +Il est cependant possible d'​utiliser un fichier d'​échange plutôt qu'une partition (cf fin de page).
 ==== Windows ==== ==== Windows ====
  
-Par défaut sous Windows, le swap n'est pas présenté comme une partition : c'est un gros fichier fragmentable géré par Windows. Ce fichier se nomme « Win386.swp » (95, 98, Me) ou « pagefile.sys » (NT, 2000, XP), et est par défaut dans « C: ». Pour modifier sa taille et son emplacement,​ on peut passer par le panneau de configuration (//Système → Performances → Mémoire virtuelle//​). Attribuer une taille fixe au fichier d'​échange de Windows peut éventuellement améliorer les performances.+Par défaut sous Windows, le swap n'est pas présenté comme une partition : c'est un gros fichier fragmentable géré par Windows. Ce fichier se nomme « Win386.swp » (95, 98, Me) ou « pagefile.sys » (NT, 2000, XP, Vista), et est par défaut dans « C: ». Pour modifier sa taille et son emplacement,​ on peut passer par le panneau de configuration (//Système → Performances → Mémoire virtuelle//​).
  
 ===== Taille d'une partition de swap ===== ===== Taille d'une partition de swap =====
  
 +<note important>​ Si la taille du swap est inférieure à celle de votre mémoire vive (RAM), il sera impossible d'​utiliser la fonction "​hibernation"​ d'​Ubuntu </​note>​
  
-==== Sous GNU/Linux ====+Cela dépend de votre RAM (mémoire vive) et de votre utilisation. Le risque si le swap est trop petit (ou inexistant) est que le système se comporte de façon erratique, voire plante complètement. Inversement,​ si le swap est trop gros, c'est autant de place en moins pour vos fichiers.
  
-Cela dépend ​de votre RAM (mémoire vive) et de votre utilisation+On retiendra que, pour une utilisation bureautique,​ 1 Gio de mémoire vive (RAMsuffit largement. Au-delà, il est inutile d'​avoir une partition swap. Si vous n'avez pas autant ​de RAM, il est donc conseillé de créer une partition swap complétant ​votre mémoire vive, dont la taille est au moins de : 1 Gio moins votre mémoire vive.
  
-Même si l'on peut complètement se passer ​de swap, notamment sur des machines ayant beaucoup de RAM, il est conseillé ​d'utiliser ​une partition ​d'échange ​d'au moins 128Mio. +Si votre utilisation ​de Ubuntu ​est plus intensive, comme pour le traitement ​d'images haute définition,​ le montage vidéo, ou si vous souhaitez tout simplement être sûr que votre système ne manquera pas de mémoire, vous pouvez tout de même créer ​une partition ​swap, dont la taille devrait être de l'ordre de quelques Gio. Il est difficile ​d'être plus précis dans la mesure où cela dépend beaucoup ​de l'​utilisation de votre ordinateur.
-Si votre machine n'a aucun espace de swap et que la mémoire physique arrive à saturation, le système risque ​de se bloquer complètement.+
  
-Il n'y a  pas de règle absolue en matière de taille ​de partition de swap, tout dépend ​de l'​usage que vous faites de votre machineCependant, sous Linux la partition de swap est également ​utilisée pour mettre le système en hibernation : les données ​en RAM sont copiées dans la partition de swap lors de l'​hibernation ​et restaurées lors du redémarrage. +Enfin, si vous souhaitez utiliser la fonction "​hibernation"​ d'Ubuntu, il faut que la taille ​du swap soit supérieure à celle de la mémoire viveEn effet, sous Ubuntu, ​la partition de swap est utilisée pour enregistrer ​les données ​de la mémoire vive durant ​l'​hibernation.
-Donc si vous utilisez un ordinateur portable ou que vous voulez utiliser les fonctions d'​hibernation,​ votre partition d'​échange doit faire au moins la taille de votre RAM. +
-Enfin, vu la taille des disques dur actuels, rien ne vous empêche de créer une partition de swap de deux fois la taille de votre RAM ; 2Gio par exemple si vous avez 1Gio de RAM. +
-Idéalement,​ vous devez décider de la taille de vos partitions d'​échange au moment de l'​installation.+
  
 +Il est préférable de fixer la taille de la partition swap durant l'​installation. Néanmoins, il est possible de la modifier par la suite, mais c'est une opération légèrement risquée pour vos données.
  
 +===== Modifier le swap après l'​installation (avancé) =====
  
-==== Sous Windows ==== +<note important>​Modifier les partitions après l'installation ​est toujours une opération risquéeAssurez-vous d'avoir sauvegardé toutes vos données sur un autre support au préalable.</​note>​
- +
-Sous Windows, c'​est ​géré différemment,​ on conseille souvent plutôt 1.5x/2x la taille de votre RAM. D'​autre ​part sous Windows certaines applications utilisent leur propre espace d'​échange. +
- +
- +
-===== Modifier le swap après l'​installation (expert) =====+
  
 ==== Outils avec interface graphique ==== ==== Outils avec interface graphique ====
  
-Vous pouvez utiliser les outils de partitionnement en mode graphique fournis avec Ubuntu : Gparted (ou Qtparted pour Kubuntu) pour créer/​modifier/​redimensionner vos partitions, à condition que celle-cis ne soient pas en cours d'​utilisation par le système.+Vous pouvez utiliser les outils de partitionnement en mode graphique fournis avec Ubuntu : **Gparted** (**Qtparted** pour Kubuntu) pour créer/​modifier/​redimensionner vos partitions, à condition que celles-ci ne soient pas en cours d'​utilisation par le système.
  
-<note important>​Modifier les partitions après l'​installation est toujours ​une opération risquée. Assurez-vous d'​avoir sauvegardé toutes vos données sur un autre support au préalable.</​note>​+Si vous avez besoin de modifier ​une partition utilisée par le système en permanence, utilisez un [[live_cd|live-cd]].
  
 +Le  [[live_cd|live-cd]] utilise la partition swap du système (si elle existe). Pour pouvoir la modifier (ou modifier la partition étendue parente), il vous faudra désactiver le swap (dans gparted : Menu Partition > désactiver le swap).
  
-===== Outils en ligne de commande ​=====+==== Outils en ligne de commande ====
  
 Il existe plusieurs outils en ligne de commande pour gérer vos partitions, les plus connus étant **fdisk** et **cfdisk**. Ces outils s'​utilisent avec les mêmes précautions et restrictions que celles indiquées ci-dessus pour gparted. Il existe plusieurs outils en ligne de commande pour gérer vos partitions, les plus connus étant **fdisk** et **cfdisk**. Ces outils s'​utilisent avec les mêmes précautions et restrictions que celles indiquées ci-dessus pour gparted.
 +===== Activer/​Désactiver l'​utilisation du swap =====
  
-=== Activer/​Désactiver le swap === +Les commandes **swapon/swapoff** permettent respectivement d'​activer ou désactiver le swap sans redémarrage du système. Exemple :
- +
-Les commandes **swapon/swappoff** permettent respectivement d'​activer ou désactiver le swap sans redémarrage du système. Exemple :+
 <​code>​ <​code>​
 sudo swapoff /dev/sda6 sudo swapoff /dev/sda6
 </​code>​ </​code>​
-désactivera la partition d'​échange présente sur /dev/hda6+désactivera la partition d'​échange présente sur /dev/sda6
 <​code>​ <​code>​
 sudo swapon /dev/sda6 sudo swapon /dev/sda6
 </​code>​ </​code>​
-activera la partition d'​échange présente sur /dev/hda6+activera la partition d'​échange présente sur /dev/sda6 
 + 
 +<note tip> 
 +Si votre swap est utilisé alors qu'il y a encore de la place dans la RAM, il est possible de le vider avec les deux commandes ci-dessous : 
 +<​code>​ 
 +sudo swapoff -a 
 +sudo swapon -a 
 +</​code>​ 
 +</​note>​
  
 === Définir une partition comme partition d'​échange === === Définir une partition comme partition d'​échange ===
Ligne 80: Ligne 83:
 </​code>​ </​code>​
  
-Pour rendre cette modification permanente vous devrez également modifier votre fichier /etc/fstab pour y modifier ou ajouter une ligne du type :+Pour rendre cette modification permanente vous devrez également modifier votre fichier ​**/etc/fstab** pour y modifier ou ajouter une ligne du type :
 <​code>​ <​code>​
 # /dev/sda6 # /dev/sda6
-UUID=db245df9-851d-695b-a3f7-d40f039a6cc6 none            swap    sw +UUID=db245df9-851d-695b-a3f7-d40f039a6cc6 none            swap    sw      ​0 ​     0
 </​code>​ </​code>​
  
-<​note>​L'​UUID de la partition a dû être affiché par la commande **mkswap**sinon vous pouvez l'​obtenir avec la commande ​**sudo vol_id ​/dev/sda6**</note>+Et afin que vos mises en veille et hibernations se produisent correctement, vous devrez de même modifier le fichier ​**/etc/initramfs-tools/​conf.d/​resume** pour y renseigner le bon UUID :  
 +<​code>​ 
 +RESUME=UUID=db245df9-851d-695b-a3f7-d40f039a6cc6 
 +</code> 
 +et ensuite, le faire prendre en compte par le système : 
 +<​code>​ 
 +sudo update-initramfs -u -k $(uname -r) 
 +</​code>​ 
 +Il vaut mieux, après cela, redémarrer la machine.
  
 +<​note>​L'​UUID de la partition a dû être affiché par la commande **mkswap**, sinon vous pouvez l'​obtenir avec la commande <​code>​sudo vol_id /​dev/​sda6</​code></​note>​
  
-=== Définir une fichier comme fichier d'​échange === 
  
-La procédure est presque la même que ci-dessus. Vous devez d'​abord créer un fichier non fragmenté avec la commande **dd**, par exemple pour créer un fichier file.swap dans le répertoire racine, de 512Mio :+===== Définir un fichier comme fichier d'​échange (avancé) ===== 
 + 
 +La procédure est presque la même que ci-dessus. Vous devez d'​abord créer un fichier ​de préférence ​non fragmenté avec la commande **dd**, par exemple pour créer un fichier file.swap dans le répertoire racine, de 512Mio :
  
 <​code>​sudo dd if=/​dev/​zero of=/​file.swap bs=512M count=1</​code>​ <​code>​sudo dd if=/​dev/​zero of=/​file.swap bs=512M count=1</​code>​
 +
 +Si vous obtenez comme message :
 +
 +<​code>​
 +dd: Mémoire épuisée
 +</​code>​
 +
 +Alors qu'il vous reste pourtant assez de place sur le disque, il se peut que vous n'ayez pas assez de ram pour créer ce fichier en un seul morceau, ou que vous n'ayez pas 512Mo de place contiguë pour créer le fichier. Dans ce cas, essayez de créer le fichier en plusieurs morceaux, par exemple en faisant :
 +
 +<​code>​sudo dd if=/​dev/​zero of=/​file.swap bs=256M count=2</​code>​
 +
 +Cette commande aura pour effet de créer un fichier de 512Mo en 2 morceaux de 256Mo. Essayez de trouver le bon compromis bs/count qui permette à la commande dd de fonctionner,​ sachant que les performances seront d'​autant meilleures que le fichier swap sera peu fragmenté(([[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=234296|Topic]] à ce sujet)).
  
 On définit ensuite ce fichier comme un fichier d'​échange : On définit ensuite ce fichier comme un fichier d'​échange :
Ligne 108: Ligne 133:
 Pour rendre cette modification permanente vous devrez également modifier votre fichier /etc/fstab pour y modifier ou ajouter une ligne du type : Pour rendre cette modification permanente vous devrez également modifier votre fichier /etc/fstab pour y modifier ou ajouter une ligne du type :
 <​code>​ <​code>​
-# /file.swap +# /file.swap UUID=ee43e097-dc53-4635-a21c-4b61bbd8a2f1 none          swap    sw 
-UUID=ee43e097-dc53-4635-a21c-4b61bbd8a2f1 none            swap    sw +/​file.swap ​ none   ​swap ​  ​sw ​  ​0 ​  ​0 ​
 </​code>​ </​code>​
  
 <​note>​L'​UUID de la pseudo-partition a dû être affiché par la commande **mkswap**, sinon vous pouvez l'​obtenir avec la commande **sudo vol_id /​file.swap**</​note>​ <​note>​L'​UUID de la pseudo-partition a dû être affiché par la commande **mkswap**, sinon vous pouvez l'​obtenir avec la commande **sudo vol_id /​file.swap**</​note>​
 +
 +la commande pour verifier:
 +<​code>​
 + ​swapon -s
 +Filename Type Size Used Priority
 +/​dev/​sda6 ​                              ​partition 1052216 0 -3
 +</​code>​
 +
 +<​note>​Dans les colonnes "​Filename"​ et "​Type",​ le résultat dépend de l'​option pour laquelle vous avez opté pour le swap (partition ou fichier)
 +Dans le cas d'un "​fichier swap", vous obtiendrez un résultat de ce type:
 +<​code>​
 +swapon -s
 +Filename Type Size Used Priority
 +/​file.swap ​                             file 1048568 0 -1
 +</​code>​
 +
 +Le résultat affiché dans la colonne "​Size"​ dépend de la taille que vous avez assigné à votre fichier ou votre partition swap lors de sa création.</​note>​
 +
 +===== Régler le déclenchement du swap =====
 +
 +Par défaut, Ubuntu est réglé de cette façon : 
 +
 +À partir de 40% d'​utilisation de la RAM (donc 60% de libre), le noyau peut se délester sur la swap.
 +
 +On peut le vérifier grâce à la commande :
 +<​code>​
 +cat /​proc/​sys/​vm/​swappiness
 +60
 +</​code>​
 +
 +Pour changer ce réglage, utilisez la commande ci-dessous :
 +
 +(Dans cet exemple, le réglage passe à 20% de RAM inutilisée)
 +<​code>​
 +sudo sysctl vm.swappiness=20
 +</​code>​
 +
 +Ensuite désactivez puis réactivez la swap pour que les changements deviennent actifs :
 +<​code>​
 +sudo swapoff -av
 +</​code>​
 +La réponse ressemble à :
 +<​code>​
 +swapoff sur /​dev/​ramzswap0
 +swapoff sur /dev/sda6
 +</​code>​
 +Puis
 +<​code>​
 +sudo swapon -av
 +</​code>​
 +La réponse ressemble à :
 +<​code>​
 +swapon sur /dev/sda6
 +</​code>​
 +
 +Pour que ces changements deviennent permanents (à chaque démarrage),​ vous devez [[:​tutoriel:​comment_editer_un_fichier|éditer le fichier]] **/​etc/​sysctl.conf** et y ajouter la ligne suivante:
 +
 +<​code>​vm.swappiness = 20</​code>​
 +
 +Plus d'​infos sur cette manipulation sur [[http://​pro.anapivirtua.com/​index.php/​2009/​05/​01/​on-tas-deja-dit-que-tavais-un-beau-swap/​|ce site]] (Fr) ou [[http://​kerneltrap.org/​node/​3000|celui-ci]] (En)
 +
 +----
 +===== Liens =====
 +
 +  * [[https://​help.ubuntu.com/​community/​SwapFaq|Ubuntu Forum SwapFaq]] (en)
 +  * [[http://​www.cyberciti.biz/​faq/​linux-add-a-swap-file-howto/​example.com|Linux add a swap file howto]] (en)
 +
 +----
 +
 +//​Contributeurs : foustala, laurentb, krop, huit_six, claudiux, SeTtHe, [[utilisateurs:​fnx]]
 +//