N'oubliez pas d'accueillir les nouveaux membres par un petit mot dans la rubrique « Nos membres se présentent »  :)

Dynamisez votre système (2)

Répondre
Avatar du membre
jlb
Membre émérite
Membre émérite

Membre super posteur
Messages : 4078
Enregistré(e) le : mer. 11 avr. 2018 08:31
Localisation : Hautes-Pyrénées (65)
Nb de « J’aime » donnés: 527
Nb de « J’aime » reçus: 2128
A remercié : 769 fois
A été remercié(e) : 1192 fois

Dynamisez votre système (2)

Message n° 1


Message par jlb »

Partant du principe que la mémoire vive est plus rapide que les DD, ou même que les SSD et les NVMe, la méthode précédente cherchait à optimiser le rendement en retardant le moment où le trop-plein de la mémoire basculerait sur le support physique.
Elle concernait donc les mémoires limitées, pour lesquelles l'installateur d'Ubuntu a créé un fichier d'échange à la racine du système — voir fiche précédente

La méthode ci-après va plus loin : cette fois, l'espace d'échange se situe dans la RAM elle-même et les données sont compressées, ce qui revient en fait à augmenter virtuellement la capacité de la mémoire. Tout ceci grâce au module zRam, implémenté dans le noyau depuis Ubuntu 12 — quelques distributions, comme Fedora, l'activent désormais par défaut.

Cette méthode ne dépend donc pas de la taille de la RAM, mais des possibilités du processeur, l'effort qu'on lui demande étant normalement compensé par la rapidité d'accès à la mémoire.

Les possesseurs d'ordinateurs modernes sans swapfile mais à la mémoire un peu "limitée" y trouveront ainsi une sécurité pour des usages plus gourmands en mémoire.
Mais il ne faut pas rêver : sur un ordinosaure de 2007 doté d'un Intel Core 2 Duo, la méthode précédente a un meilleur rendement.

Il convient donc d'essayer les deux méthodes pour se faire une impression.
C'est dans cet esprit que je vous explique ci-dessous comment revenir en arrière .

 
          ♦♦♦         


Activation et paramétrage de zRam

Comme vous n'êtes pas censé avoir appliqué le tutoriel de la fiche précédente, on va commencer par vérifier la configuration en entrant cette ligne :
 

Code : Tout sélectionner

cat /proc/swaps

Sur ce retour bricolé pour les besoins, deux systèmes d'échange sont prévus : un swapfile sur le support physique et un espace zRam dans la RAM :
 

Code : Tout sélectionner

Filename                Type        Size        Used        Priority
/swapfile                 file        2097148        0        -2
/dev/zram0             partition    12109272    0        5


Mais ce n'est pas ce qu'on veut...
 
  • Si le swapfile est déjà activé, désactivez-le afin qu'il n'interfère pas avec zRAM :
     

    Code : Tout sélectionner

    sudo swapoff /swapfile
    

    Puis éditez le fichier "fstab" :
     

    Code : Tout sélectionner

    sudo gedit /etc/fstab
    
    ... et commentez cette ligne en ajoutant un "#" au début comme ceci : 
     

    Code : Tout sélectionner

    # /swapfile                                 none            swap    sw              0       0
    
    Enregistrez la modification.
 
  • Pour activer le module zRam, installez son script de configuration :

    Code : Tout sélectionner

    sudo apt update && sudo apt install zram-config
    


    Créez le service et démarrez-le :
     

    Code : Tout sélectionner

    systemctl enable zram-config
    systemctl start zram-config
    

    Enfin, éditez ce fichier :
     

    Code : Tout sélectionner

    sudo gedit /etc/sysctl.conf
    

    Faites en sorte qu'il se termine par ces deux lignes — la valeur 150 pour forcer le swap :
     

    Code : Tout sélectionner

    vm.swappiness = 150
    vm.vfs_cache_pressure=50
    
     Enregistrez et redémarrez :
     

    Code : Tout sélectionner

    reboot
    


    Vérifiez que tout est Ok. Cette fois, la ligne :
     

    Code : Tout sélectionner

    cat /proc/swaps
    
    ... devrait retourner quelque chose comme ceci :
     

    Code : Tout sélectionner

    Filename                                Type         Size        Used      Priority
    /dev/zram0                              partition    12109272    0         5
    
  • Pour modifier les réglages, éditez ce fichier :

    Code : Tout sélectionner

    sudo gedit /usr/bin/init-zram-swapping
    
    La taille de l'espace zRam est définie dans cette ligne :
     

    Code : Tout sélectionner

    mem=$((totalmem / 2 * 1024))
    
    Par défaut, elle correspond donc à la moitié de celle de la RAM.
    Remplacez "1024" par "512" pour la réduire au quart de celle de la RAM ou par "1536" pour l'augmenter aux trois-quarts.


  • En fonction de la puissance de votre processeur, vous trouverez peut-être un gain en adoptant l'algorithme de compression "zstd", plus performant que "lzo-rle".
    Ajoutez cette ligne juste après la précédente, comme ceci :

    Code : Tout sélectionner

    mem=$((totalmem / 2 * 1024))
    echo zstd > /sys/block/zram0/comp_algorithm
    
    Enregistrez la ou les modifications et redémarrez :l
     

    Code : Tout sélectionner

    reboot
    

    Vous pouvez vérifier la prise en compte des réglages avec cette commande :

    Code : Tout sélectionner

    zramctl
    
 
          ♦♦♦         


 Suppression de zRam et rétablissement du fichier d'échange
  • Pour supprimer zRam, on arrête le service, on le désactive et on désinstalle le script :

    Code : Tout sélectionner

    systemctl stop zram-config
    systemctl disable zram-config
    sudo apt purge zram-config
    
  • Pour rétablir le swapfile le cas échéant, on édite ce fichier :
     

    Code : Tout sélectionner

    sudo gedit /etc/fstab
    
    ... on décommente la ligne commençant par "# /swapfile" en supprimant le "#" et on enregistre.

    Ensuite, on active le fichier d'échange : 
     

    Code : Tout sélectionner

    sudo swapon /swapfile
    
    Puis on édite "sysctl.conf" :
     

    Code : Tout sélectionner

    sudo gedit /etc/sysctl.conf
    
    ... on remet le swappiness sur 10 et on enregistre.


    Dans les deux cas, on redémarre :
     

    Code : Tout sélectionner

    reboot
    

    🤓
4 J'aime ce message
 
Répondre

Créer un compte ou se connecter pour rejoindre la discussion

Vous devez être membre pour pouvoir répondre

Créer votre compte

Inscrivez-vous pour rejoindre notre communauté.
Participez aux discussions !
Créez vos propres sujets !

S’enregistrer

Membre déjà inscrit