Nov 10th 2009 09:48 pm Comparatif Disque SSD et SAS 15000rpm
Suite à une surcharge permanente de mon serveur depuis quelques mois je songe sérieusement à le changer. Je vais rester chez OVH, je suis assez content de leur service depuis le début et mon dieu de l’infogérance qui m’a sauvé plus d’une fois ne travaille qu’avec OVH… Alors on ne change pas une équipe qui gagne.
A départ je pensais passer sur une architecture avec 2 serveurs. Le plan de dev pour modifier mes scripts était bien avancé. J’ai entendu parler de Memcached chez Mrboo, ce qui m’a rappelé un billet chez Koreus. Bref, j’ai passé une petite journée dans la doc de Memcached puis dans mon code pour voir comment je pouvais l’adapter chez moi. Et là c’est le coup de foudre… Je peux jeter mon sale système de cache maison qui fait planter ma machine contre un système de cache un poil plus sérieux utilisé par des petites startups qui montent (digg et facebook par exemple).
Mon architecture à deux serveur ne présentant plus beaucoup d’intérêt, je jette mon dévolu sur un serveur HG-2010. Reste à choisir le disque SSD 80Go ou SAS 15000rpm 300Go. Sachant qu’ils seront monté en RAID1 (disques miroir).
Le disque SSD est plus petit mais peut largement contenir mon site et mes bases de données si je n’utilise pas mon système de cache merdique. A priori ça ne devrait pas dépasser 10Go… Et même si ça double (peu probable) il me reste 60Go de marge.
Et là je tombe sur un comparatif très détaillé des disques SSD Intel X25-E SLC 32Go et SAS Seagate Cheetah 15000RPM 300Go.
OVH propose un SSD Intel X25-M (et pas E) et pas de référence pour le SAS. On dira que les disques SAS sont à peu près équivalents. Pour les caractéristiques des SSD :
- X25-M: Read 65µs, Write 85µs, MTBF 1.2million heure, sequential read 250Mb/s, sequential write 70Mb/s. Voir la doc
- X25-E: Read 75µs, Write 85µs, MTBF 2millions heures, sequential read 250Mb/s, sequential write 170Mb/s. Voir la doc
En gros les perfs sont équivalentes seulement le M écrit 2.5 fois moins vite. Je prendrais donc les résultats du comparatif et je diviserais par 2.5 pour les tests d’écriture et les tests de R/W (les résultats seront faux mais pas surestimés). Autre point, la durée de vie est plus faible… mais 1.2 million d’heure reste quand même raisonnable (en plus il y a la sécurité du RAID1).
Bref, voici les résultats du comparatif compilés et corrigés pour une utilisation mono-disque.



Les résultats d’écriture/lecture random sont, parait-il, plus proche de la réalité. Pour de l’I/O simple le SSD aurait un débit 240% meilleur (au minimum, certainement plus vu mon approximation). Pour de l’écriture sur base de données l’amélioration est de 650%, en lecture 2300%.
Bref, malgré les incertitudes de mes approximations le SSD semble meilleur sur tous les points.
Reste à savoir maintenant comment je vais configurer Memcached. Je vais avoir 48Go de RAM sur mon serveur, je pense allouer entre 8 et 12 Go pour Memcache, d’après mes estimations ça devrait être assez bien dosé (je compte bien utiliser le cache à fond). Par contre je n’ai jamais vu autant d’allocation de mémoire (en général c’est plutôt quelques Mo)… Ce sera donc la grande surprise sur les performances globales.
Si je travaille bien, le temps d’accès aux pages devrait redescendre sous la seconde (disque SSD + cache en RAM+ 3fois+de mémoire + proc plus puissant + eaccelerator = un peu mieux qu’avant?).
Posted by Arnaud Jeulin / Technique
Romain on 11 Nov 2009 at 17:48 #
Memcached c’est le bonheur ! Mais il faut faire attention à ce que la DB puisse tourner sans memcached et sans planter. Car si tu vides Memcached et que ton site est down le temps de tout re-cacher car la DB ne suit plus, ça peut être problématique :-)
Arnaud Jeulin on 11 Nov 2009 at 18:27 #
le site tourne sans memcached mais il est très lent…
Sen on 11 Nov 2009 at 20:01 #
Je suis également chez OVH, et voici un petit comparatif entre un disque classique et un disque SSD :
Avec un “Hitachi Desktar 7K1000, 750Go, 7200 RPM” de l’offre “Superplan BestOf Premium 08 Revolution” :
# hdparm -Tt /dev/md1
/dev/md1:
Timing cached reads: 14320 MB in 2.00 seconds = 7164.91 MB/sec
Timing buffered disk reads: 246 MB in 3.01 seconds = 81.84 MB/sec
Avec un “Intel SSD X25-M, 80Go” de l’offre “SuperPlan SSD 09″ :
# hdparm -Tt /dev/md1
/dev/md1:
Timing cached reads: 34852 MB in 2.00 seconds = 17443.04 MB/sec
Timing buffered disk reads: 616 MB in 3.01 seconds = 204.70 MB/sec
NB : le nombre d’i-nodes du système de fichier par défaut de linux sur le SSD est beaucoup plus petit (i.e. que le nombre de fichiers et de répertoires possibles est plus limité). C’est un détail qui peut avoir son importance…
Sen on 11 Nov 2009 at 20:13 #
Attention avec la librairie Memcache : en fonction de la taille des blocks, l’allocation en mémoire peut prendre bien plus de place que prévu (sans oublier qu’il faut ajouter environ 70 octets de structure de données pour chaque objet mis en mémoire, sans oublier également qu’un objet ne peut pas faire plus de 1Mo et que la clé doit faire moins de 255 octets).
Dans mes derniers essais, alors qu’en théorie, Memcache devait allouer 50Mo, au final, Memcache a alloué plus de 100Mo en mémoire. Il faut alors jouer avec certains paramètres pour optimiser la taille des “chunks” (tout un programme).
Mais au final, ça vaut le coup : je gère 200000 visiteurs par jour sans aucun problème (mon serveur s’essoufle un peu quand on atteint les 100K visites/heure d’après mes tests).
Arnaud Jeulin on 11 Nov 2009 at 21:30 #
J’ai vu qu’il fallait jouer sur les paramètres pour affiner memcache. Je ferais mes tests en prod :)