l’Almanet doLys Gnu/Linux – Open Source – Entreprises › Forums › L’almanet doLys Open Source › Optimiser la gestion de la RAM et du Swap sous Linux
- This topic has 16 réponses, 5 participants, and was last updated il y a 4 years et 1 months by nam1962.
-
AuteurArticles
-
janvier 28, 2018 à 1:16 pm #5611nam1962Keymaster
Sous Linux, on peut optimiser la gestion de la RAM en gérant la swappiness.
Régler la swappiness
Pour vérifier votre réglage actuel :
cat /proc/sys/vm/swappiness cat /proc/sys/vm/vfs_cache_pressure
Si la swappiness est à 60 et le cache_pressure à 100, c’est un réglage pour serveur qui n’est pas optimal pour un ordinateur individuel (cf note en bas)
Ces valeurs par défaut sont plus logiques pour un serveur que pour un ordi personnel.
Après le réglage que je vous propose, vous constaterez que votre ordinateur sous Linux est plus rapide et vivace ! 🙂
…n’oubliez pas, pour sélectionner chaque commande, le triple clic sur chaque ligne :
echo vm.swappiness=5 | sudo tee -a /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
Si vous utilisez un SSD, il faut limiter très fortement la swap donc regardez ce post : https://dolys.fr/forums/topic/1327/
Sur les ordinateurs suffisamment costauds en RAM (plus de 6Go), je complète ceci par la mise de /tmp en RAM
Régler la swap
Il y a 3 moyens d’avoir une swap sous Linux : une partition swap, une swapfile, ou utiliser systemd-swap
On DOIT avoir une swap même si on a beaucoup de RAM (regardez en fin d’article pourquoi)
Partition swap
Les puristes disent que la partition swap reste le plus rapide, mais il faut dans ce cas la créer lors de l’installation car modifier des partitions ultérieurement est toujours fastidieux et délicat.
Swapfile
De nombreuses distribution en créent une à l’installation, mais parfois ce n’est pas le cas, parfois la taille ne vous convient pas. Voici donc comment l’installer ou la modifier.
1. Vérifiez son existence et sa taillesudo swapon -s
2. si il y a une swapfile, désactivez la :
sudo swapoff -a
3. ajoutez une swapfile, agrandissez ou rétrécissez là :
sudo dd if=/dev/zero of=/swapfile count=4M bs=1K
Ici je vous ai proposé une swapfile de 4M*1K = 4Gib pour ajuster à votre taill voulue, changez le count, par exemple 8M pour avoir 8Gib
4. donnez les bonnes permissions à votre swapfile
sudo chmod 600 /swapfile
5. Donnez-lui le statut de swap et démarrez la
sudo mkswap /swapfile sudo swapon /swapfile
6. vérifiez qu’elle soit bien déclarée d&ans fstab :
cat /etc/fstab
vois devez voir :
/swapfile none swap sw 0 0
7. Si non passez
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
8. Redémarrez
9. Vérifiez votre nouvelle swapfile avec
sudo swapon -s
Systemd-swap
systemd-swap est séduisante, mais le dev lui-même dit qu’il n’a pas assez de temps pour maintenir sérieusement son script. Je vous la cite car je lui trouvais plusieurs avantages :
* contrairement aux deux autres solutions, elle ne mobilise pas en permanence un espace, mais s’ajuste aux besoins.
* couteau suisse de la gestion de swap, elle ajoute un outil d’optimisation : zswapMais évitez de l’installer sauf pour des tests (ou faire un fork et dans ce cas dîtes le moi ! 😀 )
1. Si vous avez une partition swap, il faut préalablement la supprimer avec gparted et supprimer son entrée UUID dans fstab via :
gedit admin:///etc/fstab
Si vous avez une /swapfile (automatique sur pas mal de distros), là aussi la supprimer :
sudo swapoff -a sudo rm -f /swapfile
Sous Debian, Ubuntu et variantes :
sudo apt install --reinstall build-essential git clone https://github.com/Nefelim4ag/systemd-swap.git ./systemd-swap/package.sh debian cd ~/systemd-swap sudo dpkg -i systemd-swap_*_a??.deb
Sous Manjaro et autres Arch :
sudo pacman -S systemd-swap
Puis pour toutes les distributions, nous allons régler systemd-swap, en activant swapfc, zswap l’est déjà et nous n’activons pas zram (incompatible avec les deux premiers), nous allons aussi mettre un fichier minimum et régler sa taille à 512Mo :
sudo mkdir /etc/systemd/swap.conf.d sudo touch /etc/systemd/swap.conf.d/overrides.conf
Puis copiez/collez tout ce pavé dans le terminal :
sudo tee -a /etc/systemd/swap.conf.d/overrides.conf <<EOF swapfc_enabled=1 swapfc_min_count=1 swapfc_chunk_size=512M EOF
Comme vous l’avez compris, le fichier /etc/systemd/swap.conf.d/overrides.conf est un fichier utilisateur qui a priorité sur les réglages par défaut de /usr/share/systemd-swap/swap-default.conf
[Note] si vous êtes sous Debian, le mode de compression par défaut : zstd ne fonctionnera pas, utilisez alors lz4 en ajoutant :
echo zswap_compressor=lz4 | sudo tee -a /etc/systemd/swap.conf.d/overrides.conf
Pour activer systemd-swap, passons :
systemctl start systemd-swap systemctl enable systemd-swap
Et redémarrez !
Pour vérifier le bon fonctionnement de systemd-swap :
swapon -s
Qui doit vous indiquer quelque chose de ce genre :
~]$ swapon -s Nom de fichier Type Taille Utilisé Priorité /var/lib/systemd-swap/swapfc/1 file 524284 780 -2
[Note] J’ai supprimé resume dans
/etc/default/grub et (quand l’ordi est sous Manjaro) dans /etc/mkinitcpio.conf puis :sudo mkinitcpio -P sudo update-grub
Ceci permet de continuer à pouvoir hiberner (même si je n’ai jamais compris l’intérêt de l’hibernation 😉 )
J’ai aussi mis le contenu de /tmp (les fichiers temporaires) en RAM : https://dolys.fr/forums/topic/accelerer-le-demarrage-sous-linux/
Explication des réglages de swappiness :
Swappiness est le nom que les développeurs du noyau Linux ont donné à la préférence entre les applications de pagination sur disque et la réduction des caches.
Si elle est proche de 0, Linux préférera garder les applications en RAM et ne pas agrandir les caches.
Si elle est proche de 100, Linux préférera swapper des applications et agrandir les caches en RAM autant que possible.https://www.howtogeek.com/449691/what-is-swapiness-on-linux-and-how-to-change-it/
Tout ce qui est swappé bascule sur les disques (HDD ou SSD) qui sont nettement plus lents que la RAM, d’où cette impression de blocage quand une application bascule en Swap
Dans la configuration d’origine, sur Ubuntu et ses variantes par exemple, la swappiness est réglée à 60.
60 est utile pour un serveur qui a intérêt à optimiser la vitesse des caches, mais pas pour un ordinateur personnel (d’ailleurs, tenant compte de cela,sur Manjaro, le réglage par défaut est… 10 !)
Avec ce tuto, votre ordi maximisera l’usage de la RAM pour les applications avant de penser à autre chose.
Le cache pressure, lui, donne priorité aux inodes sur les autres caches, c’est à dire s’assure, là aussi, que de la plus grande vitesse percue quand l’ordi cherche des fichiers (grosso les inodes sont un peu comme les infos d’un annuaire).
Pour les curieux : Tales from Responsivenessland
L’avis de la communauté Ubuntu :
The default setting in Ubuntu is swappiness=60. Reducing the default value of swappiness will probably improve overall performance for a typical Ubuntu desktop installation. A value of swappiness=10 is recommended, but feel free to experiment. Note: Ubuntu server installations have different performance requirements to desktop systems, and the default value of 60 is likely more suitable. –> source
Excellente explication du fonctionnement de la mémoire sous Linux par Nicolas PANHALEUX.
Enfin, la swap est elle nécessaire si j’ai beaucoup de RAM ? Réponse : oui ! Car les OS et programmes s’attendent à en avoir pour gerer correctement leurs évènements, explications là et là : https://chrisdown.name/2018/01/02/in-defence-of-swap.html
https://haydenjames.io/linux-performance-almost-always-add-swap-space/
Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc
juin 10, 2019 à 10:36 pm #11509andsoParticipantbonjour nam et tous
pourquoi ne pas avoir plusieurs récipiendaires pour la swap et définir des priorités?j’ utilise zram (je sais: t’ aime pas) qui crée un tampon swap en mémoire vive
explication vachement initiale
et aprés utilisation de swapoff swapon pour définir les piorités:pj@pj-desktop:~$ cat /proc/swaps Filename Type Size Used Priority /dev/sda9 partition 4364284 0 -3 /dev/zram0 partition 1000112 0 -1 /dev/zram1 partition 1000112 0 -2
les zram0 et zram1 correspondent aux 2 cœurs de ma cpu: eles devraient avoir la même priorité.
j’ obtiens mon systeme extrémement fluide
mon réglage en test (avec 4Go de mem) de /etc/sysctl.d/99-swappiness.conf:
vm.swappiness=10
vm.vfs_cache_pressure=100edit: tu l’ as crée le /etc/systemd/swap.conf ?
juin 11, 2019 à 2:37 am #11510nam1962KeymasterHello andso, l’avantage de systemd-swap est qu’il crée des tranches de swap de 512 Mo au fur et à mesure des besoins.
le /etc/systemd/swap.conf a été créé lors de l’install de systemd-swap, j’ai juste dû activer swapfc
Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc
décembre 4, 2019 à 10:09 pm #11612andsoParticipantt’ as pas pigé: zram compresse ta ram et l’ utilise en tampon pour le swap,
en réglant /proc/swaps
avant basculement vers un dédé.
Tu suis le script de GammaDraconis sur ubuntu qui propose zram.Un swap en mémoire vive avant basculement vers un dédé,
ça roxe!janvier 15, 2020 à 9:37 pm #11633gogParticipantBonjour,
Je n’arrive pas à appliquer la partie gitub et trouver le numéro de .deb
Par le passé j’ai déjà effectuer cette manipulation, mais je n’y arrive pas cette fois ci.
Cdlt
janvier 25, 2020 à 10:16 am #11640nam1962KeymasterHello !
Effectivement, any est devenu all dans systemd-swap_*_any.deb
Je corrige le tuto, merci ! 🙂Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc
mars 21, 2020 à 4:39 pm #11683furnicketParticipantBonjour,
je suis novice sur linux et moi non plus la manip de remplacer * par le numéro de version dans le .deb ne fonctionne pas.
Cela me fait :
elsa@elsa-X510UQ:~/systemd-swap$ sudo dpkg -i systemd-swap_4.0.1_all.deb
dpkg: erreur: cannot access archive ‘systemd-swap_4.0.1_all.deb’: Aucun fichier ou dossier de ce type.
Pourraiez-vous m’aider ?Cordialement
mars 21, 2020 à 9:20 pm #11684nam1962KeymasterBonsoir, peux-tu nous donner un à un les retours de chacune des commandes prescrites ?
La commande que tu indiques ne provient pas du tuto dolys.
Il faut exactement copier coller les commandes du premier post, sans rien y modifier.Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc
mars 21, 2020 à 10:10 pm #11685furnicketParticipantSi je fais chaque commande j’obtiens :
elsa@elsa-X510UQ:~$ git clone https://github.com/Nefelim4ag/systemd-swap.git
fatal: le chemin de destination ‘systemd-swap’ existe déjà et n’est pas un répertoire vide.
elsa@elsa-X510UQ:~$ ./systemd-swap/package.sh debian
./systemd-swap/package.sh: ligne 16: make : commande introuvable
elsa@elsa-X510UQ:~$ cd ~/systemd-swap
elsa@elsa-X510UQ:~/systemd-swap$ sudo dpkg -i systemd-swap_*_a??.deb
[sudo] Mot de passe de elsa :
dpkg: erreur: cannot access archive ‘systemd-swap_*_a??.deb’: Aucun fichier ou dossier de ce typemars 22, 2020 à 4:25 pm #11686nam1962KeymasterHmm, les *buntus oublient de plus en plus d’outils dans leur install, que donne :
sudo apt install --reinstall build-essential ./systemd-swap/package.sh debian cd ~/systemd-swap sudo dpkg -i systemd-swap_*_a??.deb
Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc
mars 23, 2020 à 11:56 am #11687furnicketParticipantSuper ! j’imagine que c’est bon, on m’indique :
elsa@elsa-X510UQ:~$ swapon -s
Nom de fichier Type Taille Utilisé Priorité
/var/lib/systemd-swap/swapfc/1 file 524284 0 -2Ensuite pour désactiver l’hibernation je n’ai pas très bien compris : Dans mon fichier etc je n’ai pas defaul ou mkinitcpio.conf, je n’ai que systemd.
Du coup après avoir fait la commande que tu préconise ça me donne :elsa@elsa-X510UQ:~$ sudo update-grub
Sourcing file `/etc/default/grub’
Création du fichier de configuration GRUB…
Image Linux trouvée : /boot/vmlinuz-5.3.0-42-generic
Image mémoire initiale trouvée : /boot/initrd.img-5.3.0-42-generic
Image Linux trouvée : /boot/vmlinuz-5.3.0-28-generic
Image mémoire initiale trouvée : /boot/initrd.img-5.3.0-28-generic
Adding boot menu entry for EFI firmware configuration
fait
elsa@elsa-X510UQ:~$ sudo mkinitcpio -P
sudo: mkinitcpio : commande introuvableça te parait bon ?
mars 23, 2020 à 4:51 pm #11688nam1962KeymasterÇà sent bon 🙂
Pour vérifier, donne-nous :
cat /etc/default/grub cat /etc/mkinitcpio.conf
Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc
mars 23, 2020 à 7:20 pm #11690furnicketParticipantVoilà :
elsa@elsa-X510UQ:~$ cat /etc/default/grub # If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=0 GRUB_DISTRIBUTOR=<code>lsb_release -i -s 2> /dev/null || echo Debian</code> GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1" elsa@elsa-X510UQ:~$ cat /etc/mkinitcpio.conf cat: /etc/mkinitcpio.conf: Aucun fichier ou dossier de ce type
mars 24, 2020 à 10:42 am #11691nam1962KeymasterLà c’est bon, semble-t’il.
J’ai amendé le tuto pour intégrer l’installation de build-essential
Merci ! 🙂
Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc
mars 24, 2020 à 11:20 am #11692furnicketParticipantSuper, merci beaucoup Nam, ton tuto est génial je m’y réfère à chaque fois que je formate (j’ai du l’utiliser 4 ou 5 fois).
Bonne continuation ! -
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.