Comparatif : les SSD PCIe

NVM Express

Revenons un peu en arrière. Il y a seulement trois ans, le paysage du stockage sur SSD était assez différent de ce que l’on connait aujourd’hui. Pendant des années, Intel et les autres fabricants ont présenté les SSD comme les remplaçants des disques durs : même format (2,5 pouces, 7 ou 9,5 mm), même interface (SATA 6 Gbps) et même protocole d’interface (AHCI). Les performances comme la fiabilité des SSD progressaient de mois en mois. Les caractéristiques techniques comme la régularité des performances et l’endurance en écriture n’étaient pas universellement reconnues au-delà d’une année. Si certains SSD étaient capables de saturer l’interface SATA pour certaines opérations séquentielles, la majorité des goulets d’étranglement se situaient à l’intérieur des SSD : contrôleurs, firmware et NAND n’évoluaient généralement pas au point où l’interface pouvait engendrer des problèmes de performances. Puis en mars 2011, l’industrie a fait un énorme pas en avant avec la sortie du NVMe 1.0.

Le terme « industrie » englobe ici la quasi-totalité des acteurs majeurs sur le marché du stockage flash : les 13 entreprises constituant le groupe de travail initial, soutenu par plus de 80 membres, incluait notamment Intel, Micron, Samsung, Dell, EMC, NetApp, IDT et Marvell. Le but était de libérer les futures solutions de stockage des limitations propres au SATA et à l’AHCI. Le NVMe (Non-Volatile Memory Express) est donc une nouvelle norme qui remplace l’AHCI pour les SSD PCIe, en mettant l’accent sur le rendement et l’échelonnement des performances. Il ne faut pas oublier que l’AHCI a été développé à une époque où le stockage impliquait  secteurs et des cylindres, tout en sachant que la latence des disques durs ne représentait qu’une fraction du temps d’accès aux données.

Aussi surprenant que cela puisse paraitre, si le NVMe réduit significativement plusieurs composantes de la latence globale, la latence propre à la NAND reste la plus problématique. Cette situation est donc le lot des puces de NAND Flash et SSD actuels, mais le NVMe a été conçu en tenant compte des futures technologies de mémoire non volatile : les technologies résistives, comme par exemple la mémoire à changement de phase et la magnétorésistance à effet tunnel pourraient s’avérer 1000 fois plus rapides que la NAND actuelle. Le goulet d’étranglement reviendrait alors au protocole d’interface.

Ceci étant dit, le NVMe ne se contente pas de réduire la latence. Le fait est que la notion de parallélisme n’a pas été pleinement intégrée à l’AHCI : des fonctionnalités comme le NCQ (Native Command Queuing) ont certes contribué à optimiser les débits, mais l’implémentation de l’AHCI n’a jamais permis aux SSD d’exploiter pleinement le parallélisme de leur architecture.

Un des buts du NVMe était d’éradiquer définitivement ces goulets d’étranglement artificiels. Il suffit de lire un test de SSD pour voir que le nombre d’IOPS est généralement mesuré avec des files d’attentes de taille croissante, sachant que le plafond se situe  normalement à 32 commandes. C’est précisément dans ce cas que la plupart des SSD SATA en AHCI parviennent à leurs performances optimales, mais aussi la limite de l’AHCI. Le problème tient au fait que de nombreux contrôleurs de mémoire Flash sont capable de gérer des files d’attentes nettement plus longues, ce dont on se rend bien compte en observant les SSD PCIe qui utilisent des pilotes propriétaires : plusieurs produits comme le Micron P320h donnent le meilleur d’eux-mêmes lorsque la file d’attente grimpe à 256 commandes. Le NVMe permet non seulement de passer de 32 à 64 000 commandes maximum par file d’attente, mais aussi de repousser le nombre maximal de fil d’attentes de 1 jusqu’à 64 000. C’est ce qui s’appelle anticiper l’avenir.

Un des problèmes majeurs qui touchait l’ensemble des SSD PCIe tient à la compatibilité de leurs pilotes : chaque SSD PCIe dispose de son propre pilote. Certaines marques ont fait un excellent travail, tandis que d’autres ont eu beaucoup plus de mal. Pire encore, à moins que les marques n’incluent leur propre option ROM, il était impossible de booter à partir de ces SSD PCIe. Si ce procédé était généralement tolérable dans des environnements professionnels, le grand public avait besoin d’une approche plus simple.

Le NVMe propose un pilote standard qui sera pris en charge dans de multiples environnements et propose notamment la prise en charge du BIOS pour le démarrage. A l’heure actuelle, plusieurs OS assurent une compatibilité native avec ce pilote, notamment Windows 8.1 et Windows Server 2012 R2, mais Intel dispose également d’un pilote autonome. Nous ne savons pas encore exactement comment la prise en charge du pilote se développera à l’avenir : les fabricants peuvent aussi bien s’appuyer sur le pilote intégré que développer un pilote propriétaire.

Le SSD DC P3700 permet-il de booter ? La réponse est oui, mais avec une toute une série de réserves. Premièrement, il est nécessaire d’avoir une configuration compatible UEFI 2.3.1 ainsi qu’un OS avec prise en charge native du pilote. Fort heureusement, c’était bien le cas de notre machine de test sous Windows Server 2012 R2. Les choses se compliquent au stade de l’installation, plus délicate qu’il n’y parait. Notre première tentative s’est achevée sur l’écran permettant de choisir le périphérique de destination : on voyait bien le P3700, mais Windows le considérait comme non bootable. Nous avons donc fait un tour dans le BIOS pour voir si le P3700 était bien reconnu, ce qui n’était pas le cas. Sur une intuition, nous sommes finalement allés dans le menu dédié au démarrage pour voir les options disponibles. Le DVD-ROM proposait deux entrées : Legacy et UEFI. Il a ensuite suffi de démarrer en mode UEFI pour résoudre le problème : l’installeur Windows était alors non seulement capable de détecter le P3700, mais aussi de le proposer comme périphérique de boot. Précisons qu’au terme du processus d’installation, le P3700 apparaissait dans le BIOS parmi les options UEFI au démarrage,  non pas en tant qu’Intel SSD DC P3700, mais en tant que périphérique dans le gestionnaire de démarrage Windows.

Pour finir, nous avons comparé les temps de démarrage de notre serveur avec un Intel SSD DC S3700 800 Go et un Intel SSD DC P3700. N’oublions pas qu’il s’agit d’un serveur et par conséquent, le processus de démarrage de ces machines n’est presque jamais décrit comme étant rapide.

Démarrage SSD DC S3700 : 64,8 secondes

Démarrage SSD DC P3700 : 44,5 secondes

Comme on peut le voir, le temps de boot est réduit de 20 bonnes secondes. Précisons que le serveur nécessite pratiquement 20 secondes pour sortir de l’étape POST : le temps nécessaire pour arriver à l’identification était donc extrêmement court.

Comme on peut le voir sur cette capture d’écran de Diskpart, le P3700 est bien le périphérique de démarrage. Notons par ailleurs que Windows sait qu’il s’agit d’un périphérique NVMe et connait sa position dans le complexe racine PCIe.

Posez une question dans la catégorie Les news : vos réactions du forum
Cette page n'accepte plus de commentaires
Soyez le premier à commenter
    Votre commentaire