Outils pour utilisateurs

Outils du site


linux-ssd

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édentesRévision précédente
Prochaine révision
Révision précédente
linux-ssd [2019/05/23 10:37] – [Autres pistes] sebsauvagelinux-ssd [2022/07/07 11:33] (Version actuelle) – [commit à 60 secondes] sebsauvage
Ligne 10: Ligne 10:
 ===== Réduire le swappiness ===== ===== Réduire le swappiness =====
  
-Le noyau de Linux possède un paramètre (//vm.swappiness//) qui indique la propension du système à swapper. Dans la plupart des distributions, ce paramètre est réglé à 60. C'est à dire que quand la mémoire vive sera remplie à 40%, le système va commencer à swapper préventivement des pages mémoire vers le disque (afin de ne pas pénaliser tout lancement éventuel d'une nouvelle application). +Le noyau de Linux possède un paramètre (//vm.swappiness//) qui indique la propension du système à swapper (c'est à dire à "sortir" des blocs mémoire vers le disque (swap) afin de laisser préventivement de la mémoire libre pour le lancement de nouvelles applications).
  
-On peut sans problème réduire ce paramètre à 10. Ainsi le système ne commencera à swapper que quand 90% de la mémoire sera utilisée.+Avec 60, le résultat est souvent que la machine commence à swapper alors que la mémoire n'est utilisée qu'à moitié. 
 + 
 +Sur une machine de bureau, on peut sans problème réduire ce paramètre à 10. 
  
   * **Configuration**: Ajoutez la ligne ''vm.swappiness=10'' à votre fichier ''/etc/sysctl.conf'':<code>sudo bash -c 'echo "vm.swappiness=10" >> /etc/sysctl.conf'</code>   * **Configuration**: Ajoutez la ligne ''vm.swappiness=10'' à votre fichier ''/etc/sysctl.conf'':<code>sudo bash -c 'echo "vm.swappiness=10" >> /etc/sysctl.conf'</code>
Ligne 39: Ligne 41:
   * **Activation**:<code>sudo apt install zram-config</code>   * **Activation**:<code>sudo apt install zram-config</code>
     * zram est immédiatement actif, et votre swap configuré pour pointer dessus.     * zram est immédiatement actif, et votre swap configuré pour pointer dessus.
 +
 +<note important>Ubuntu 22.04 semble avoir réussi à foirer le paquet zram-config: Il fonctionne mais n'utilise qu'un seul coeur.</note>
 +
   * **Vérification**:   * **Vérification**:
     * Pour vérifier que votre swap utilise zram:<code>cat /proc/swaps</code>     * Pour vérifier que votre swap utilise zram:<code>cat /proc/swaps</code>
Ligne 67: Ligne 72:
  
 \\  \\ 
 +
 +<note>**zswap** est une alternative à **zram**, mais avec un fonctionnement un peu différent. Les deux ne peuvent pas être utilisés simultanément. Après [[https://linuxfr.org/users/antistress/journaux/zswap-zram-earlyoom-organiser-la-gestion-d-une-penurie-de-memoire-vive|quelques]] [[https://baronhk.wordpress.com/2021/10/03/setting-up-zswap-in-debian-11-gnu-linux/|lectures]], il semblerait que zram soit surtout intéressant sur les machines sans swap disque, ou celle où le swap disque est à éviter au maximum (flash, SD... comme sur les smartphones ou les SBC (RaspberryPi)). Sur un ordinateur de bureau, zswap pourrait être plus intéressant (mais impose d'avoir un swap disque actif).</note>
  
 ---- ----
Ligne 76: Ligne 83:
 Il est possible de le mettre en mémoire vive avec //tmpfs//. Il est possible de le mettre en mémoire vive avec //tmpfs//.
  
-Pour cela il suffit de modifier votre fichier ''/etc/fstab'' en y ajoutant la ligne:+Pour cela il suffit de modifier votre fichier ''/etc/fstab'' en y ajoutant les lignes:
  
-<code>tmpfs /tmp tmpfs defaults,relatime,mode=1777,nosuid,size=4196M 0 0</code>+<code>tmpfs /tmp tmpfs defaults,relatime,mode=1777,nosuid,size=4196M 0 0 
 +tmpfs /var/tmp tmpfs defaults,relatime,mode=1777,nosuid,size=4196M 0 0</code> 
 + 
 +(Si vous aviez déjà une ligne concernant /tmp, commentez-la en mettant un ''#'' en début de ligne.)
  
 Redémarrez pour la prise en compte. Redémarrez pour la prise en compte.
Ligne 84: Ligne 94:
 Là nous avons créé un /tmp de 4 Go, ce qui est largement suffisant. N'hésitez pas à mettre une valeur aussi importante, même sur une machine avec peu de RAM: tmpfs ne consomme de la mémoire que quand on stock des données. Là nous avons créé un /tmp de 4 Go, ce qui est largement suffisant. N'hésitez pas à mettre une valeur aussi importante, même sur une machine avec peu de RAM: tmpfs ne consomme de la mémoire que quand on stock des données.
  
-Il vous est tout à fait possible de mettre d'autres répertoires en tmpfs de la même manière, mais n'oubliez pas que dès que la machine redémarre ou s’éteint, vous perdez les fichiers placé dans ces répertoires+Il vous est tout à fait possible de mettre d'autres répertoires en tmpfs de la même manière, mais n'oubliez pas que dès que la machine redémarre ou s’éteint, vous perdez les fichiers placé dans ces répertoires. 
-Il est déconseillé de mettre ''/var/tmp'' en tmpfs, car certaines applications s'attendent à une persistance de ce répertoire entre les redémarrage.+
  
 À savoir: À savoir:
   * tmpfs ne prendra jamais le pas sur vos applications: Si une application a besoin de mémoire, tmpfs ira swapper ses données pour laisser de la place à l'application.   * tmpfs ne prendra jamais le pas sur vos applications: Si une application a besoin de mémoire, tmpfs ira swapper ses données pour laisser de la place à l'application.
-  * Donc, si vous avez activé zram, tmpfs va automatiquement swapper (compresser) ses fichiers temporaires en mémoire (!).+  * tmpfs n'est pas compressémais si vous avez activé zram, tmpfs va automatiquement swapper (compresser) ses fichiers temporaires en mémoire.
  
 ----  ---- 
Ligne 106: Ligne 115:
   * Pour voir la quantité de données en attente d'écriture, vous pouvez faire: ''watch grep ^Dirty /proc/meminfo''   * Pour voir la quantité de données en attente d'écriture, vous pouvez faire: ''watch grep ^Dirty /proc/meminfo''
   * Vous pouvez à tout moment forcer les écritures disque qui sont en attente avec la commande ''sync''   * Vous pouvez à tout moment forcer les écritures disque qui sont en attente avec la commande ''sync''
 +  * Sur beaucoup de distributions, le système de fichiers btrfs a un commit par défaut de 30 secondes.
  
 ---- ----
  
-===== noatime ? non:relatime =====+===== noatime,nodiratime =====
  
 La plupart des systèmes de fichier - dont ex4 - sont capables d'enregistrer l'heure d'accès (//atime//), de création (//ctime//) et de modification (//mtime//) d'un fichier ou un répertoire. Si connaître l'heure d'accès d'un fichier peut être très pratique, cela veut dire que pour chaque //lecture// de fichier, cela déclenche une //écriture// disque (pour enregistrer la date de dernier accès).  Cela fait beaucoup d'écriture pour pas grand chose. La plupart des systèmes de fichier - dont ex4 - sont capables d'enregistrer l'heure d'accès (//atime//), de création (//ctime//) et de modification (//mtime//) d'un fichier ou un répertoire. Si connaître l'heure d'accès d'un fichier peut être très pratique, cela veut dire que pour chaque //lecture// de fichier, cela déclenche une //écriture// disque (pour enregistrer la date de dernier accès).  Cela fait beaucoup d'écriture pour pas grand chose.
  
-On trouve parfois des astuces sur internet qui recommandent d'ajouter //noatime// et //nodiratime// dans les options de montagece qui a pour effet de désactiver l'enregistrement de la date de dernier accès. Cela fonctionnemais certains logiciels ont besoin de connaître cette date pour fonctionner correctement.+À moins d'avoir des besoins spécifiques (//mutt// en a besoinou si vous avez des besoins de traçabilité d'accès aux fichiers)vous pouvez désactiver cela.
  
-Je ne vous recommande **pas** cette solution noatime/nodiratime, car la plupart des distributions récentes montent déjà vos partitions avec l'option //relatime// qui fait à peu près la même chose, mais ne met à jour la date d'accès qu'une fois par jour (ou quand mtime/ctime est plus récent). Cela permet de garder la fonctionnalité de //atime// tout en réduisant les accès disque.+L'option //relatime// permet de minimiser la mise à jour des dates d'accès (c'est d'ailleurs bien souvent une option mise par défaut), mais dans le cas d'un SSD sur une machine qui n'est pas un serveur vous pouvez carrément ajouter ''noatime,nodiratime''
 + 
 +Si vous utilisez btrfs, vous pouvez même remplacer ''relatime'' par ''noatime,nodiratime''. Cela fait quelques années que je tourne comme cela et je n'ai eu aucun soucis.
  
 ---- ----
Ligne 134: Ligne 146:
  
 Vous pouvez voir la consommation du cache en tapant ''about:cache''. Dans la partie //disk// vous devriez voir //Storage disk location: none, only stored in memory//. Vous pouvez voir la consommation du cache en tapant ''about:cache''. Dans la partie //disk// vous devriez voir //Storage disk location: none, only stored in memory//.
 +
 +==== Chrome ====
 +
 +Chrome ne possède aucune option permettant de couper le cache disque. Conséquence: Il écrit comme un goret sur disque. La solution est de mettre le répertoire cache de Chrome en tmpfs dans votre ''/etc/fstab''.
  
 ==== VirtualBox ==== ==== VirtualBox ====
linux-ssd.1558607869.txt.gz · Dernière modification : 2019/05/23 10:37 de sebsauvage