Auteur Sujet: Le SSD de LaFibre.info  (Lu 23473 fois)

0 Membres et 1 Invité sur ce sujet

Fuli10

  • Abonné Free fibre
  • *
  • Messages: 1 006
  • Conflans Sainte Honorine (78)
Le SSD de LaFibre.info
« Réponse #12 le: 19 novembre 2016 à 08:51:08 »
On ne peut pas écrire un seul octet sur un périphérique "bloc". ;)
Oui c'est vrai. Mais le comportement attendu d'un filesystem si on modifie un octet d'un fichier sans changer sa taille serait (c'est là que l'on entre dans les supputations) de récrire tout le même secteur avec juste l'octet de modifié. C'est d'autant plus utile sur un ssd que dans ce cas le contrôleur peut:
- optimiser l'écriture: écrire en flash = mettre des bits à zéro != effacer = mettre tous les bits de plusieurs pages à 1. Donc si le contrôleur détecte que le(s) octet(s) à modifier ne sont que des bits à mettre à zéro alors il peut récrire sur la même page avec juste les quelques bits de plus à zéro.
- s'il y a le moindre bit à mettre à 1, le contrôleur peut immédiatement marquer la page à effacer sans attendre le trim ou une autre réécriture du secteur, puis réallouer une nouvelle page libre pour l'écriture.
Edit: j'ai oublié qu'il y a des octets de correction d'erreur en plus par page. Donc modifier un octet de donnée à zéro va également modifier le crc et probablement mettre des bits à 1. Donc allocation d'une nouvelle page. Si l'optimisation d'écriture est possible, le cas ou l'utilisation de celle ci doit être tellement rare (faute aux crc) que sûrement pas implanté.
« Modifié: 19 novembre 2016 à 09:37:28 par Fuli10 »

vivien

  • Administrateur
  • *
  • Messages: 47 187
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #13 le: 19 novembre 2016 à 09:28:52 »
J'en profite pour poser une question : comment vérifier que trim est bien actif sur une partition ? (depuis Ubuntu 14.04 Trim est actif par défaut, sauf sur certains SSD blacklisté, mais j'aimerais bien vérifier)

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Le SSD de LaFibre.info
« Réponse #14 le: 19 novembre 2016 à 14:24:05 »
J'ai toujours lu que la meilleure méthode était de lancer fstrim périodiquement, idéalement une fois par jour, la nuit.

vivien

  • Administrateur
  • *
  • Messages: 47 187
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #15 le: 19 novembre 2016 à 14:30:49 »
Toutes les jours ou toutes les semaines ?

Sous Ubuntu, c'est mis par défaut une fois par semaine :

/etc/cron.weekly/fstrim avec Ubuntu 14.04 :
#!/bin/sh
# call fstrim-all to trim all mounted file systems which support it
set -e

# This only runs on Intel and Samsung SSDs by default, as some SSDs with faulty
# firmware may encounter data loss problems when running fstrim under high I/O
# load (e. g.  https://launchpad.net/bugs/1259829). You can append the
# --no-model-check option here to disable the vendor check and run fstrim on
# all SSD drives.
exec fstrim-all

/etc/cron.weekly/fstrim avec Ubuntu 16.04 LTS et Ubuntu 16.10 :
#!/bin/sh
# trim all mounted file systems which support it
/sbin/fstrim --all || true

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Le SSD de LaFibre.info
« Réponse #16 le: 20 novembre 2016 à 09:48:10 »
Moi je le paramètre 1x/jour.

Ca dépend du total d'I/O en écriture je pense. Ce qui est sûr, c'est que personne ne recommande de le faire à la volée.

vivien

  • Administrateur
  • *
  • Messages: 47 187
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #17 le: 20 novembre 2016 à 09:56:46 »
Voici les I/O de LaFibre.info (on note que les reboot le 17 au matin et le 18 a 6h du matin entraînent des IO en lecture alors qu’après c'est dans le cache)

La baisse depuis le 17 novembre à 18h00 est lié au passage de SmokePing sur Ramdsique :

Leon

  • Client SFR sur réseau Numericable
  • Modérateur
  • *
  • Messages: 5 991
Le SSD de LaFibre.info
« Réponse #18 le: 20 novembre 2016 à 10:21:02 »
C'est vraiment intéressant de voir comment tu arrives à optimiser tout ça.
6/ J'envisage de ne plus écrire les données d'un fichier modifié au bout de 30 seconde (la valeur par défaut), mais de 5 minutes. Ainsi la base de donnée, qui est modifiée des dizaines de fois par secondes ne sera plus écrite sur disque que toutes les 5 minutes et non toutes les 30 secondes.
Par rapport à ça, le réglage envisagé s'effectue à quel niveau? Au niveau du système de fichiers? Au niveau de l'application de la base de donnée?
Toutes les modifications ne se font pas "quasi instantanèment" sur le disque dur? J'avoue que ça me surprend...

Leon.

vivien

  • Administrateur
  • *
  • Messages: 47 187
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #19 le: 20 novembre 2016 à 10:40:25 »
Toutes les modifications ne se font pas "quasi instantanèment" sur le disque dur? J'avoue que ça me surprend...
J'ai en moyenne 20 modifications de la base de donnée par seconde pour LaFibre.info avec les commandes insert, update et delete (chaque consultation d'une page met à jour des compteurs par exemple du nombre de vue par exemple)
Si il devait y avoir une écriture systématique, les performances seraient mauvaises avec un disque dur traditionnel.

Le modification de ce paramètre se fait au moment de monter le système de fichier, c'est l'option commit=300 pour 300 secondes = 5 minutes

Par défaut, les données sont écrites sur un disque dur un maximum de 30 secondes. Si tu envoi un fichier de 500 Mo vers une clé USB, tu vois que c'est presque immédiat et que la clé travaille bien après que le transfert soit théoriquement terminé.

commit=secondes
Définir l’intervalle d’écritures périodiques, 30 secondes par défaut. Les plus grandes valeurs décalent la synchronisation des données vers le stockage permanent, avec des  conséquences  évidentes si le système plante. Aucune limite haute n’est forcée, mais un avertissement est affiché si elle est supérieure à 300 secondes (5 minutes).


Je l'ai mis en place sur mon PC perso (plus pour tester avant de mettre en prod sur LaFibre.info) :

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda5 during installation
UUID=3db51002-de26-4ce6-8488-d059e81d5e2a /               ext4    commit=300,errors=remount-ro 0       1
# /boot/efi was on /dev/sda2 during installation
UUID=BC6E-E649  /boot/efi       vfat    umask=0077      0       1
# /home was on /dev/sda7 during installation
UUID=830f10b9-dacd-4f60-a251-6830442099c4 /home           ext4    commit=300,defaults        0       2
# swap was on /dev/sda6 during installation
UUID=d0361555-30f9-4791-ad98-e8c6505293c9 none            swap    sw              0       0
# Placer /tmp sur un RamDisque
tmpfs                                     /tmp            tmpfs   defaults,size=4g 0       0

Cela semble pris en compte :
$ dmesg | grep EXT4-fs
[    1.341136] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null)
[    1.637965] EXT4-fs (sda5): re-mounted. Opts: commit=300,errors=remount-ro
[    2.004575] EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: commit=300

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Le SSD de LaFibre.info
« Réponse #20 le: 20 novembre 2016 à 16:22:31 »
J'en profite pour poser une question : comment vérifier que trim est bien actif sur une partition ? (depuis Ubuntu 14.04 Trim est actif par défaut, sauf sur certains SSD blacklisté, mais j'aimerais bien vérifier)
sudo fstrim -v /

Il dira "xxGB trimmed".
Mais normalement avec un 850 pro aucun soucis, seul le trim asynchrone est blacklisté dans le kernel.

vivien

  • Administrateur
  • *
  • Messages: 47 187
    • Twitter LaFibre.info
Le SSD de LaFibre.info
« Réponse #21 le: 20 novembre 2016 à 17:43:17 »
Intéressant. Sur un SSD bien rempli (SSD de 1 To rempli a 94%, avec seulement 60 Go de libre)

J'ai :
# fstrim -v /ssd
/ssd: 6,1 GiB (6585294848 bytes) trimmed


trouvant peu d'avoir seulement 6Go de trimmed sur les 60 Go de libre, je lance /sbin/fstrim --all

Et maintenant, j'ai :
# fstrim -v /ssd
/ssd: 0 B (0 bytes) trimmed


Pourquoi ?

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Le SSD de LaFibre.info
« Réponse #22 le: 20 novembre 2016 à 18:01:47 »
"fstrim -v /" lance le trim.

Donc si tu le relances, y'a plus rien à faire.

Sous Linux, le Trim ne s'active pas, il se lance.

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Le SSD de LaFibre.info
« Réponse #23 le: 20 novembre 2016 à 18:05:10 »
Intéressant. Sur un SSD bien rempli (SSD de 1 To rempli a 94%, avec seulement 60 Go de libre)

J'ai :
# fstrim -v /ssd
/ssd: 6,1 GiB (6585294848 bytes) trimmed


trouvant peu d'avoir seulement 6Go de trimmed sur les 60 Go de libre[/b][/color]
S'il y a des fstrim réguliers, comme sur Ubuntu, alors ce sont 6Go qui ont été effacés depuis la dernière exécution.

Et maintenant, j'ai :
# fstrim -v /ssd
/ssd: 0 B (0 bytes) trimmed


Pourquoi ?
Normal, les 6Go de blocs effacés au niveau filesystem sont maintenant également effacés sur le SSD, pas besoin de renvoyer la commande trim à nouveau.

Tu peux tester :
dd if=/dev/random of=/ssd/testfile bs=1M count=1024 conv=fsync
rm testfile
fstrim -v /ssd
Là tu devrais voir "1GB trimmed".