723
edits
(Updating to match new version of source page) |
(Created page with "Avec l'hibernation de configurer, il également préférable de modifier {{ic|/etc/default/grub}}. Trouvez et effacez {{ic|<nowiki>resume=UUID=...</nowiki>}} ou alors remplace...") Tags: Mobile web edit Mobile edit |
||
Line 5: | Line 5: | ||
=Aperçu= | =Aperçu= | ||
L'espace d'échange (« swap » | 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, | * 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 | Il existe trois manières de gérer le SWAP sur Manjaro : | ||
* Une partition | * Une partition Swap | ||
* Un fichier | * Un fichier Swap | ||
* zswap | * zswap | ||
Cet article essaye d'être le plus complet | Cet article essaye d'être le plus complet possible, mais si vous avez besoin de plus amples informations, jetez un oeil aux [[Special:MyLanguage/#See_Also|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 utilisez de l'« hibernation » (mise en veille prolongée): ''oui, vous avez besoin de swap!'' | ||
* Si vous avez des services | * 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 | * 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 | * 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 | =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 . | 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 | * 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. | * 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 | 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 | RAM Sans hibernation Avec hibernation Maximum | ||
Line 61: | Line 58: | ||
4TB 64GB 4160GB 8TB | 4TB 64GB 4160GB 8TB | ||
8TB 91GB 8283GB 16TB | 8TB 91GB 8283GB 16TB | ||
{{note| | {{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 | =Afficher les informations sur le Swap= | ||
La commande {{ic|swapon}} vous affichera | 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 70: | Line 67: | ||
Le script suivant : | 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 {{ic|sudo}}. | ||
* vous affichera une liste de toutes les applications | * 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 93: | Line 90: | ||
=Utiliser une partition swap= | =Utiliser une partition swap= | ||
Une partition swap est la façon traditionnelle d'activer | 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 | ==Créer et gérer une partition swap== | ||
Pour pouvoir créer une partition swap, vous avez besoin d'assez | 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 [[Special:MyLanguage/#Using_a_swap_file|#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}}. | ||
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 | 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 | 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" | ||
Si vous souhaitez avoir plus d’une partition de swap, il vous suffit de répéter les étapes ci-dessus pour | 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 de remplacer /dev/sda3 dans les commandes | {{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* la vitesse du disque est plus rapide sur les pistes intérieures. Sur un SSD cela n'a | {{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 intérieures. Sur un SSD cela n'a aucune importance.}} | ||
=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 | 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 | ==Créer et utiliser un fichier swap statique== | ||
{{tip|Il y a moyen d'avoir à la fois une partition d'échange ''' | {{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 | 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 à {{ic|root}} uniquement. Pour ce faire, utilisez la commande suivante : | |||
sudo chmod 600 /swapfile | sudo chmod 600 /swapfile | ||
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 : | |||
Maintenant que le fichier est protégé, on doit encore l'activer avec la commande {{ic|swapon}}. En suivant notre exemple, utilisez : | |||
sudo mkswap /swapfile | sudo mkswap /swapfile | ||
Line 138: | Line 133: | ||
Pour 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 : | 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 : | ||
sudo bash -c "echo /swapfile none swap defaults 0 0 >> /etc/fstab" | sudo bash -c "echo /swapfile none swap defaults 0 0 >> /etc/fstab" | ||
==Fichiers swap et BTRFS== | ==Fichiers swap et format BTRFS== | ||
A partir de la version 5.0 du noyau Linux, | 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 | Avant d'exécuter {{ic|fallocate}} commen indiqué plus haut, vous devez exécuter les commandes suivantes : | ||
sudo truncate -s 0 /swapfile | sudo truncate -s 0 /swapfile | ||
sudo chattr +C /swapfile | sudo chattr +C /swapfile | ||
Line 153: | Line 148: | ||
Ces commandes créent un fichier vide, désactivent COW pour ce fichier et assurent qu'il n'y a pas de compression active. | 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| | {{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}} | {{RootCmd|command=btrfs subvolume create /@swapfile}} | ||
Vous n'avez qu'à remplacer /swapfile par /@swapfile/swapfile.}} | |||
==Fichiers swap sur ZFS== | ==Fichiers swap sur ZFS== | ||
zfs ne supporte pas de fichiers de type swap, | 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 [https://github.com/zfsonlinux/pkg-zfs/wiki/HOWTO-use-a-zvol-as-a-swap-device ZoL guide] (en Anglais). | 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). | ||
=Gestion automatique | =Gestion automatique des espaces d'échanges avec systemd-swap= | ||
{{note|Utiliser systemd-swap sur des volumes btrfs/zfs n'est pas | {{note|Utiliser systemd-swap sur des volumes btrfs/zfs n'est pas du tout détaillé dans ce guide.}} | ||
Il est tout à fait possible de gérer la taille du ficher swap en utilisant {{ic|systemd-swap}}, puisqu'il peut créer des fichiers swap dynamiquement en se basant sur l'utilisation de la mémoire. C'est également une façon très efficace et facile de gérer [[#Using_zswap_with_systemd-swap|zswap]]. | |||
==Installation et configuration de systemd-swap== | ==Installation et configuration de systemd-swap== | ||
Line 178: | Line 173: | ||
Ensuite, activez la gestion dynamique en créant un fichier {{ic|/etc/systemd/swap.conf.d/myswap.conf}} contenant les paramètres suivants : | |||
zswap_enabled=0 | zswap_enabled=0 | ||
zram_enabled=0 | zram_enabled=0 | ||
Line 184: | Line 179: | ||
Si vous préférez une seule commande pour créer ce fichier, | Si vous préférez une seule commande pour créer ce fichier, la voici : | ||
sudo bash -c 'echo -e "zswap_enabled=0\nzram_enabled=0\nswapfc_enabled=1" > /etc/systemd/swap.conf.d/myswap.conf' | sudo bash -c 'echo -e "zswap_enabled=0\nzram_enabled=0\nswapfc_enabled=1" > /etc/systemd/swap.conf.d/myswap.conf' | ||
== | ==Supprimer les autres types de swap== | ||
Afin de gérer votre sespace avec systemd-swap, vous devez impérativement enlever les autres swap déjà actifs sur votre système. | |||
Utilisez la commande {{ic|swapon}} pour afficher votre configuration | Utilisez la commande {{ic|swapon}} pour afficher votre configuration actuelle. Ci-dessous, un exemple de configuration : | ||
swapon | swapon | ||
NAME TYPE SIZE USED PRIO | NAME TYPE SIZE USED PRIO | ||
Line 199: | Line 194: | ||
Cet exemple vous montre deux dispositifs de swap: une partition et un ficher swap. | Cet exemple vous montre deux dispositifs de swap : une partition et un ficher swap. Pour arrêter les deux, on utilisera la commande {{ic|swapoff}}. | ||
sudo swapoff /swapfile | sudo swapoff /swapfile | ||
sudo swapoff /dev/sda3 | sudo swapoff /dev/sda3 | ||
Puis, nous devons enlever ces dispositifs. | |||
La partition swap devra être | La partition swap devra être purement et simplement effacer du disque en utilisant votre gestionnaire de partitions favoris. | ||
sudo rm /swapfile | sudo rm /swapfile | ||
Par la même occasion, profitez-en en enlevant toutes les lignes swap du fichier {{ic|/etc/fstab}}. Éditez le fichier avec votre éditeur favori et enlevez ou commentez les lignes contenant l'espace swap. En utilisant l'exemple plus haut, les lignes suivantes sont à supprimer : | |||
UUID=c2430cf1-8ea9-4422-a5c5-5a38779194c3 swap swap defaults,noatime 0 2 | UUID=c2430cf1-8ea9-4422-a5c5-5a38779194c3 swap swap defaults,noatime 0 2 | ||
/swapfile none swap defaults 0 0 | /swapfile none swap defaults 0 0 | ||
Avec l'hibernation de configurer, il également préférable de modifier {{ic|/etc/default/grub}}. Trouvez et effacez {{ic|<nowiki>resume=UUID=...</nowiki>}} ou alors remplacez UUID par une valeur correcte. Dans l'exemple plus haut, nous aurons à supprimer ce texte : | |||
resume=UUID=c2430cf1-8ea9-4422-a5c5-5a38779194c3 | resume=UUID=c2430cf1-8ea9-4422-a5c5-5a38779194c3 | ||
Ensuite, lancez : | |||
sudo update-grub | sudo update-grub | ||
Si votre désir est de supprimé entièrement le processus d'hibernation, alorsretirez {{ic|resume}} de la ligne {{ic|HOOKS}} dans le fichier {{ic|/etc/mkinitpcio.conf}}, puis lancez: | |||
sudo mkinitpcio -P | sudo mkinitpcio -P | ||
Redémarrez votre ordinateur, et, quand vous exécuterez {{ic|swapon}} vous devriez voir quelque chose de similaire à : | |||
NAME TYPE SIZE USED PRIO | NAME TYPE SIZE USED PRIO | ||
/var/lib/systemd-swap/swapfc/1 file 512M 0B -2 | /var/lib/systemd-swap/swapfc/1 file 512M 0B -2 | ||
systemd-swap va maintenant activer et désactiver des fichiers swap en fonction | systemd-swap va maintenant activer et désactiver des fichiers swap en fonction de l'utilisation de votre mémoire vive. | ||
{{note|Même si vous enlevez la partition swap de votre ficher fstab, systemd-swap va continuer à utiliser la partition swap si | {{note|Même si vous enlevez la partition swap de votre ficher fstab, systemd-swap va continuer à utiliser la partition swap si elles n'est pas effacée !}} | ||
==Utiliser zswap avec systemd-swap== | ==Utiliser zswap avec systemd-swap== | ||
zswap est | zswap est un swap compressé et stocké en mémoire vive. Il garde les pages fréquemment utilisées en RAM, et écrit celles rarement utilisées directement sur le disque. Dans la plupart cas, ceci s'observera par des performances accrues et une usure moins intensive d'un disque SSD. | ||
Pour activer zswap avec systemd-swap, changez les instructions en haut et activez le paramètre du Noyau Linux {{ic|zswap_enabled=1}}. | Pour activer zswap avec systemd-swap, changez les instructions en haut et activez le paramètre du Noyau Linux {{ic|zswap_enabled=1}}. | ||
=Réglages et Performances= | |||
= | |||
Même si | 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 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}} contrôle la probabilité qu'une | {{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 désactive le swap | * 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 | * 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. | |||
{{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 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 {{ic|sysctl}}. Par exemple, pour changer la valeur du paramètre swappiness à 10, utilisez : | Pour changer ces valeurs, utilisez la commande {{ic|sysctl}}. Par exemple, pour changer la valeur du paramètre swappiness à 10, utilisez : |
edits