Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Wullfk

[tuto] Optimiser SSD dans GNU/Linux

Messages recommandés

Bonsoir,

 

après le bon topic réalisé par LdeVinci pour Windows 7

 

voici celui pour GNU/Linux (Ubuntu)

 

Je ne vais pas remettre les spécificité propre aux SSD ça déjà été fait, au mieux je ne peux que vous conseiller de lire les 2 sujets réalisé par BHMag :

Test Le point sur les SSD

Test Optimiser son SSD

par contre l'utilisation d'un SSD avec une distribution GNU/Linux est un peu particulière, et pour certains elle pourra paraitre plus délicate à maitriser.

 

d'abord il faut quand même prendre en compte, ou tout du moins connaitre trois points techniques non évoqués jusqu'à présent liés aux SSD.

 

 

Termes techniques liés aux SSD

  • Alignement des partitions

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

C'est une technique utilisé 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

C'est un mécanisme visant à réorganiser la table d'allocation à la volée, ce qui permet 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 ?

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?

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

 

sudo fdisk -lu /dev/sda

 

vous devriez obtenir quelques chose comme ceci :

Disque /dev/sdd: 64.0 Go, 64023257088 octets
255 têtes, 63 secteurs/piste, 7783 cylindres, total 125045424 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 : 0x00055066

Périphérique Amorce  Début        Fin      Blocs 	Id  Système
/dev/sdd1   *        2048    40038399    20018176   83  Linux
/dev/sdd2        40040446   125044735    42502145    5  Etendue
/dev/sdd5        40040448   125044735    42502144   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é)

je m'étendrais pas sur ce point car cette méthode provient du forum Forum HardWare.fr : Discussions Informatiques & Généralistes 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)

Ne pas confondre formatage et partitionnement, même si les deux sont lié, on peu parfaitement faire un formatage automatique, et un partitionnement manuel.

 

C'est ce que j'ai choisis pour mon cas, sur la base d'un SSD CORSAIR P64 (64Go) pour lequel j'ai mis à jour le firmware afin qu'il prenne en compte le TRIM (arf! encore un terme barbare)

 

pour bien comprendre , il faut savoir que j'ai partitionner mon SSD comme ceci :

 

sdd1 : /

sdd2 : partition étendue (là j'aurais du mettre en primaire, mais bon c'est pas grave en soit)

sdd5 : /home

 

bien évidement vous aurez constatez qu'il n'y a pas de partition swap

 

L'alignement obtenu :

Disque /dev/sdd: 64.0 Go, 64023257088 octets

255 têtes, 63 secteurs/piste, 7783 cylindres, total 125045424 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 : 0x00055066

 

Périphérique Amorce Début Fin Blocs Id Système

/dev/sdd1 * 2048 40038399 20018176 83 Linux

/dev/sdd2 40040446 125044735 42502145 5 Etendue

/dev/sdd5 40040448 125044735 42502144 83 Linux

 

si j'avais pris la peine d'effectuer un alignement bien "carré", j'aurais du avoir ceci :

 

Périphérique Amorce Début Fin Blocs Id Système

/dev/sdd1 * 2048 40038399 20018176 83 Linux

/dev/sdd2 40038400 125044736 42503168 5 Etendue

/dev/sdd5 40040448 125044735 42502144 83 Linux

 

résultat, il y a presque 1 Mo entre sdd1 et sdd2, soit 2047ko , on peut dire que je m'en sort pas trop mal.

 

Optimiser l'usage du SSD

 

il n'existent 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ées 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), dans lequel vous trouvez des lignes telles que :

 

UUID=57480a3f-e7db-4a5e-9fca-7df45f5a7d9d /   			ext4    defaults,noatime,nodiratime,errors=remount-ro 0   	1 

 

Si noatime n'est pas indiqué après defaults , vous pouvez le rajouter (séparé par une virgule).

 

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 le fichier /etc/fstab (avec les droits d'administration) et ajoutez-y la ligne suivante :

 

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

 

on peut vérifier dans une fenêtre terminal que le "tmpfs" est bien présent avec la commande :

 

df

 

note: la commande fournis sur Forum HardWare.fr : Discussions Informatiques & Généralistes ne fonctionne pas chez moi.

 

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. La commande à mettre dans la tâche cron est la suivante :

 

find /tmp -type f -mmin +1440 -delete > /dev/null

 

 

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 permet de forcer l'utilisation de la mémoire vive et d'économiser l'espace qu'aurait pris cette partition sur le disque dur !

 

  • Supprimer le swap

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éé 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 :

 

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, ouvrez le fichier /etc/sysctl.conf (avec les droits d'administration) 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.).

 

 

4 - Modifier le cache de Firefox

 

Pour place 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écent). Vous pouvez vérifier cela en mode terminal :

 

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

conditions requises :

  • disposer d'un SSD supportant le TRIM
  • utilise 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 son fichier /etc/fstab (en mode administrateur) et de rajouter l'option discard dans les lignes correspondant au montage des volumes en ext4.

 

# /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,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

devient

 

# /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.

 

 

Optimiser la vitesse du SSD

  • Input/Output Scheduling

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 :

cat /sys/block/sda/queue/scheduler

 

L'option la meilleure, celle qui optimise les I/O pour la rapidité des temps d'accès des SSD est "deadline". 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.

 

Pour grub2 (depuis Ubuntu 9.10)

Il faut modifier le fichier /etc/default/grub avec les droits d'administrateur 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 :

sudo update-grub

 

Sources originales :

Modifié par Wullfk

Partager ce message


Lien à poster
Partager sur d’autres sites

:ptdr: j'arrive pas à mettre certaines lignes de code tel quel devrait être visualisé (en utilisant les BBCodes), si un modérateur peu me dire comment faire, je suis preneur.

 

Merci ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Dylav,

 

vite fait avant de partir au boulot.

 

oui c'est la balise

 qui me pose des soucis, dans le sens que normalement au niveau de chaque # je dois être sur une nouvelle ligne.

hors que la ça met tout à la suite.

 

tu me suis...

 

bon j'y go sinon je vais être à la bourre :grin6:

 

@+ ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Les principes de la balise [code],

  • la police est imposée, de largeur fixe (Courier New),
  • le contenu est laissé tel quel, sans aucune mise en forme BBCode
    (en particulier, les URL ne sont pas « cliquables »).

Contrairement à tes espérances, la situation est donc conforme à cette définition. Tu pourrais t'en sortir avec la balise [quote], où toute mise en forme est possible. Mais tu n'y bénéficierais pas non plus d'un saut à la ligne automatique en présence d'un « # »

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est bon j'ai réglé le problème, en fait je faisais un copié/collé d'un texte déjà formaté sur mon blog externe. (qui utilise Dotclear)

 

j'ai donc copier ce texte dans le bloc-note (lui n'accepte qu'un seul type de police), puis de là je l'ai copié/collé dans mon message, et la la balise code fonctionne comme je l'attendais au départ.

 

cette peut être tordu comme solution, mais en tout cas ça fonctionne.

 

Salut ;).

Partager ce message


Lien à poster
Partager sur d’autres sites

je sais pas si j'ai bien saisie ce que tu veux dire, mais pour ma part je pense pas que cela aurait eu le rendu que je souhaitais, à savoir que le code lui même (puisqu'il s'agit de ligne de code dans un fichier) n'a pas de saut de ligne.

et tel qu'il est maintenant représenté dans le message, cela correspond à ce que l'on doit obtenir (la couleur en moins évidement) dans Ubuntu.

 

tu vois ou je veux en venir.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ben si, tu édites ton post dans l'éditeur BBCode et, dans chaque boîte de code, tu coupes la ligne devant chaque # pour forcer le retour à la ligne (plus quelques autres sauts) : avec ta dextérité légendaire, tu en avais pour trente secondes environ

:grin6:

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Yes :outch: bien vu l'aveugle :super: , j'avais pas pensé à ça , en fait si j'y avais pensé, et je l'avais appliqué mais avec l'ancienne police et sa ne fonctionnait pas, du coup j'ai cherché à comprendre pourquoi le BBcode ne voulait absolument pas tenir compte de mes retours à la ligne.

ça va j'ai eu toute la journée pour y penser :grin6: (pas Suisse pour rien :lol: )

Partager ce message


Lien à poster
Partager sur d’autres sites

Votre contenu devra être approuvé par un modérateur

Invité
Vous postez un commentaire en tant qu’invité. Si vous avez un compte, merci de vous connecter.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×