Optimisation SSD avec Ubuntu

Avant de poser une question, voyez si on n'y a pas déjà répondu pour vous !

Modérateur : Mods GNU/Linux

Avatar de l’utilisateur
Wullfk
Geek à longue barbe
Geek à longue barbe
Messages : 684
Inscription : 28 avr. 2010 20:16
Localisation : en sortant première à gauche
Contact :

Optimisation SSD avec Ubuntu

Message par Wullfk » 25 juin 2015 02:01

GNU/Linux sur un SSD

L’utilisation d’un SSD avec une distribution GNU/Linux est un peu particulière, et pour certains elle pourra paraître plus délicate à maîtriser.
D’abord il faut quand même prendre en compte, ou tout du moins connaître trois points techniques liés aux SSD.

Termes techniques liés aux SSD

  • Alignement des partitions
[/b]
Même si l'alignement des partitions n'est pas spécifique aux SSD, il n'a que très peu d'importance sur un spinoff, sauf dans le cas des volumes RAID5. L'alignement consiste à faire correspondre les blocs logiques des partitions avec les blocs physiques du SSD pour améliorer les performances de celui-ci afin de limiter les opérations de lecture et d'écriture.

  • Wear levelling
[/b]
C'est une Technique utilisée par les contrôleurs des SSD. Elle consiste à répartir l'usure des puces mémoires en écrivant le moins souvent possible dans les même cellules, et en profitant ainsi au maximum du nombre de cycles de lecture-écriture de chacune des cellules. De ce fait, avec un bon algorithme de wear levelling, on arrive à faire en sorte qu'un SSD ait une durée de vie de l'ordre de plusieurs années.

  • Garbage collector
[/b]
C'est un Mécanisme visant à réorganiser la table d'allocation à la volée, permettant de conserver un bon niveau lors d'écritures séquentielles sur une zone précédemment écrite de manière aléatoire.

Avantage : on récupère les performances d'origine du SSD en écriture séquentielle ou presque.

Inconvénient : on génère de nombreuses écritures dans les puces mémoire, ce qui a tendance à amoindrir la durée de vie du SSD, et le disque travaillant en interne, il ne libère pas les pages de Flash comme le fait le TRIM, ce qui fait que cela n'est efficace que pour les écritures séquentielles, sans améliorer les écritures aléatoires. Tous les SSD semblent utiliser ce procédé, de manière plus ou moins agressive, et ce à la volée ou en tâche de fond (on parle alors de background garbage collection) en fonction de l'objectif du fabricant.

Alignement des partitions

  • C’est quoi l'alignement ?
[/b]
Le contrôleur d'un SSD gère la mémoire par "blocs", généralement de 1 Mio. Cela sert à plusieurs choses : d'une part, les accès mémoire se font généralement par blocs pour améliorer les performances, et d'autre part, ces blocs sont régulièrement permutés pour prolonger la durée de vie du disque. Pour de bonnes performances, il est préférable que le début de partitions coïncide avec le début des blocs. On appelle cela l'alignement.

  • Vérification de l’alignement du SSD?
[/b]
Par défaut, lors du formatage d'un disque, Ubuntu détecte qu'il s'agit d'un SSD et aligne les partitions automatiquement (y compris en partitionnement manuel).
Si vous voulez en être sûr, tapez dans un terminal :

Code : Tout sélectionner

sudo fdisk -lu /dev/sda
vous devriez obtenir quelques chose comme ceci :

Code : Tout sélectionner

Disque /dev/sda: ---- Go, -------------- octets
--- têtes, -- secteurs/piste, ------ cylindres, total ------- secteurs
Unités = secteurs de 1 * 512 = 512 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : ----------

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sda1            XXXX        YYYY       ZZZZ     83  Linux
Vous pouvez alors vérifier que le début de chaque partition ("XXXX") est un multiple de 2048 (secteurs). Comme un secteur fait 512 octets, et que 2048 × 512 = 1 Mio, votre SSD est aligné !

  • Formatage manuel du SSD (usage avancé)
[/b]
Je ne m’étendrais pas sur ce point car cette méthode provient du forum http://forum.hardware.fr et elle a été initialement conçue pour Arch. La méthode de partitionnement est susceptible de varier sous Ubuntu

Ne suivez cette méthode que si vous êtes sûr de vous et que si vous savez résoudre des problèmes pouvant arriver au cours d'un formatage !

  • Formatage automatique du SSD (de base)
[/b]
Ne pas confondre formatage et partitionnement, même si les deux sont liés, on peut parfaitement faire un formatage automatique, et un partitionnement manuel.
C’est ce que j’ai choisis pour mon cas, j'ai partitionné mon SSD comme ceci :

sdd1 : /
sdd2 : /home


il n'y a pas de partition swap.

Note: sur ma config principale Ubuntu 14.04 64Bits avec un SSD SAMSUNG Série 850 EVO 250Go SATA III j'ai créé une partition Swap)

(Pour plus d'info sur le Swap, lire le paragraphe 3)

  • Optimiser l'usage du SSD
[/b]
Il n’existe pas d'étude suffisamment claire quant à la durée de vie des mémoires SSD par rapport aux disques durs. les sections qui suivent vous explique comment minimiser les accès en écriture du SSD.
Les points 2 à 4 sont réservés aux PC ayant plus de 512 Mio de mémoire vive (RAM).

1 - Réduire la fréquence d'écriture des partitions

Utilisez l'option noatime pour éviter d'écrire sur le disque la date du dernier accès en lecture lorsqu'il n'y a pas d'écriture. De même avec nodiratime pour les dossiers.

Note : il existe le même type de réglage sur Windows pour les partitions NTFS

Vérifier que vos partitions sont montées avec cette option en ouvrant le fichier /etc/fstab avec les droits d'administration: [!] Préférable d'utiliser nano plutôt que gedit.

Code : Tout sélectionner

sudo gedit /etc/fstab
dans lequel vous trouvez des lignes telles que :

Code : Tout sélectionner

UUID=57480a3f-e7db-4a5e-9fca-7df45f5a7d9d /               ext4    defaults,noatime,errors=remount-ro 0    1
Si noatime n'est pas indiqué après defaults , vous pouvez le rajouter (séparé par une virgule)
nodiratime est superflu, car noatime est un sur-ensemble de nodiratime (qui est alors sous-entendu)

2 - Mettre les fichiers temporaires en mémoire vive

Le système utilise un certains nombre de fichiers temporaires, qu'il n'est pas nécessaire de conserver d'un démarrage à l'autre. Il est possible de les placer dans la mémoire vive (qui est vidée à l'arrêt de l'ordinateur) au lieu de les avoir dans le SSD.
Cependant, certains logiciels (tels que l'environnement de bureau KDE) utilisent un grand nombre de fichiers temporaires, et devront alors les recréer, ce qui peut ralentir le démarrage si vous utilisez ces logiciels.
Pour mettre les fichiers temporaires en mémoire vive (par exemple, pour une taille maximum de 1 Gio), ouvrez dans un terminal le fichier /etc/fstab avec les droits d'administration: [!] Préférable d'utiliser nano plutôt que gedit.

Code : Tout sélectionner

sudo gedit /etc/fstab
et ajoutez-y la ligne suivante :

Code : Tout sélectionner

tmpfs      /tmp            tmpfs        defaults,size=1g           0    0
on peut vérifier dans un terminal que le "tmpfs" est bien présent avec la commande : df

Note: bizarrement ce réglage me crash systématiquement Firefox, j'ai pas la certitude que cela provienne de ce réglage, du coup, j'ai remis celui que j'ai dans l'autre config avec Ubuntu en 32Bits.

Code : Tout sélectionner

tmpfs      /tmp            tmpfs        defaults,noatime,mode=1777 0    0
Pour ceux qui laissent leur machine allumée 24h/24, une astuce consiste à placer une règle cron qui vide les fichiers temporaires à intervalle régulier, afin de ne pas encombrer la mémoire.

Pour regarder le contenu de votre crontab, tapez dans un terminal :

Code : Tout sélectionner

crontab -l
Pour éditer le fichier de votre crontab, tapez :

Code : Tout sélectionner

crontab -e
Par défaut c'est l'éditeur nano qui édite le fichier crontab

La commande à mettre dans la tâche cron est la suivante :

Code : Tout sélectionner

find /tmp -type f -mmin +1440 -delete > /dev/null
Pour ma part j'ai mis un délais de 20mn pour vider les fichiers temporaires à intervalle régulier.

Code : Tout sélectionner

20    *    *    *    *    find /tmp -type f -mmin +1440 -delete > /dev/null
Enregistrez le fichier en appuyant sur Ctrl + O et appuyez sur Entrée pour confirmer. Appuyez sur Ctrl + X pour fermer nano après avoir sauvegardé le fichier.

Quand vous sortez de l'éditeur, le nouveau fichier crontab sera installé. Le fichier est stocké dans /var/spool/cron/crontabs/<user> mais doit seulement être édité par l'intermédiaire de la commande crontab.

Si vous constatez des problèmes de connexion à certains sites sur lesquels vous êtes enregistré, supprimer ce réglage

3 - Le Swap

Les SSD n’aiment pas le SWAP (partition d'échange qui permet de délester l'utilisation de la mémoire, mais oblige à de multiple lecture/écriture sur le périphérique)
Il est possible de ne pas créer de partition SWAP durant l'installation d'Ubuntu en définissant les partitions manuellement (mode avancé). Cela va forcer l'utilisation de la mémoire vive et économiser l'espace qu'aurait pris cette partition sur le disque dur !

  • Supprimer le swap
[/b]
Cette astuce ne s'adresse qu'à ceux dont la machine dispose d'au moins 1 Go de RAM. Il est possible dans ce cas, et suivant l'utilisation que l'on fait de la machine de ne pas se servir de swap. Pour cela, soit on ne créer aucune partition de swap lors de l'installation de la distribution, soit, dans le fichier /etc/fstab, on commente la ligne montant le fichier swap avec le signe # :

UUID=bd746caf-bd0c-4649-baa7-d680bb91a6d0 swap swap defaults 0 0

devient alors :

#UUID=bd746caf-bd0c-4649-baa7-d680bb91a6d0 swap swap defaults 0 0

Il peut être préférable d'utiliser la méthode consistant à ne pas monter une partition de swap existante, de manière à pouvoir la réactiver facilement en cas de besoin, l'utilisation du swap pouvant varier en fonction de l'utilisation de la machine.
Si malgré tout vous avez créé une partition SWAP (notamment pour bénéficier de l'hibernation sur les portables), mais que vous souhaitez en minimiser l'usage, rien n’est perdu pour autant, dans un terminal ouvrir le fichier /etc/sysctl.conf avec les droits d'administration [!] Préférable d'utiliser nano plutôt que gedit.

Code : Tout sélectionner

sudo gedit /etc/sysctl.conf
et ajoutez à la fin :
vm.swappiness=0

Cette ligne indique à Ubuntu de n'utiliser la swap qu'en dernier recours quand votre RAM est “full” ! (“ 1 “ indique de l'utiliser seulement lorsqu'il ne reste que 1 % de disponible en RAM, “ 2” quand il reste 2 %, etc.).

Une autre méthode consiste à activer zRAM, qui est un module du noyau qui compresse la mémoire vive au lieu de la déplacer dans la partition d'échange en cas de manque de mémoire vive. La partition d'échange ne servant que si la mémoire vive est entièrement compressée. Pour ce faire il suffit d'installer le paquet zram-config et le tour est joué

Code : Tout sélectionner

sudo apt-get install zram-config
4 - Modifier le cache de Firefox

Pour déplacer le cache de Firefox dans le répertoire /tmp/firefox (RAM). Taper about:config dans Firefox et créer une nouvelle chaîne de caractères que vous nommerez browser.cache.disk.parent_directory et saisir /tmp/firefox.
Si vous avez une connexion suffisamment rapide, vous pouvez désactiver complètement le cache persistant en modifiant l'option browser.cache.disk.enable avec la valeur false.

5 - Le Trimming.

Comme il a déjà été dit, les disques SSD voient leurs performances diminuer à mesure que les cellules (bloc mémoire) se remplissent (même partiellement) et cela induit des performances en écriture de plus en plus médiocres à mesure que le SSD vieillit et qu'il y a de moins en moins de cellules vierges disponibles.
Ce phénomène est dû à la manière dont le SSD fonctionne en écriture au niveau des cellules de mémoire flash : si une cellule est vierge, le contrôleur peut directement écrire dedans - par contre si elle contient déjà des données (même 1 seul bloc d'allocation de 4k alors que la cellule contient 1024k au total), le contrôleur doit lire la cellule + la remettre à zéro + écrire les données.
Une opération beaucoup plus lente. Le Trimming a pour objet d'indiquer au contrôleur du SSD lorsque des blocs d'allocation se libèrent suite à l'effacement de fichiers par le filesystem (ce qu'il ne peut pas savoir directement à priori); et donc que ces plages libérées sont à nouveau disponibles pour écrire dessus - charge étant au contrôleur de remettre à zéro les cellules qui peuvent l'être et ainsi augmenter les cellules vierges disponibles. Bien entendu, il faut que le SSD supporte la commande TRIM afin de pouvoir réaliser cette opération (ce qui est le cas pour la plupart des SSD récents). Vous pouvez vérifier cela dans un terminal :

Code : Tout sélectionner

sudo hdparm -I /dev/sda
Cette commande permet de lister tous les paramètres et fonctionnalités du SSD. Dans le paragraphe "Commands/features" une ligne doit clairement indiquer le support TRIM. Il existe plusieurs mécanismes de Trimming des SSD :

  • Trimming à la volée
[/b]
conditions requises :
  • Disposer d'un SSD supportant le TRIM
  • Utiliser une distribution proposant au moins le kernel 2.6.33
  • Utiliser EXT4 comme système de fichier
C’est de loin la solution la plus facile et la plus souple. Il suffit alors d'éditer le fichier /etc/fstab (avec Gedit en mode administrateur) et de rajouter l'option discard dans les lignes correspondant au montage des volumes en ext4.

Note: Avec Ubuntu 14.04 le montage des fichiers systèmes avec l'option "discard" n'est pas recommandé

# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sda1
UUID=f0d9c48e-00c4-4225-ab21-1c5a42194bc8 / ext4 async,noatime,discard,errors=remount-ro 0 1
# /dev/sda2
UUID=43e974d7-82d9-43b1-b67b-5233b18f056e none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0


Ensuite les commandes de TRIM sont directement passées au contrôleur du SSD par le kernel, de façon entièrement transparente.

  • Activer le TRIM avec fstrim
[/b]
Le montage des fichiers systèmes avec l'option "discard" n'est pas recommandé, car cela se traduira probablement par une baisse des performances en utilisation normale. Cependant, vous pouvez utiliser TRIM en exécutant la commande fstrim occasionnellement ou de créer votre propre tâche cron qui exécute fstrim via un calendrier.
pour activer le TRIM de votre SSD sur Ubuntu, il suffit d'ouvrir un terminal et d'exécuter la commande suivante:

Code : Tout sélectionner

sudo fstrim -v /
Si vous souhaitez exécuter TRIM régulièrement, vous pouvez simplement créer une tâche cron qui exécute la commande fstrim pour vous.
Voilà comment faire une tâche cron qui le fera automatiquement
d'abord, exécutez la commande suivante pour ouvrir l'éditeur de texte nano avec les permissions root:

Code : Tout sélectionner

sudo nano /etc/cron.daily/fstrim
Saisir ou copier/coller le code suivant dans le fichier:
#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG


Les deux dernières commandes dans le code ci-dessus effectuent le Trimming réel pour la racine (/) et la partition (/ home) et consigne les résultats dans /var/log/trim.log. Vous devrez peut-être modifier ces commandes pour adapter à votre cas particulier. Si vous ne disposez pas d'une partition / home séparée vous devez supprimer la dernière ligne. Ajoutez ici les partitions de SSD pour lequel vous souhaitez activer le travail quotidien du TRIM (normalement , vous devez ajouter "/" si la partition racine est sur le SSD et "/ home" si vous avez mis en place une partition home séparée)

Enregistrez le fichier en appuyant sur Ctrl + O et appuyez sur Entrée pour confirmer. Appuyez sur Ctrl + X pour fermer nano après avoir sauvegardé le fichier
dernièrement, exécutez la commande suivante pour rendre le script exécutable:

Code : Tout sélectionner

sudo chmod +x /etc/cron.daily/fstrim
Optimiser la vitesse du SSD

  • Input/Output Scheduling
[/b]
Ce mécanisme de réarrangement des IOCTL a pour objet d'optimiser les commandes I/O vers le disque dur ATA/SATA en prenant en compte la nature du disque dur en question et certaines contraintes en découlant. Il y a trois différentes options : cfq, noop et deadline. Par défaut dans Ubuntu, l'option "cfq" est utilisée car elle convient bien aux disques durs mécaniques, en réorganisant la queue des commandes I/O en fonction des temps de rotation des plateaux et des délais de "seek" des têtes. Vous pouvez vérifier quel I/O Scheduler est utilisé par votre système dans un terminal comme ceci :

Code : Tout sélectionner

cat /sys/block/sda/queue/scheduler
L'option "deadline" est probablement la meilleure car elle optimise les I/O pour un gain en rapidité de temps d'accès aux SSD. Heureusement, il existe une manière simple de déclarer cette option "deadline" de façon permanente en la passant directement dans les paramètres donnés au kernel lors du démarrage.

6 - Pour grub2 (depuis Ubuntu 9.10)

Il faut modifier le fichier en éditant /etc/default/grub avec les droits d'administrateur: [!] Préférable d'utiliser nano plutôt que gedit.

Code : Tout sélectionner

sudo gedit /etc/default/grub
et rajouter "elevator=deadline" à la ligne d'options :
GRUB_CMDLINE_LINUX_DEFAULT="elevator=deadline quiet splash"

puis mettre à jour grub pour que les modifications soient passées à grub.cfg :

Code : Tout sélectionner

sudo update-grub
Sources originales :

http://doc.ubuntu-fr.org/ssd_solid_state_drive
Les SSD sous Linux : recensement, optimisation, conseils
Optimiser son SSD sous Linux

Autre sources :

http://www.howtogeek.com/176978/ubuntu- ... -yourself/
http://www.webupd8.org/2013/01/enable-t ... rives.html

Vous pouvez retrouver ce tuto sur mes blogs :
http://easy.pc.blog.free.fr
http://easy-pc.over-blog.com

Ce tutoriel est aussi disponible au format PDF :
http://easy.pc.blog.free.fr/public/PDF/ ... Ubuntu.pdf
"L'expérience est le nom que l'on donne à ses erreurs" ~ Oscar Wilde ~
Blogs: http://easy.pc.blog.free.fr OU http://easy-pc.over-blog.com
Mes configs
30 Astuces pour Ubuntu 14.04


Avatar de l’utilisateur
Malekal_morte
Site Admin
Site Admin
Messages : 87321
Inscription : 10 sept. 2005 13:57
Contact :

Re: Tuto optimisation SSD avec Ubuntu

Message par Malekal_morte » 24 sept. 2015 09:50

Merci je vais déplacer dans la partie tutorial du forum.
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas

Sécuriser son ordinateur (version courte)

Tutoriels Logiciels - Tutoriel Windows - Windows 10

Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares

Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.

Répondre

Revenir vers « Tutoriels et annonces »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité