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
Prochaine révision Les deux révisions suivantes
swap [Le 14/08/2013, 22:12]
Aurel88 [Régler le déclenchement du swap] Correction d'un problème de syntaxe
swap [Le 15/02/2017, 19:20]
41.227.251.90 [Espace d'échange (swap)]
Ligne 4: Ligne 4:
  
 ====== Espace d'​échange (swap) ====== ====== Espace d'​échange (swap) ======
-L'​**espace d'​échange**, ​plus généralement appelée ​par son terme anglais **swap space** ou simplement **swap**, est une zone d'un disque dur faisant partie de la //mémoire virtuelle//​((La mémoire virtuelle est composée de la mémoire vive physique (RAM) et de l'​espace d'​échange.)) de votre ordinateur. Il est utilisé pour décharger la mémoire vive physique (RAM) de votre ordinateur lorsque celle-ci arrive à saturation. L'​espace d'​échange,​ dans Ubuntu, se trouve généralement sous une forme de partition de disque dur -- on parle alors de //partition d'​échange//​. Il peut aussi se présenter sous forme de fichier -- on parle alors de //fichier d'​échange//​.+L'​**espace d'​échange**, ​aussi appelé ​par son terme anglais **swap space** ou simplement **swap**, est une zone d'un disque dur faisant partie de la //mémoire virtuelle//​((La mémoire virtuelle est composée de la mémoire vive physique (RAM) et de l'​espace d'​échange.)) de votre ordinateur. Il est utilisé pour décharger la mémoire vive physique (RAM) de votre ordinateur lorsque celle-ci arrive à saturation. L'​espace d'​échange,​ dans Ubuntu, se trouve généralement sous une forme de partition de disque dur -- on parle alors de //partition d'​échange//​. Il peut aussi se présenter sous forme de fichier -- on parle alors de //fichier d'​échange//​.
  
 Par défaut, Ubuntu calcule et s'​attribue automatiquement un espace d'​échange suffisant ou recommandé lors de son installation. Il n'est pas nécessaire d'​effectuer des tâches supplémentaires pour assigner un espace d'​échange minimum à Ubuntu. Cependant, évaluer ses besoins en espace d'​échange peut mieux rationaliser vos ressources. Par défaut, Ubuntu calcule et s'​attribue automatiquement un espace d'​échange suffisant ou recommandé lors de son installation. Il n'est pas nécessaire d'​effectuer des tâches supplémentaires pour assigner un espace d'​échange minimum à Ubuntu. Cependant, évaluer ses besoins en espace d'​échange peut mieux rationaliser vos ressources.
  
-Le présent document se veut être une présentation succincte de ce qu'est l'​espace d'​échange dans Ubuntu et des méthodes pour créer, modifier et supprimer ​de l'espace d'​échange. +Le présent document se veut être une présentation succincte de ce qu'est l'​espace d'​échange dans Ubuntu et des méthodes pour créer, modifier et supprimer ​cet espace d'​échange.
  
  
Ligne 17: Ligne 16:
 Notez cependant que l'​espace d'​échange se situant dans votre disque dur, l'​accès aux données contenues dans celui-ci est plus lent que celles contenues directement dans la RAM. De plus, l'​utilisation de l'​espace d'​échange ralentit significativement le système et entraîne une activité permanente du disque dur (bruits de "​grattements"​),​ provoquant une usure prématurée du matériel. De ce fait, l'​espace d'​échange ne doit pas être considéré comme un remplacement de votre mémoire vive physique, mais plutôt comme un mécanisme d'​appoint. Notez cependant que l'​espace d'​échange se situant dans votre disque dur, l'​accès aux données contenues dans celui-ci est plus lent que celles contenues directement dans la RAM. De plus, l'​utilisation de l'​espace d'​échange ralentit significativement le système et entraîne une activité permanente du disque dur (bruits de "​grattements"​),​ provoquant une usure prématurée du matériel. De ce fait, l'​espace d'​échange ne doit pas être considéré comme un remplacement de votre mémoire vive physique, mais plutôt comme un mécanisme d'​appoint.
  
-La plupart des systèmes d'​exploitation -- sinon tous -- gèrent un espace d'​échange. Avec les systèmes d'​exploitation de type GNU/Linux, dont fait partie Ubuntu, cette zone d'​échange se présente généralement sous la forme d'une partition de disque dur dédiée à cet effet. À titre comparatif, Microsoft(r) Windows(r) utilise un ou des fichiers dans chacun de ses volumes afin de jouer ce rôle. Il est aussi possible, dans Ubuntu, ​de créer et utiliser des fichiers assurant un espace d'​échange.+La plupart des systèmes d'​exploitation -- sinon tous -- gèrent un espace d'​échange. Avec les systèmes d'​exploitation de type GNU/Linux, dont fait partie Ubuntu, cette zone d'​échange se présente généralement sous la forme d'une partition de disque dur dédiée à cet effet. À titre comparatif, Microsoft(r) Windows(r) utilise un ou des fichiers dans chacun de ses volumes afin de jouer ce rôle. Il est aussi possible de créer et utiliser des fichiers assurant un espace d'​échange.
  
  
Ligne 25: Ligne 24:
   * **Votre ordinateur dispose de 1 Gio de RAM ou plus ?** Allouez un espace d'​échange de 1× à 1,5× la taille de votre RAM ;   * **Votre ordinateur dispose de 1 Gio de RAM ou plus ?** Allouez un espace d'​échange de 1× à 1,5× la taille de votre RAM ;
   * **Votre ordinateur dispose de moins de 1 Gio de RAM ?** Allouez un espace d'​échange de 1,5× à 2× la taille de votre RAM.   * **Votre ordinateur dispose de moins de 1 Gio de RAM ?** Allouez un espace d'​échange de 1,5× à 2× la taille de votre RAM.
- 
 ==== Pourquoi ai-je besoin d'un espace d'​échange ? ==== ==== Pourquoi ai-je besoin d'un espace d'​échange ? ====
-  * **Utilisation de programmes exigeants en ressources :** Parfois, des programmes exigent beaucoup de ressources dans votre ordinateur (comme la suite bureautique [[LibreOffice]],​ des jeux tels [[AlienArena]] ou des logiciels de montage vidéo tels [[Cinelerra]]),​ ce qui amène votre ordinateur à nécessiter davantage de ressources que disponibles. Souvent, une partie de la mémoire vive utilisée au chargement de ces programme ​n'est réellement exploitée que lors de leur initialisation et n'est plus utilisée par la suite. Le système peut libérer des ressources en déplaçant de telles pages mémoire vers un espace d'​échange dans votre disque dur.+  * **Utilisation de programmes exigeants en ressources :** Parfois, des programmes exigent beaucoup de ressources dans votre ordinateur (comme la suite bureautique [[LibreOffice]],​ des jeux tels [[AlienArena]] ou des logiciels de montage vidéo tels [[Cinelerra]]),​ ce qui amène votre ordinateur à nécessiter davantage de ressources que disponibles. Souvent, une partie de la mémoire vive utilisée au chargement de ces programmes ​n'est réellement exploitée que lors de leur initialisation et n'est plus utilisée par la suite. Le système peut libérer des ressources en déplaçant de telles pages mémoire vers un espace d'​échange dans votre disque dur.
   * **Hibernation (mise en veille prolongée) :** La fonction d'​hibernation conserve votre système en l'​état actuel lors de la mise hors-tension de votre ordinateur, ce qui vous permet de reprendre plus rapidement votre travail là où vous l'avez laissé tout en ne consommant pas d'​énergie de votre pile ou de votre alimentation secteur. Techniquement,​ il s'agit d'une copie de l'​ensemble des informations contenues dans la mémoire vive de votre ordinateur vers l'​espace d'​échange de votre disque dur ; pour cette raison, une partition d'​échange au moins aussi grande que la quantité de votre mémoire vive est requise pour profiter de cette fonctionnalité.((L'​implémentation actuelle de l'​hibernation dans Ubuntu (swsusp) ne peut pas utiliser un espace d'​échange d'un fichier d'​échange situé dans un système de fichiers actif.))   * **Hibernation (mise en veille prolongée) :** La fonction d'​hibernation conserve votre système en l'​état actuel lors de la mise hors-tension de votre ordinateur, ce qui vous permet de reprendre plus rapidement votre travail là où vous l'avez laissé tout en ne consommant pas d'​énergie de votre pile ou de votre alimentation secteur. Techniquement,​ il s'agit d'une copie de l'​ensemble des informations contenues dans la mémoire vive de votre ordinateur vers l'​espace d'​échange de votre disque dur ; pour cette raison, une partition d'​échange au moins aussi grande que la quantité de votre mémoire vive est requise pour profiter de cette fonctionnalité.((L'​implémentation actuelle de l'​hibernation dans Ubuntu (swsusp) ne peut pas utiliser un espace d'​échange d'un fichier d'​échange situé dans un système de fichiers actif.))
   * **Circonstances imprévues :** Des évènements imprévisibles peuvent survenir lors de l'​utilisation de votre système (un programme ayant une fuite de mémoire, une action qui a besoin davantage de mémoire pour un court laps de temps ou une combinaison de ces évènements). Disposer d'un espace d'​échange vous offre un sursis pour localiser le problème ou, à tout le moins, terminer votre travail en cours.   * **Circonstances imprévues :** Des évènements imprévisibles peuvent survenir lors de l'​utilisation de votre système (un programme ayant une fuite de mémoire, une action qui a besoin davantage de mémoire pour un court laps de temps ou une combinaison de ces évènements). Disposer d'un espace d'​échange vous offre un sursis pour localiser le problème ou, à tout le moins, terminer votre travail en cours.
Ligne 83: Ligne 81:
   - Activez la prise en charge de ce nouvel espace d'​échange. Utilisez la commande ''​swapon''​ : <​code>​sudo swapon <nom du fichier></​code>​   - Activez la prise en charge de ce nouvel espace d'​échange. Utilisez la commande ''​swapon''​ : <​code>​sudo swapon <nom du fichier></​code>​
     * Par exemple, pour activer la prise en charge de l'​espace d'​échange sur le fichier ''​file.swap''​ situé à la racine d'​Ubuntu,​ on utilisera la commande suivante : <​code>​sudo swapon /​file.swap</​code>​     * Par exemple, pour activer la prise en charge de l'​espace d'​échange sur le fichier ''​file.swap''​ situé à la racine d'​Ubuntu,​ on utilisera la commande suivante : <​code>​sudo swapon /​file.swap</​code>​
 +  - Rendez disponible le fichier d'​échange à chaque démarrage en éditant le fichier /etc/fstab et lui ajoutant : <​code>#​Entry for /swapfile :
 +/file.swap none swap defaults 0 0</​code>​
 +
  
 \\  \\ 
Ligne 125: Ligne 126:
 </​note>​ </​note>​
  
-=== Définir une partition comme partition d'​échange ===+==== Définir une partition comme partition d'​échange ​====
  
 La commande **mkswap** permet de définir une partition ou un fichier comme espace d'​échange. Exemple pour définir la partition /dev/sda6 comme partition d'​échange : La commande **mkswap** permet de définir une partition ou un fichier comme espace d'​échange. Exemple pour définir la partition /dev/sda6 comme partition d'​échange :
Ligne 155: Ligne 156:
  
 <​note>​L'​UUID de la partition a dû être affiché par la commande **mkswap**, sinon vous pouvez l'​obtenir avec la commande <​code>​sudo blkid /​dev/​sda6</​code></​note>​ <​note>​L'​UUID de la partition a dû être affiché par la commande **mkswap**, sinon vous pouvez l'​obtenir avec la commande <​code>​sudo blkid /​dev/​sda6</​code></​note>​
 +
 +<​note>​L'​UUID de la partition peut-être réécrite en employant la commande **mkswap**: <​code>​sudo mkswap -U <​l'​UUID desirée>​ /​dev/<​votre partition></​code></​note>​
  
  
 <note important>​ <note important>​
-la page anglophone [[https://​help.ubuntu.com/​community/​SwapFaq#​How_do_I_add_more_swap.3F]] donne une version légèrement différente de la procédure pour définir une partition comme partition d'​échange. En particulier,​ elle conseille de vérifier aussi le fichier de parametres ​de grub (**/​etc/​default/​grub**) pour qu'il contienne la ligne:<​code>​+La page anglophone [[https://​help.ubuntu.com/​community/​SwapFaq#​How_do_I_add_more_swap.3F]] donne une version légèrement différente de la procédure pour définir une partition comme partition d'​échange. En particulier,​ elle conseille de vérifier aussi le fichier de paramètres ​de grub (**/​etc/​default/​grub**) pour qu'il contienne la ligne :<​code>​
 GRUB_CMDLINE_LINUX="​resume=UUID=<​votre_uuid>"​ GRUB_CMDLINE_LINUX="​resume=UUID=<​votre_uuid>"​
-</​code>​Sur mon système (11.04 32 bits) j'​ai ​du modifier cette ligne (ainsi que /​etc/​initramfs-tools/​conf.d/​resume) et actualiser grub (comme indiqué dans la doc citée), avant de réactualiser initramfs, pour que l'​hibernation fonctionne. Petit détail cependant : mon deuxième //sudo update-initramfs//​ n'​avait pas comme option //-k $(uname -r)//, mais d'​après //man update-initramfs//​ je pense que cela ne devrait pas être la source de la différence de comportement.+</​code>​Sur mon système (11.04 32 bits) j'​ai ​dû modifier cette ligne (ainsi que /​etc/​initramfs-tools/​conf.d/​resume) et actualiser grub (comme indiqué dans la doc citée), avant de réactualiser initramfs, pour que l'​hibernation fonctionne. Petit détail cependant : mon deuxième //sudo update-initramfs//​ n'​avait pas comme option //-k $(uname -r)//, mais d'​après //man update-initramfs//​ je pense que cela ne devrait pas être la source de la différence de comportement.
 </​note>​ </​note>​
  
 ==== Optimiser son espace d'​échange (avancé) ==== ==== Optimiser son espace d'​échange (avancé) ====
 Puisque l'​espace d'​échange se trouve dans le disque dur, ceci peut causer quelques problèmes de performances dans un système l'​utilisant massivement,​ car le système peut essayer de lire et écrire à la fois des pages mémoire dans l'​espace d'​échange et des fichiers situés ailleurs dans le disque dur. Une manière de réduire cet effet de compétition d'​accès aux ressources du disque dur consiste à fractionner l'​espace d'​échange sur plusieurs disques durs physiques. Ainsi, l'​espace d'​échange étant partagé entre plusieurs périphériques,​ la compétition pour l'​accès aux ressources est réduite -- voire éliminée. Puisque l'​espace d'​échange se trouve dans le disque dur, ceci peut causer quelques problèmes de performances dans un système l'​utilisant massivement,​ car le système peut essayer de lire et écrire à la fois des pages mémoire dans l'​espace d'​échange et des fichiers situés ailleurs dans le disque dur. Une manière de réduire cet effet de compétition d'​accès aux ressources du disque dur consiste à fractionner l'​espace d'​échange sur plusieurs disques durs physiques. Ainsi, l'​espace d'​échange étant partagé entre plusieurs périphériques,​ la compétition pour l'​accès aux ressources est réduite -- voire éliminée.
 +
 +==== Optimiser son espace d'​échange (avancé mais très simple) avec ZRAM ====
 +[[:zRAM]] permet de compresser la RAM si besoin, afin d'​éviter/​retarder le swap disque (car le swap disque est de nos jours très lent par rapport à la vitesse de traitement en RAM, même sur les anciennes machines avec peu de RAM le bénéfice est généralement visible)
  
  
Ligne 171: Ligne 177:
 ==== Régler le déclenchement du swap ==== ==== Régler le déclenchement du swap ====
  
-<note tip>​Personnellement,​ pour ma vieille tour (1,4Ghz pour 512 Mio de RAM), j'ai réglé le déclenchement de la swap à 5% de RAM libre. ​Le vidage ​de la RAM consomme des ressources. Plus le vidage ​se déclenchera tard moins les ressources seront utilisées.</​note>​+<note tip>​Personnellement,​ pour ma vieille tour (1,4Ghz pour 512 Mio de RAM), j'ai réglé le déclenchement de la swap à 5% de RAM libre. ​La copie de la RAM vers la swap consomme des ressources. Plus cette copie se déclenchera tard moins les ressources seront utilisées.</​note>​
  
-Par défaut, ​Ubuntu ​est réglé de cette façon : +=== Réglage permanent dans Ubuntu ​14.04 et 16.04 ( Systemd )===
  
-À partir de 40% d'​utilisation de la RAM (**donc 60% de libre**), le noyau peut se délester sur la swap.+Régler le déclenchement du swap dès que la mémoire est utilisée a 95%. 
 + 
 +  * Remplacer le 5 dans la ligne de commande ​ **//​vm.swappiness=5//​** ​ par 10 pour déclencher l'​utilisation du swap des 90% d'​utilisation de la mémoire. 
 +  * ** //​vm.vfs_cache_pressure=50//​** ​ permet de garder plus de liens vers les fichiers en mémoire, pour accélérer l’accès aux fichiers. 
 + 
 + 
 + 
 +<​code>​echo vm.swappiness=5 | sudo tee /​etc/​sysctl.d/​99-swappiness.conf 
 +echo vm.vfs_cache_pressure=50 | sudo tee -a /​etc/​sysctl.d/​99-swappiness.conf 
 +sudo sysctl -p /​etc/​sysctl.d/​99-swappiness.conf</​code>​ 
 + 
 + 
 +=== Réglage dans Ubuntu 12.04 === 
 + 
 +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 copier une partie de la ram dans la swap.
  
 On peut le vérifier grâce à la commande : On peut le vérifier grâce à la commande :
 <​code>​ <​code>​
 cat /​proc/​sys/​vm/​swappiness cat /​proc/​sys/​vm/​swappiness
-60 
 </​code>​ </​code>​
 +qui (par défaut, donc) répond "​60"​.\\ \\ 
 Pour changer ce réglage, utilisez la commande ci-dessous : Pour changer ce réglage, utilisez la commande ci-dessous :
  
Ligne 207: Ligne 227:
 swapon sur /dev/sda6 swapon sur /dev/sda6
 </​code>​ </​code>​
 +
 +=== Réglage permanent dans Ubuntu 12.04 ===
  
 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 : 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>​ <​code>​vm.swappiness=20</​code>​
- +ou en une seule fois en utilisant ​la commande: <​code>​echo vm.swappiness=20 | sudo tee -a /​etc/​sysctl.conf</​code>​
-<note tip>Edit par fredr: pour rendre ces changements permanents, vous pouvez utiliser ​la commande: <​code>​echo vm.swappiness=20 | sudo tee -a /​etc/​sysctl.conf</​code>​ +
-</​note>​ +
  
 <note tip> <note tip>
 +Valeur de swappiness conseillée :
   * 2 à 3 Gio de RAM = 5 à 10   * 2 à 3 Gio de RAM = 5 à 10
   * PC avec SSD rapides = 15 à 20   * PC avec SSD rapides = 15 à 20
-  * Anciennes machines, disques ​et SSD lents = à 5+  * Anciennes machines, disques lents = à 5
 +</​note>​ 
 +<note warning>​Un swappiness à zéro, quoique possible, est déconseillé car il peut geler la machine dans certaines conditions de surcharge, cf. [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=1997443|cette discussion]]. 
 +</​note>​ 
 +<​note>​ 
 +Les SSD disposant d'un nombre limité de cycles d'​écriture,​ il est déconseillé d'y loger une partition swap ou un fichier d'​échange (voir [[:​ssd_solid_state_drive#​la_partition_d_echange_swap|ici]]) .
 </​note>​ </​note>​
  
Ligne 226: Ligne 250:
   * [[https://​help.ubuntu.com/​community/​SwapFaq|Ubuntu Forum SwapFaq]] (en)   * [[https://​help.ubuntu.com/​community/​SwapFaq|Ubuntu Forum SwapFaq]] (en)
   * [[http://​www.cyberciti.biz/​faq/​linux-add-a-swap-file-howto/​|Linux add a swap file howto]] (en)   * [[http://​www.cyberciti.biz/​faq/​linux-add-a-swap-file-howto/​|Linux add a swap file howto]] (en)
 +  * **Vidéo**: [[https://​www.youtube.com/​watch?​v=NCb4B0DAErc|Comprendre l’intérêt d'une RAM]]
  
 ---- ----
  • swap.txt
  • Dernière modification: Le 29/10/2023, 15:18
  • par ZavezPasVu