Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Hiérarchie des technologies de mémoire/stockage et SQL Server

Il y a un vieux dicton de réseau qui dit :« Les problèmes de bande passante peuvent être résolus avec de l'argent. Les problèmes de latence sont plus difficiles car la vitesse de la lumière est fixe.

Traditionnellement, il y avait quatre couches principales dans la hiérarchie globale de la mémoire et du stockage d'un serveur de base de données. En commençant par le haut de la pyramide, vous disposez d'une mémoire cache statique à accès aléatoire (SRAM), qui est généralement divisée entre des caches L1 et L2 relativement petits et rapides pour chaque cœur physique d'un processeur et un plus grand, plus lent, sur puce, cache L3 partagé pour l'ensemble du processeur. Par exemple, le processeur Intel Xeon E7-8890 v4 14 nm (Broadwell-EX) dispose d'un cache L1 de 64 Ko par cœur et d'un cache L2 de 256 Ko par cœur, ainsi que d'un cache L3 de 60 Mo beaucoup plus grand mais plus lent qui est partagé sur l'ensemble du processeur physique. .

La deuxième couche est la mémoire dynamique à accès aléatoire (DRAM) avec des capacités de licence allant jusqu'à 4 To avec Windows Server 2012 R2, allant jusqu'à 24 To avec Windows Server 2016 et avec des latences de l'ordre de la nanoseconde. La SRAM et la DRAM sont toutes deux volatiles, ce qui signifie qu'elles ne contiennent des données que lorsque l'alimentation électrique est appliquée.

La troisième couche est constituée de SSD SATA/SAS (NAND), avec des capacités individuelles allant jusqu'à environ 4 To et des latences de l'ordre de la microseconde. Un facteur limitant avec les anciens SSD SATA/SAS (NAND) est le fait qu'ils utilisent l'interface SATA/SAS qui limite leur bande passante totale, en fonction de la version SATA/SAS qu'ils utilisent. Ils sont également limités par l'utilisation du protocole AHCI hérité qui a beaucoup plus de surcharge d'E/S et une latence plus élevée que le nouveau protocole NVMe. La quatrième couche est constituée d'anciens disques durs à support magnétique tournant, avec des capacités individuelles allant jusqu'à 10 To et des latences de l'ordre de la milliseconde.

Chacune de ces couches traditionnelles a une latence plus élevée, mais un coût par Mo/Go inférieur et une capacité totale plus élevée à mesure que vous descendez dans la hiérarchie mémoire/stockage. La latence relative de ces quatre couches traditionnelles est indiquée dans le tableau 1.

Interface Type Latence relative (lectures)
Sur le cœur/Sur le processeur Cache SRAM 1x
Attacher directement DRAM DDR4 10x
PCIe NVMe ou SATA/SAS AHCI SSD 100 000x
SAS/SATA Disque dur 10 000 000x

Tableau 1 :Couches de mémoire/stockage traditionnelles

Nouvelles couches de mémoire/stockage

Au cours des deux dernières années, nous avons assisté à l'introduction et à l'utilisation croissante des SSD PCIe NVM Express (NVMe) basés sur la technologie flash NAND existante. Ceux-ci ont généralement des latences de l'ordre de 50 à 100 microsecondes. Ils utilisent également le protocole NVMe plus récent et beaucoup plus efficace et l'interface PCIe, offrant de bien meilleures performances que les anciens SSD SAS/SATA utilisant l'ancien protocole AHCI.

Actuellement, Hewlett Packard Enterprise (HPE) vend des modules NVDIMM de 8 Go pour ses serveurs HPE Proliant DL360 Gen9 et HPE Proliant DL380 Gen9. Ces modules ont 8 Go de DRAM qui sont soutenus par 8 Go de mémoire flash pour 899,00 $, ce qui est assez cher par gigaoctet. Ces serveurs à deux sockets disposent de 24 emplacements mémoire qui prennent chacun en charge jusqu'à 128 Go de modules DIMM DDR4 traditionnels. Tous les emplacements que vous utilisez pour les modules NVDIMM ne seront pas disponibles pour une utilisation régulière de la mémoire. Vous pouvez utiliser un maximum de 16 emplacements de mémoire pour une utilisation NVDIMM, ce qui vous donne une capacité maximale de 128 Go. Vous devez utiliser des processeurs de la série Intel Xeon E5-2600 v4 pour bénéficier de la prise en charge officielle de NVDIMM. Micron devrait commercialiser des modules NVDIMM de 16 Go de plus grande capacité en octobre 2016.

Appareil IOPS Latence moyenne (ns) Mo/s
SSD NVM Express 14 553 66 632 56,85
NVDIMM en mode bloc 148 567 6 418 580.34
NVDIMM en mode DAX 1 112 007 828 4 343,78

Tableau 2 :Comparaison des performances d'écriture aléatoire 4K (1 thread, QD1)

Les chiffres de performances du tableau 2 proviennent d'une présentation Microsoft/Intel (mémoire persistante dans Windows) à l'IDF16 à San Francisco, en utilisant cette méthodologie de test de performances :

  • Charge de travail :écritures aléatoires de 4 Ko, 1 thread, 1 E/S exceptionnelles, E/S synchrones, fichier de 1 Go, NTFS, préchauffage de 3 s, temps de mesure de 7 s
  • Matériel :HPE ProLiant DL380 Gen9, 2x Intel Xeon E5-2650L v3 à 1,8 GHz, 96 Go de RAM, 2x 8 Go NVDIMM-N, 1x 1600 Go NVMe SSD
  • Logiciel  :version pré-publiée de WS 2016, outil d'E/S interne de Microsoft

Il existe une bonne vidéo de Channel 9 intitulée Accelerating SQL Server 2016 Performance with Persistent Memory in Windows Server 2016 mettant en vedette Lindsey Allen et Tobias Klima. Une démonstration dans la vidéo montre comment SQL Server 2016 exécuté sur Windows Server 2016 prend en charge le mode DAX (avec un indicateur de trace non spécifié). Une fois que Windows Server 2016 sera GA, l'indicateur de trace ne sera plus nécessaire avec une future version de SQL Server.

Ces nouvelles couches de stockage de mémoire s'inséreront entre la mémoire DRAM traditionnelle et les SSD SATA/SAS.

Un volume de stockage qui a été formaté en mode DAX peut être utilisé pour héberger un fichier journal des transactions SQL Server 2016 dans un scénario où vous avez besoin des meilleures performances d'écriture possibles et où vous ne souhaitez pas utiliser la durabilité différée ou l'OLTP en mémoire. Un autre scénario possible consisterait à utiliser un volume en mode DAX pour héberger vos fichiers de données tempdb si vous aviez une charge de travail qui mettait une pression extrême sur tempdb.

Futures couches de mémoire/stockage

Fin 2016/début 2017, on devrait voir arriver les SSD Intel Optane utilisant le protocole NVMe. Il s'agira de périphériques de stockage flash qui utilisent la technologie Intel/Micron 3D XPoint (prononcé comme cross-point), qui fonctionneront sur les serveurs existants. Lors des tests internes d'Intel, ces appareils affichent une latence environ 10 fois plus faible et environ 10 fois plus d'IOPS que les appareils SSD Intel DC P3700 Series PCIe NVMe à très hautes performances existants.

Mi/fin 2017, nous devrions également voir le déploiement d'une nouvelle forme de DIMM persistant qui peut être utilisé comme mémoire persistante de très grande capacité, ou comme stockage de faible capacité extrêmement performant. Ceux-ci seront électriquement et physiquement compatibles avec les modules DIMM DDR4 actuels et seront pris en charge dans la plate-forme basée sur le processeur Intel Xeon de nouvelle génération (la plate-forme Skylake "Purley"). Ces produits seront également basés sur la technologie Intel/Micron 3D XPoint. Ces modules DIMM Intel offriront jusqu'à deux fois la capacité de mémoire système à un coût nettement inférieur à celui de la DRAM DDR4 traditionnelle, en supposant que votre plate-forme processeur/serveur la prenne en charge (et que Microsoft augmente la limite de mémoire de licence après la sortie de Windows Server 2016). Ces modules DIMM n'auront pas la même latence que les DRAM traditionnelles (ils seront plus lents), mais ils offriront une latence bien inférieure à celle des périphériques de stockage PCIe NVMe.

D'un point de vue plus large, à l'échelle de l'industrie, cette nouvelle catégorie de dispositifs de mémoire persistante (PM) offrira un stockage non volatile avec des performances proches de celles de la DRAM. Les périphériques PM résident directement sur le bus mémoire, ce qui leur confère une latence très faible et une bande passante élevée. Microsoft prend en charge les périphériques PM dans la mise à jour anniversaire de Windows 10 et Windows Server 2016. Une nouvelle classe de volume de stockage sera prise en charge, appelée volume de stockage à accès direct (DAX). Les volumes DAX utilisent des fichiers mappés en mémoire pour fournir aux applications un accès direct aux périphériques PM pour des performances optimales.

L'une des raisons pour lesquelles le mode DAX est tellement plus rapide est qu'une fois que vous avez mappé en mémoire la région de NVDIMM sur un volume DAX, d'autres interactions avec ce stockage contournent complètement la pile de stockage. C'est littéralement juste une copie de mémoire pour que les données soient persistantes. C'est beaucoup de code que vous n'avez pas à exécuter à chaque interaction avec le stockage. C'est un autre contributeur très important à la latence (avec la vitesse de la lumière). Les volumes DAX sont pris en charge sur NTFS et vous devez choisir le mode DAX lorsque vous formatez le volume. Les applications (telles que SQL Server 2016) doivent avoir été modifiées (par Microsoft) afin de prendre en charge et d'utiliser le mode DAX, et vous devrez également activer un indicateur de trace.

Pour la rétrocompatibilité sur le matériel PM, il y aura également des volumes en mode bloc, qui conservent toute la sémantique de stockage existante. Toutes les opérations d'E/S traverseront la pile de stockage vers le pilote de disque PM. Cela rend le mode Bloc entièrement compatible avec les applications existantes. Si vous disposez d'un périphérique matériel PM, avec un système d'exploitation pris en charge, vous obtiendrez des performances de stockage significatives sans aucune modification de l'application en mode Bloc. Cela signifie que les versions de bas niveau de SQL Server pourront utiliser les volumes de stockage en mode bloc.

L'essentiel sur tout cela est que nous aurons beaucoup plus de flexibilité et de nouvelles options pour concevoir et configurer vos couches de sous-système de mémoire et de stockage au cours des 12 à 18 prochains mois, tant que vous utilisez SQL Server 2016 sur Windows. Server 2016 et disposent d'un matériel suffisamment récent pour prendre en charge les périphériques PM. Les anciennes versions de SQL Server pourront utiliser les volumes PM en mode bloc si elles s'exécutent sur Windows Server 2016. Le matériel plus ancien et les anciennes versions de Windows Server pourront utiliser les SSD Intel Optane. Cela nous donnera de nombreux choix supplémentaires pour améliorer les performances de stockage !