Difference between revisions of "Swap/fr"

(Created page with "Il y a moyen d'avoir à la fois une partition d'échange '''et''' un fichier swap. Utilisant cette méthode, vous évitera de devoir re-partionner votre disque.")
Tags: Mobile web edit Mobile edit
 
(74 intermediate revisions by 5 users not shown)
Line 5: Line 5:
=Aperçu=
=Aperçu=


L'espace d'échange (« swap » à partir de maintenant) est utilisé pour étendre la capacité de la mémoire vive (RAM) disponible pour exécuter des logiciels .
L'espace d'échange (« swap ») est utilisé pour étendre la capacité de mémoire vive (RAM) disponible sur la machine, afin d'exécuter des logiciels assez gourmand.
* Sans espace swap, vos applications ''se termineront'' jusqu'au point que le système d'exploitation complet se plante ou se gèle .
* Sans espace swap, des problèmes de mémoires peuvent apparaître, causant ainsi le retour du terrible OOM-killer. Ce programme sert à régler les problèmes du type OOM ("Out Of Memory", Plus d'espace mémoire), en mettant fin à des processus divers, allant de votre simple fichier LibreOffice, jusqu'au crash complet du système.
* Contrairement, si votre système possède d'un espace swap, le noyau Linux peut prendre les pages de mémoire des applications / services non-actives et les écrire sur disque (« swapping ») pour pouvoir récupérer plus de mémoire vive ( « RAM ») pour les applications actives .
* A l'inverse, si votre système possède un espace swap sur son disque dur, le noyau Linux pourra prendre la mémoire utilisée apr des applications, ou des services, inactifs et les écrire sur disque (action dite de « swapping »), et ce afin de récupérer plus de RAM.




Il y a trois moyens selon Manjaro peur utiliser la mémoire swap:
Il existe trois manières de gérer le SWAP sur Manjaro :
* Une partition swap
* Une partition Swap
* Un fichier swap
* Un fichier Swap
* zswap
* zswap




Cet article essaye d'être le plus complet que possible, mais si vous avez besoin de plus ample information, voyez [[Special:MyLanguage/#See_Also|articles liés en bas]]
Cet article essaye d'être le plus complet possible, mais si vous avez besoin de plus amples informations, jetez un oeil aux [[Swap#See_Also|articles liés]]
=Avez vous besoin de swap?=
= Ai-je besoin d'un espace Swap ?=


On ne peut pas répondre à cette question particulière sans les spécifications exactes de votre système .  Même des systèmes avec beaucoup de mémoire vive de disponible, le swap est utilisé comme filet de sécurité et dû à des applications avec des besoins très particuliers . En bas une liste non-exhaustive qui éclairci cette définition vague en plus de détails :
Répondre à cette question est un brin compliqué, surtout si nous n'avons pas pris connaissances des spécificités de votre système.  Même sur des systèmes avec beaucoup de RAM, le swap est utilisé comme sécurité, ou pour une utilisation avec des applications ayant des besoins bien particuliers. Voici une liste non-exhaustive des raisons qui peuvent vous pousser un créer ce fameux espace sur votre disque :
* Si vous utilisez de l'« hibernation » (mise en veille prolongée): ''oui, vous avez besoin de swap!''
* Si vous utilisez de l'« hibernation » (mise en veille prolongée): ''oui, vous avez besoin de swap!''
* Si vous avez des services qui ne sont pas toujours actives, mais qui tournent quand-même : ''oui, vous avez besoin de swap!''
* Si vous avez des services inactifs, ou partiellement inactifs, mais qui tournent quand-même en arrière plan : ''oui, vous avez besoin de swap!''
* Si vous avez une application qui alloue de la mémoire virtuelle directement comme stockuage et non du RAM :  ''oui, vous avez besoin de swap!''
* Si vous avez une application qui alloue de la mémoire virtuelle, directement comme stockage, et non comme RAM :  ''oui, vous avez besoin de swap!''
* Si vous avez une application qui contient une fuite de mémoire : ''oui, vous avez besoin de swap!''
* Si vous avez une application qui contient une fuite de mémoire : ''oui, vous avez besoin de swap !''
* Si vous possédez d'un serveur contenant 1TB de RAM que vous utilisez sans applications qui allouent de la mémoire virtuelle directement ou ayant des duites de mémoire : ''non, vous n'avez pas besoin de swap!''
* Si vous possédez un serveur contenant 1 TB (1000 GB) de mémoire vive, que vous n'utilisez pas d'applications allouant de la mémoire virtuelle directement, ou ayant des fuites de mémoire : ''non, vous n'avez pas besoin de swap!''
=Quelle est la taille de swap dont vous avez besoin?=
=Quelle taille mon Swap doit-il avoir ?=


La taille de swap est extrêmement variable et dépend de ''vos applications spécifiques'' et la façon dont vous les utilisez . Il n'y a pas de formule universelle sans surveillance de votre système surveillance sur une période de temps prolongée . Un bon point de départ sera :
La taille de swap est extrêmement variable et dépend de ''vos applications spécifiques'' et la façon dont vous les utilisez. Il n'existe aucune formule universelle sans connaissance des réactions de votre ssytème sur une période de temps prolongée. Un bon point de départ serait :
* Pour des systèmes contenant moins que 4GB de RAM, il est hautement recommandé que l'espace swap soit, au minimum, le double de la taille de votre RAM. Il es aussi recommandé que l'espace swap soit, au maximum, le double de votre RAM (dépendant de l'espace disque de disponible) en raison de rendements décroissants.
* Pour des systèmes ayant moins de 4 GB de RAM, il est fortement recommandé d'avoir un espace swap d'au minimum le double de la taille actuelle de votre mémoire vive. Ce minimum est aussi le maximum en raison de rendements décroissants liés à une trop grosse taille du Swap ("mieux vaut trop que pas assez" ne fonctionne pas dans ce genre de situation).
* Pour des systèmes plus récentes (>4GB), votre swap devra être au minimum égal à votre mémoire vive (RAM) '''si vous utilisez de l'hibernation'''. Sinon, vous avez besoin d'un minimum de l'arrondi supérieur de la racine carrée de votre RAM en GB. Le maximum est, de nouveau, le double de votre RAM en raison de rendements décroissants.
* Pour des systèmes plus récente (RAM > 4 GB), votre swap aura une taille équivalent à la racine carrée de l'espace en mémoire vive. Sinon, '''si vous utilisez l'hibernation''', vous aurez besoin au minimum de la racine carrée de votre RAM en GB, et au maximum, du double de votre RAM, toujours en raison des rendements décroissants.
* Le seul et unique désavantage d'avoir trop de swap, sera que l'espace disque alloué ne pourra pas être utilisé ni par des applications, ni pour stocker des données.
* Le seul et unique désavantage d'avoir trop de swap, sera que l'espace disque alloué ne pourra pas être utilisé ni par des applications, ni pour stocker des données.


Les "rendements décroissants" signifie qu'au cas ou vous avez besoin de plus de mémoire que le double de votre RAM, il vaut mieux rajouter du RAM puisque l'accès à un disque dur (HDD) est environs 10³ fois plus lent que la vitesse d'accès au RAM, donc une tâche qui prend 1 seconde en RAM, prendra 15 minutes en swap! Même sur un disque SSD la même opération d' une seconde prendra une minute entière avec un SSD.
"Rendements décroissants" signifie que, dans le cas vous auriez besoin de plus de mémoire que le double de votre RAM, il vaudrait mieux ajouter de la mémoire vive à votre système, puisque l'accès à un disque dur est environs 1 000 fois plus lent que la vitesse d'accès à la RAM ! Même sur un SSD, une opération restera beaucoup plus longue sur le disque que sur la RAM.


En distillant tout cela on arrive au tableau ci-dessous:
En distillant tout cela on arrive au tableau ci-dessous (les 3 dernières colonnes représentent le Swap dont vous aurez besoin) :
(Les dernières 3 colonnes sont le swap dont vous avez besoin)


         RAM  Sans hibernation    Avec hibernation  Maximum
         RAM  Sans hibernation    Avec hibernation  Maximum
Line 59: Line 58:
         4TB            64GB              4160GB      8TB
         4TB            64GB              4160GB      8TB
         8TB            91GB              8283GB    16TB
         8TB            91GB              8283GB    16TB
{{note|Le serveur le plus large qu'un des auteurs de ce wiki a jamais dû installer, contenait 8TB de RAM et se trouvait juste en dehors de Paris.}}
{{note|Pour l'anecdote, le serveur le plus large qu'un des auteurs de ce wiki dû un jour installer, contenait 8 TB de RAM, et possédait tout de même un espace d'échange, alors pourquoi pas la votre n'en aurez pas besoin ?}}
=Afficher de l'information sur le swap=
=Afficher les informations sur le Swap=


La commande {{ic|swapon}} vous affichera de l'information sur votre usage de swap actual. Par example:
La commande {{ic|swapon}} vous affichera les information relatif à l'utilisation du Swap actuellement. Par example:
  swapon
  swapon
  NAME      TYPE      SIZE  USED PRIO
  NAME      TYPE      SIZE  USED PRIO
Line 68: Line 67:


Le script suivant :
Le script suivant :
* vous affichera si zswap est actif ou non, et si actif vous donnera des informations de zswap si vous exécutez le script en utilisant {{ic|sudo}}.
* vous affichera si zswap est actif ou non, et s'il l'est, vous donnera des informations en rapport à zswap, pour peu que vous exécutiez ce script en utilisant {{ic|sudo}}.
* vous affichera une liste de toutes les applications / services qui ont alloué du swap et combien en ordre décroissante.
* vous affichera une liste de toutes les applications et services qui ont alloué du swap, et combien en les triant par ordre décroissant.


  #!/bin/bash
  #!/bin/bash
Line 75: Line 74:
  if [ "$(whoami)" = 'root' ]; then
  if [ "$(whoami)" = 'root' ]; then
   dmesg | grep "zswap:" | grep --silent "load"
   dmesg | grep "zswap:" | grep --silent "load"
   if [[ $? -eq 0 ]]; then
   if [ $? -eq 0 ]; then
     # zswap is active
     # zswap is active
     echo "zswap information:"
     echo "zswap information:"
Line 81: Line 80:
     read -n 1 -s -r -p "Press any key to continue"
     read -n 1 -s -r -p "Press any key to continue"
   else
   else
     echo "[warning] zwap not active. Continuing"
     echo "[warning] zswap not active. Continuing"
   fi
   fi
  else
  else
Line 89: Line 88:
   awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' "$szFile"
   awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' "$szFile"
  done | sort --key 2 --numeric --reverse | more
  done | sort --key 2 --numeric --reverse | more
=Utiliser une partition swap=
=Utiliser une partition swap=


Une partition swap est la façon traditionnelle d'activer du swap.  Dans ce scénario, une (ou plusieurs) partition(s) dédiée(s) sont crées pour allouer le swap.
Une partition swap est la façon traditionnelle d'activer cet espace d'échange.  Dans ce scénario, une, ou plusieurs, partitions dédiées sont crées pour prendre en charge le Swap.
==Créer et activer une partition swap==
==Créer et gérer une partition swap==


Pour pouvoir créer une partition swap, vous avez besoin d'assez d’emplacement disque non-alloué pour créer votre partition swap.  Si vous n'avez pas assez d'assez d'espace non-alloué, mais assez de place libre, veuillez bien procéder à la section [[Special:MyLanguage/#Using_a_swap_file|#Utiliser_un_fichier_swap]]. Une partition swap doit être créée par une application de partition et doit avoir comme type de partition {{ic|linuxswap}}.
<div class="mw-translate-fuzzy">
Pour pouvoir créer une partition swap, vous avez besoin d'assez d’space disque non-alloué, et ce afin de créer votre partition swap.  Si vous n'avez pas assez d'assez d'espace libre, allez directment à la partie [[#Using_a_Swapfile|#Utiliser_un_fichier_swap]]. Ce genre de partition peut être créer dans n'importe quel gestionnaire de disques et est pris en charge par le type {{ic|linuxswap}}.
</div>


Après avoir créé la partition swap, elle devra être initialisée avec la commande {{ic|mkswap}}. Par exemple, si votre partition swap est {{ic|/dev/sda3}}, vous devriez utiliser la commande :
Après avoir créé la partition swap, elle devra être initialisée avec la commande {{ic|mkswap}}. Par exemple, si votre partition swap est {{ic|/dev/sda3}}, vous devriez utiliser la commande :
  sudo mkswap /dev/sda3
  sudo mkswap /dev/sda3


En suite, vous devriez activer la partition swap an utilisant la commande {{ic|swapon}}. En continuant notre exemple en haut, on devra exécuter :
En suite, vous devriez activer la partition swap an utilisant la commande {{ic|swapon}}. En poursuivant notre exemple ci-dessus, nous devrions alors exécuter ceci :
  sudo swapon /dev/sda3
  sudo swapon /dev/sda3


Pour assurer que le swap est activé au démarrage (« boot ») il faudra ajouter une entrée au fichier {{ic|/etc/fstab}}. Comme d'habitude, il vaut mieux utiliser le UUID que le nom du device. Vous pouvez rajouter la ligne à la fin du fichier fstab en utilisant cette commande:
Pour s'assurer que le swap est activé au démarrage, il va falloir ajouter une entrée au fichier {{ic|/etc/fstab}}. Comme d'habitude, il est préférable d'utiliser un UUID que le nom de l'appareil pour ce genre d'action. Vous pouvez rajouter la ligne à la fin du fichier fstab en utilisant cette commande:
  sudo bash -c "echo UUID=$(lsblk -no UUID /dev/sda3) none swap defaults 0 0 >> /etc/fstab"
  sudo bash -c "echo UUID=$(lsblk -no UUID /dev/sda3) none swap defaults 0 0 >> /etc/fstab"


If you would like to have more than one swap partition, simply repeat the steps above for any additional partitions.
‎Si vous souhaitez avoir plus d’une partition de swap, il vous suffit de répéter les étapes ci-dessus pour chaque partition supplémentaire désirée.‎
 
{{note|‎Assurez-vous seulement de bien remplacer /dev/sda3 dans les commandes précédentes avec votre partition réelle.‎}}
{{tip|''Si vous utilisez un HDD'' (disque mécanique) mettre la partition de swap au *début du disque* est une bonne idée puisque la vitesse du disque est plus rapide sur les pistes extérieures. Sur un SSD cela n'a aucune importance.}}


{{note|Be sure to replace /dev/sda3 in the above commands with your actual swap partition.}}
{{tip|''If you're using a HDD'' (spinning rust) put the swap partition *at the beginning of the disk* as the speed of the disk is higher on the inside tracks. On an SSD this doesn't matter.}}
=Utiliser un ficher swap=
=Utiliser un ficher swap=


Le plus grand désavantage d'une ''partition'' swap est qu'on doit re-partitionner le disque pour pouvoir changer la taille du swap. En utilisant des noyaux Linux à partir de ou supérieur à 2.6, il n'y a plus de différence de vitesse entre ces deux moyens.
Le plus grand désavantage d'une ''partition'' swap est qu'on doit re-partitionner le disque pour pouvoir changer la taille du swap. En utilisant des noyaux Linux supérieur ou égal à 2.6, il n'existe plus de véritables différence de vitesse entre ces deux méthodes.
 
==Créer et utiliser in fichier swap statique==
{{tip|Il y a moyen d'avoir à la fois une partition d'échange '''et''' un fichier swap.  Utilisant cette méthode, vous évitera de devoir re-partionner votre disque.}}


==Créer et utiliser un fichier swap statique==
{{tip|Il y a moyen d'avoir à la fois une partition d'échange '''ET''' un fichier Swap, cette méthode, vous évitera d'avoir à partionner votre disque une nouvelle fois.}}


First create and intialize the file to hold the swap.  For example, to create a 4GB swapfile, you could use the command:
sudo fallocate -l 4G /swapfile
sudo mkswap /swapfile


Dans un premier temps, créez et initialisez le fichier qui contiendra l'espace d'échanges. Par exemple, pour créer un fichier Swap de 4 GB, utilisez la commande suivante :


Set the appropriate permissions on the file.  It should be readable and writable only by {{ic|root}}.  This can be done with the command:
  sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
  sudo chmod u=rw,go= /swapfile




Next we need to enable the swapfile with the {{ic|swapon}} command. Following our example above this could be done with:
Une fois fait, nous allons le fichier en ne donnant les droits de lecture et d'écriture à {{ic|root}} uniquement. Pour ce faire, utilisez la commande suivante :
sudo swapon /swapfile


sudo chmod 600 /swapfile


In order to ensure that the swap is enabled at boot we can add an entry to {{ic|/etc/fstab}}.  You can add the line to ftab manually or using the command:
sudo bash -c "echo /swapfile none swap defaults 0 0 >> /etc/fstab"


==Swapfiles on BTRFS==
Maintenant que le fichier est protégé, on doit encore le formater et surtout l'activer avec la commande {{ic|swapon}}. En suivant notre exemple, utilisez :


As of kernel 5.0 and higher, swapfiles are supported on btfrs. They still require some special handling in addition to the above steps.
  sudo mkswap /swapfile


Prior to running the {{ic|fallocate}} step above, you should run these commands:
  sudo swapon /swapfile
  sudo truncate -s 0 /swapfile
sudo chattr +C /swapfile
sudo btrfs property set /swapfile compression none




These commands create an empty swapfile, disable COW for that file and ensure that compression is disabled.
Pour s'assurer que le swap est actif à chaque démarrage, vous pouvez rajouter une ligne au fichier {{ic|/etc/fstab}} manuellement ou en utilisant la commande :


==Swapfiles on ZFS==
sudo bash -c "echo /swapfile none swap defaults 0 0 >> /etc/fstab"


zfs doesn't support swapfiles, however you can achieve a similar benefit using a zvol as a swap volume.


==Fichiers swap et format BTRFS==


Detailed instructions on how to accomplish this can be found in this [https://github.com/zfsonlinux/pkg-zfs/wiki/HOWTO-use-a-zvol-as-a-swap-device ZoL guide].
A partir de la version 5.0 du noyau Linux, les fichiers swap présents sur des partitions btrfs sont parfaitement supportés. Néanmoins, quelques actions supplémentaires sont requises pour leur mise en service.
=Automated Swap Management with systemd-swap=
{{note|Using systemd-swap with on btrfs/zfs or with hibernation support requires special handling beyond the scope of this article}}


It is possible to automatically manage the size of your swapfile using {{ic|systemd-swap}}.  It can create swap files dynamically based on memory needs.  It is also an easy way to enable/manage [[#Using_zswap_with_systemd-swap|zswap]]
Avant d'exécuter {{ic|dd}} commen indiqué plus haut, vous devez exécuter les commandes suivantes :
 
  sudo truncate -s 0 /swapfile
==Installing and Configuring systemd-swap==
  sudo chattr +C /swapfile
 
  sudo btrfs property set /swapfile compression none
First, install and enable {{ic|systemd-swap}}
pamac install systemd-swap
sudo systemctl enable systemd-swap.service
 
 
Next enable dynamic swap management by creating a file {{ic|/etc/systemd/swap.conf.d/myswap.conf}} with the following parameters:
zswap_enabled=0
zram_enabled=0
swapfc_enabled=1
 
 
If you would prefer a single command to create this file you could use:
  sudo bash -c 'echo -e "zswap_enabled=0\nzram_enabled=0\nswapfc_enabled=1" > /etc/systemd/swap.conf.d/myswap.conf'
 
==Remove Other Swap==
 
In order for systemd_swap to be effective you need to remove any traditional swap devices you have.
 
 
To display your current swap devices you can use the command {{ic|swapon}}.  For example, my test machine displays the following:
swapon
NAME      TYPE      SIZE USED PRIO
/swapfile file        4G  0B  -2
/dev/sda3 partition 8.4G  0B  -3
 
 
In this example there are two swap devices.  A swapfile and a swap partition.  To turn them off we can use the command {{ic|swapoff}}.
  sudo swapoff /swapfile
  sudo swapoff /dev/sda3
 
 
Next we need to remove them. 
The swap partition will need to be deleted using your favorite partitioning tool.  You can remove the swapfile by simply deleting it.
sudo rm /swapfile
 
 
We need to also remove any lines related to swap from {{ic|/etc/fstab}}.  Edit the file with an [[Special:MyLanguage/Viewing_and_editing_configuration_files|appropriate text editor]] and remove or comment out the lines for the swap space.  In the example above, we would remove these lines:
UUID=c2430cf1-8ea9-4422-a5c5-5a38779194c3 swap          swap    defaults,noatime 0 2
/swapfile none swap defaults 0 0




Next reboot. After the reboot you should see something similiar to the following when running {{ic|swapon}}
Ces commandes créent un fichier vide, désactivent COW pour ce fichier et s'assurent qu'il n'y a pas de compression active.
NAME                          TYPE SIZE USED PRIO
/var/lib/systemd-swap/swapfc/1 file 512M  0B  -2


{{tip|Pour rester compatible avec Timeshift, il est nécessaire de créer le fichier swap en dehors du volume "@" appartenant à root.
{{RootCmd|command=btrfs subvolume create /@swapfile}}
Vous n'avez qu'à remplacer /swapfile par /@swapfile/swapfile.}}


systemd-swap will add and remove swapfiles as your memory usage dictates.


{{note|If you don't delete your existing swap partition it will be automatically activated by systemd even though you have removed it from fstab}}
==Fichiers swap sur ZFS==


==Using zswap with systemd-swap==
zfs ne supporte pas de fichiers de type swap, cependant un résultat similaire peut être obtenu en utilisant un volume zvol swap.


zswap is compressed swap kept in RAM. zswap keeps the most frequently used pages in RAM and writes less frequently used pages to the swap space on disk.  In many workloads, this will result in increased swap performance and less wear and tear on SSDs.


To enable zswap with systemd-swap, simply alter the instructions above and set {{ic|zswap_enabled to 1}}
Des instructions détaillés se trouve dans le guide [https://github.com/zfsonlinux/pkg-zfs/wiki/HOWTO-use-a-zvol-as-a-swap-device ZoL guide] (en Anglais).
=Tuning & Performance Considerations=
=Réglages et Performances=


Although swap seems like a great way to expand memory, excessive swap use will cause severe performance degradation, as mentioned before.
Même si un espace d'échange vous semble être une bonne façon d'étendre votre mémoire vive facilement et rapidement, une utilisation excessive peut causer des chutes de performance fulgurante, comme mentionné précédemment.


There are couple of parameters that can be used to tune swap utilizationThese are swappiness and vfs_cache_pressure. To see your current settings for these you can use the following commands:
Il existe quelques paramètres pour régler l'utilisation de swap.  Il s'agit de swappiness et vfs_cache_pressure. Pour afficher votre configuration actuelle, exécutez les commandes suivantes :
  cat /proc/sys/vm/swappiness
  cat /proc/sys/vm/swappiness
  cat /proc/sys/vm/vfs_cache_pressure
  cat /proc/sys/vm/vfs_cache_pressure


{{ic|swappiness}} controls how likely a page is to be transferred to swap. This value represents the percentage of the free memory before activating swap. The lower the value, the less swapping is used and the more memory pages are kept in physical memory where:
{{ic|swappiness}} contrôle la probabilité qu'une page soit transférée de la mémoire vive vers l'espace d'échange. Cette valeur représente le pourcentage de mémoire libre avant d'activer le processus de swap. Plus la valeur est basse, moins le swap sera utilisé et plus il y aura de pages gardées en mémoire sur le dsique dur où :
* 0 disables swap
* 0 désactive le swap
* 60 is the default value which is ideal for a server running a lot of services
* 60 est la valeur par défaut, idéal pour un serveur qui exécute beaucoup de services
* 100 is very aggressive swapping.
* 100 active le swap de manière très agressive


For ''most'' desktops/laptops the recommended value is 10: Theoretically, this means to only start swapping when RAM usage reaches around 90 percent.
Pour "la plupart" des ordinateurs, la valeur recommandée est de 10. Théoriquement, le processus de swap ne commencera que quand l'utilisation de la mémoire vive atteint les 90 pourcents.


{{ic|vfs_cache_pressure}} is a percentage value that controls the tendency of the kernel to *reclaim* the memory which is used for caching of directory and inode objects. The default value is 100.  Increasing this value will increase the rate in which these objects are removed from the RAM cache.  Decreasing it will allow these objects to be cached in memory longer, consuming additional RAM over timeDepending on your specific workload, increasing or decreasing this value too far can have significant negative impacts on system performanceExperimentation is needed to find the appropriate balance and the default value is reasonable. In general, it is more common to optimize swappiness before experimenting with vfs_cache_pressure.
{{ic|vfs_cache_pressure}} est un pourcentage qui contrôle la tendance du noyau à "récupérer" la mémoire utilisée pour la mise en cache des objets inode et des dossiers. La valeur par défaut est 100.  L'augmentation de cette valeur augmentera la vitesse à laquelle ces objets seront supprimés de la RAM. La réduction permettra à ces objets d'être mis en cache plus longtemps, consommant de la RAM supplémentaire au fil du tempsEn fonction de votre charge de travail spécifique, augmenter ou réduire cette valeur de manière très significative peut avoir des impacts négatifs importants sur les performances de votre systèmeVous devez expérimenter avec des valeurs et trouver l'équilibre idéal pour votre système, et les valeurs par défaut sont généralement accéptables pour la plupart des systèmes. N'oubliez jamais d'optimisez d'abord la valeur de swappiness avent d'aller vers vfs_cache_pressure.


To set these values you can use the command {{ic|sysctl}}. For example, to set the swappiness value to 10 you could use:
Pour changer ces valeurs, utilisez la commande {{ic|sysctl}}. Par exemple, pour changer la valeur du paramètre swappiness à 10, utilisez :
  sudo sysctl vm.swappiness=10
  sudo sysctl vm.swappiness=10




'''There is no preset defined answer on the optimal values for these parameters.'''  Experimentation is needed to find the optimum configuration for your specific hardware and workload.
'''Il n'y a pas de valeurs optimales universelles pour ces paramètres.'''  Vous devez expérimenter afin de trouver la configuration idéale pour votre configuration physique et la façon dont vous utilisez votre système.




=See Also=
=Articles liés=
* The Arch Wiki page on [https://wiki.archlinux.org/index.php/Swap swap]
* La page Wiki de Arch Linux : [https://wiki.archlinux.org/index.php/Swap swap]
* The Arch Wiki page on [https://wiki.archlinux.org/index.php/Zswap zswap]
* La page Wiki de Arch Linux : [https://wiki.archlinux.org/index.php/Zswap zswap]
* The Linux kernel documentation on [https://www.kernel.org/doc/Documentation/vm/zswap.txt zswap]
* La documentation du noyau Linux : [https://www.kernel.org/doc/Documentation/vm/zswap.txt zswap]
* The Linux kernel documentation on [https://www.kernel.org/doc/Documentation/sysctl/vm.txt swappiness and vfs_cache_pressure]
* La documentation du noyau Linux : [https://www.kernel.org/doc/Documentation/sysctl/vm.txt swappiness and vfs_cache_pressure]
* The opensuse guide to [https://doc.opensuse.org/documentation/leap/tuning/html/book.sle.tuning/cha.tuning.memory.html tuning memory]
* Le guide ZFS sur Linux : [https://github.com/zfsonlinux/pkg-zfs/wiki/HOWTO-use-a-zvol-as-a-swap-device Swap Volumes]
* The [https://github.com/Nefelim4ag/systemd-swap systemd-swap page]
* The ZFS on Linux guide on [https://github.com/zfsonlinux/pkg-zfs/wiki/HOWTO-use-a-zvol-as-a-swap-device Swap Volumes]




[[Category:Contents Page]]
[[Category:Contents Page{{#translation:}}]]

Latest revision as of 07:37, 22 May 2024

Other languages:
Deutsch • ‎English • ‎français • ‎русский


Aperçu

L'espace d'échange (« swap ») est utilisé pour étendre la capacité de mémoire vive (RAM) disponible sur la machine, afin d'exécuter des logiciels assez gourmand.

  • Sans espace swap, des problèmes de mémoires peuvent apparaître, causant ainsi le retour du terrible OOM-killer. Ce programme sert à régler les problèmes du type OOM ("Out Of Memory", Plus d'espace mémoire), en mettant fin à des processus divers, allant de votre simple fichier LibreOffice, jusqu'au crash complet du système.
  • A l'inverse, si votre système possède un espace swap sur son disque dur, le noyau Linux pourra prendre la mémoire utilisée apr des applications, ou des services, inactifs et les écrire sur disque (action dite de « swapping »), et ce afin de récupérer plus de RAM.


Il existe trois manières de gérer le SWAP sur Manjaro :

  • Une partition Swap
  • Un fichier Swap
  • zswap


Cet article essaye d'être le plus complet possible, mais si vous avez besoin de plus amples informations, jetez un oeil aux articles liés

Ai-je besoin d'un espace Swap ?

Répondre à cette question est un brin compliqué, surtout si nous n'avons pas pris connaissances des spécificités de votre système. Même sur des systèmes avec beaucoup de RAM, le swap est utilisé comme sécurité, ou pour une utilisation avec des applications ayant des besoins bien particuliers. Voici une liste non-exhaustive des raisons qui peuvent vous pousser un créer ce fameux espace sur votre disque :

  • Si vous utilisez de l'« hibernation » (mise en veille prolongée): oui, vous avez besoin de swap!
  • Si vous avez des services inactifs, ou partiellement inactifs, mais qui tournent quand-même en arrière plan : oui, vous avez besoin de swap!
  • Si vous avez une application qui alloue de la mémoire virtuelle, directement comme stockage, et non comme RAM : oui, vous avez besoin de swap!
  • Si vous avez une application qui contient une fuite de mémoire : oui, vous avez besoin de swap !
  • Si vous possédez un serveur contenant 1 TB (1000 GB) de mémoire vive, que vous n'utilisez pas d'applications allouant de la mémoire virtuelle directement, ou ayant des fuites de mémoire : non, vous n'avez pas besoin de swap!

Quelle taille mon Swap doit-il avoir ?

La taille de swap est extrêmement variable et dépend de vos applications spécifiques et la façon dont vous les utilisez. Il n'existe aucune formule universelle sans connaissance des réactions de votre ssytème sur une période de temps prolongée. Un bon point de départ serait :

  • Pour des systèmes ayant moins de 4 GB de RAM, il est fortement recommandé d'avoir un espace swap d'au minimum le double de la taille actuelle de votre mémoire vive. Ce minimum est aussi le maximum en raison de rendements décroissants liés à une trop grosse taille du Swap ("mieux vaut trop que pas assez" ne fonctionne pas dans ce genre de situation).
  • Pour des systèmes plus récente (RAM > 4 GB), votre swap aura une taille équivalent à la racine carrée de l'espace en mémoire vive. Sinon, si vous utilisez l'hibernation, vous aurez besoin au minimum de la racine carrée de votre RAM en GB, et au maximum, du double de votre RAM, toujours en raison des rendements décroissants.
  • Le seul et unique désavantage d'avoir trop de swap, sera que l'espace disque alloué ne pourra pas être utilisé ni par des applications, ni pour stocker des données.

"Rendements décroissants" signifie que, dans le cas où vous auriez besoin de plus de mémoire que le double de votre RAM, il vaudrait mieux ajouter de la mémoire vive à votre système, puisque l'accès à un disque dur est environs 1 000 fois plus lent que la vitesse d'accès à la RAM ! Même sur un SSD, une opération restera beaucoup plus longue sur le disque que sur la RAM.

En distillant tout cela on arrive au tableau ci-dessous (les 3 dernières colonnes représentent le Swap dont vous aurez besoin) :

       RAM   Sans hibernation    Avec hibernation  Maximum
       1GB              1GB                 2GB      2GB
       2GB              2GB                 3GB      4GB
       3GB              3GB                 5GB      6GB
       4GB              4GB                 6GB      8GB
       RAM   Sans hibernation    Avec hibernation  Maximum
       5GB              2GB                 7GB     10GB
       6GB              2GB                 8GB     12GB
       8GB              3GB                11GB     16GB
      12GB              3GB                15GB     24GB
      16GB              4GB                20GB     32GB
      24GB              5GB                29GB     48GB
      32GB              6GB                38GB     64GB
      64GB              8GB                72GB    128GB
     128GB             11GB               139GB    256GB
     256GB             16GB               272GB    512GB
     512GB             23GB               535GB      1TB
       1TB             32GB              1056GB      2TB
       2TB             46GB              2094GB      4TB
       4TB             64GB              4160GB      8TB
       8TB             91GB              8283GB     16TB
Note
Pour l'anecdote, le serveur le plus large qu'un des auteurs de ce wiki dû un jour installer, contenait 8 TB de RAM, et possédait tout de même un espace d'échange, alors pourquoi pas la votre n'en aurez pas besoin ?

Afficher les informations sur le Swap

La commande swapon vous affichera les information relatif à l'utilisation du Swap actuellement. Par example:

swapon
NAME      TYPE      SIZE   USED PRIO
/dev/sda7 partition  20G  44.3M   -2

Le script suivant :

  • vous affichera si zswap est actif ou non, et s'il l'est, vous donnera des informations en rapport à zswap, pour peu que vous exécutiez ce script en utilisant sudo.
  • vous affichera une liste de toutes les applications et services qui ont alloué du swap, et combien en les triant par ordre décroissant.
#!/bin/bash
#Check whether running as root
if [ "$(whoami)" = 'root' ]; then
  dmesg | grep "zswap:" | grep --silent "load"
  if [ $? -eq 0 ]; then
    # zswap is active
    echo "zswap information:"
    grep --recursive --color=none . /sys/kernel/debug/zswap/
    read -n 1 -s -r -p "Press any key to continue"
  else
    echo "[warning] zswap not active. Continuing"
  fi
else
  echo "[warning] Not running as root: skipping zswap info"
fi
for szFile in /proc/*/status ; do
  awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' "$szFile"
done | sort --key 2 --numeric --reverse | more

Utiliser une partition swap

Une partition swap est la façon traditionnelle d'activer cet espace d'échange. Dans ce scénario, une, ou plusieurs, partitions dédiées sont crées pour prendre en charge le Swap.

Créer et gérer une partition swap

Pour pouvoir créer une partition swap, vous avez besoin d'assez d’space disque non-alloué, et ce afin de créer votre partition swap. Si vous n'avez pas assez d'assez d'espace libre, allez directment à la partie #Utiliser_un_fichier_swap. Ce genre de partition peut être créer dans n'importe quel gestionnaire de disques et est pris en charge par le type linuxswap.

Après avoir créé la partition swap, elle devra être initialisée avec la commande mkswap. Par exemple, si votre partition swap est /dev/sda3, vous devriez utiliser la commande :

sudo mkswap /dev/sda3

En suite, vous devriez activer la partition swap an utilisant la commande swapon. En poursuivant notre exemple ci-dessus, nous devrions alors exécuter ceci :

sudo swapon /dev/sda3

Pour s'assurer que le swap est activé au démarrage, il va falloir ajouter une entrée au fichier /etc/fstab. Comme d'habitude, il est préférable d'utiliser un UUID que le nom de l'appareil pour ce genre d'action. Vous pouvez rajouter la ligne à la fin du fichier fstab en utilisant cette commande:

sudo bash -c "echo UUID=$(lsblk -no UUID /dev/sda3) none swap defaults 0 0 >> /etc/fstab"

‎Si vous souhaitez avoir plus d’une partition de swap, il vous suffit de répéter les étapes ci-dessus pour chaque partition supplémentaire désirée.‎


Note
‎Assurez-vous seulement de bien remplacer /dev/sda3 dans les commandes précédentes avec votre partition réelle.‎


Tip
Si vous utilisez un HDD (disque mécanique) mettre la partition de swap au *début du disque* est une bonne idée puisque la vitesse du disque est plus rapide sur les pistes extérieures. Sur un SSD cela n'a aucune importance.

Utiliser un ficher swap

Le plus grand désavantage d'une partition swap est qu'on doit re-partitionner le disque pour pouvoir changer la taille du swap. En utilisant des noyaux Linux supérieur ou égal à 2.6, il n'existe plus de véritables différence de vitesse entre ces deux méthodes.

Créer et utiliser un fichier swap statique

Tip
Il y a moyen d'avoir à la fois une partition d'échange ET un fichier Swap, cette méthode, vous évitera d'avoir à partionner votre disque une nouvelle fois.


Dans un premier temps, créez et initialisez le fichier qui contiendra l'espace d'échanges. Par exemple, pour créer un fichier Swap de 4 GB, utilisez la commande suivante :

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress


Une fois fait, nous allons le fichier en ne donnant les droits de lecture et d'écriture à root uniquement. Pour ce faire, utilisez la commande suivante :

sudo chmod 600 /swapfile


Maintenant que le fichier est protégé, on doit encore le formater et surtout l'activer avec la commande swapon. En suivant notre exemple, utilisez :

sudo mkswap /swapfile
sudo swapon /swapfile


Pour s'assurer que le swap est actif à chaque démarrage, vous pouvez rajouter une ligne au fichier /etc/fstab manuellement ou en utilisant la commande :

sudo bash -c "echo /swapfile none swap defaults 0 0 >> /etc/fstab"


Fichiers swap et format BTRFS

A partir de la version 5.0 du noyau Linux, les fichiers swap présents sur des partitions btrfs sont parfaitement supportés. Néanmoins, quelques actions supplémentaires sont requises pour leur mise en service.

Avant d'exécuter dd commen indiqué plus haut, vous devez exécuter les commandes suivantes :

sudo truncate -s 0 /swapfile
sudo chattr +C /swapfile
sudo btrfs property set /swapfile compression none


Ces commandes créent un fichier vide, désactivent COW pour ce fichier et s'assurent qu'il n'y a pas de compression active.



Tip
Pour rester compatible avec Timeshift, il est nécessaire de créer le fichier swap en dehors du volume "@" appartenant à root.
root # btrfs subvolume create /@swapfile COPY TO CLIPBOARD

Vous n'avez qu'à remplacer /swapfile par /@swapfile/swapfile.


Fichiers swap sur ZFS

zfs ne supporte pas de fichiers de type swap, cependant un résultat similaire peut être obtenu en utilisant un volume zvol swap.


Des instructions détaillés se trouve dans le guide ZoL guide (en Anglais).

Réglages et Performances

Même si un espace d'échange vous semble être une bonne façon d'étendre votre mémoire vive facilement et rapidement, une utilisation excessive peut causer des chutes de performance fulgurante, comme mentionné précédemment.

Il existe quelques paramètres pour régler l'utilisation de swap. Il s'agit de swappiness et vfs_cache_pressure. Pour afficher votre configuration actuelle, exécutez les commandes suivantes :

cat /proc/sys/vm/swappiness
cat /proc/sys/vm/vfs_cache_pressure

swappiness contrôle la probabilité qu'une page soit transférée de la mémoire vive vers l'espace d'échange. Cette valeur représente le pourcentage de mémoire libre avant d'activer le processus de swap. Plus la valeur est basse, moins le swap sera utilisé et plus il y aura de pages gardées en mémoire sur le dsique dur où :

  • 0 désactive le swap
  • 60 est la valeur par défaut, idéal pour un serveur qui exécute beaucoup de services
  • 100 active le swap de manière très agressive

Pour "la plupart" des ordinateurs, la valeur recommandée est de 10. Théoriquement, le processus de swap ne commencera que quand l'utilisation de la mémoire vive atteint les 90 pourcents.

vfs_cache_pressure est un pourcentage qui contrôle la tendance du noyau à "récupérer" la mémoire utilisée pour la mise en cache des objets inode et des dossiers. La valeur par défaut est 100. L'augmentation de cette valeur augmentera la vitesse à laquelle ces objets seront supprimés de la RAM. La réduction permettra à ces objets d'être mis en cache plus longtemps, consommant de la RAM supplémentaire au fil du temps. En fonction de votre charge de travail spécifique, augmenter ou réduire cette valeur de manière très significative peut avoir des impacts négatifs importants sur les performances de votre système. Vous devez expérimenter avec des valeurs et trouver l'équilibre idéal pour votre système, et les valeurs par défaut sont généralement accéptables pour la plupart des systèmes. N'oubliez jamais d'optimisez d'abord la valeur de swappiness avent d'aller vers vfs_cache_pressure.

Pour changer ces valeurs, utilisez la commande sysctl. Par exemple, pour changer la valeur du paramètre swappiness à 10, utilisez :

sudo sysctl vm.swappiness=10


Il n'y a pas de valeurs optimales universelles pour ces paramètres. Vous devez expérimenter afin de trouver la configuration idéale pour votre configuration physique et la façon dont vous utilisez votre système.


Articles liés