sql >> Base de Datos >  >> RDS >> Sqlserver

Jerarquía de tecnología de memoria/almacenamiento y SQL Server

Hay un viejo dicho en la red que dice:“Los problemas de ancho de banda se pueden curar con dinero. Los problemas de latencia son más difíciles porque la velocidad de la luz es fija”.

Tradicionalmente, ha habido cuatro capas principales en la jerarquía general de memoria y almacenamiento de un servidor de base de datos. Comenzando en la parte superior de la pirámide, tiene almacenamiento en caché de memoria estática de acceso aleatorio (SRAM), que generalmente se divide entre cachés L1 y L2 relativamente pequeños y rápidos para cada núcleo físico de un procesador y un más grande, más lento, en la matriz, caché L3 compartida para todo el procesador. Por ejemplo, el procesador Intel Xeon E7-8890 v4 de 14 nm (Broadwell-EX) tiene una memoria caché L1 de 64 KB por núcleo y una memoria caché L2 de 256 KB por núcleo, junto con una memoria caché L3 de 60 MB mucho más grande pero más lenta que se comparte en todo el procesador físico. .

La segunda capa es la memoria dinámica de acceso aleatorio (DRAM) con capacidades de licencia de hasta 4 TB con Windows Server 2012 R2, hasta 24 TB con Windows Server 2016 y con latencias en el rango de nanosegundos. Tanto la SRAM como la DRAM son volátiles, lo que significa que almacenan datos solo cuando se aplica energía eléctrica.

La tercera capa son los SSD SATA/SAS (NAND), con capacidades individuales de hasta aproximadamente 4 TB y latencias en el rango de microsegundos. Un factor limitante con los SSD SATA/SAS (NAND) más antiguos es el hecho de que utilizan la interfaz SATA/SAS, lo que limita su ancho de banda total, según la versión de SATA/SAS que utilicen. También están limitados por el uso del protocolo AHCI heredado que tiene mucha más sobrecarga de E/S y mayor latencia que el protocolo NVMe más nuevo. La cuarta capa son las unidades de disco duro heredadas de medios giratorios magnéticos, con capacidades individuales de hasta 10 TB y latencias en el rango de milisegundos.

Cada una de estas capas tradicionales tiene una latencia más alta, pero un costo más bajo por MB/GB y una capacidad total más alta a medida que desciende en la jerarquía de memoria/almacenamiento. La latencia relativa de estas cuatro capas tradicionales se muestra en la Tabla 1.

Interfaz Tipo Latencia relativa (lecturas)
CPU en el núcleo/en matriz Caché SRAM 1x
Adjunto directo DRAM DDR4 10x
PCIe NVMe o SATA/SAS AHCI SSD 100.000x
SAS/SATA HDD 10,000,000x

Tabla 1:Memoria tradicional/capas de almacenamiento

Nuevas capas de memoria/almacenamiento

En los últimos dos años, hemos visto la introducción y el aumento del uso de SSD PCIe NVM Express (NVMe) basadas en la tecnología flash NAND existente. Por lo general, tienen latencias en el rango de 50 a 100 microsegundos. También usan el protocolo NVMe más nuevo y mucho más eficiente y la interfaz PCIe, lo que brinda un rendimiento mucho mejor que los SSD SAS/SATA más antiguos que usan el antiguo protocolo AHCI.

Actualmente, Hewlett Packard Enterprise (HPE) vende módulos NVDIMM de 8 GB para sus servidores HPE Proliant DL360 Gen9 y servidores HPE Proliant DL380 Gen9. Estos módulos tienen 8GB de DRAM respaldados por 8GB de flash por $899.00, que es bastante caro por gigabyte. Estos servidores de dos sockets tienen 24 ranuras de memoria, cada una de las cuales admite DIMM DDR4 tradicionales de hasta 128 GB. Las ranuras que utilice para los módulos NVDIMM no estarán disponibles para el uso normal de la memoria. Puede usar un máximo de 16 ranuras de memoria para el uso de NVDIMM, lo que le brinda una capacidad máxima de 128 GB. Debe usar procesadores de la serie Intel Xeon E5-2600 v4 para obtener soporte NVDIMM oficial. Micron está programado para lanzar NVDIMM de 16 GB de mayor capacidad en octubre de 2016.

Dispositivo IOPS Latencia media (ns) MB/seg
SSD NVM Express 14.553 66.632 56,85
Modo de bloque NVDIMM 148.567 6418 580,34
Modo DAX NVDIMM 1,112,007 828 4343,78

Tabla 2:Comparación de rendimiento de escritura aleatoria de 4K (1 subproceso, QD1)

Las cifras de rendimiento de la Tabla 2 son de una presentación de Microsoft/Intel (Memoria persistente en Windows) en IDF16 en San Francisco, utilizando esta metodología de prueba de rendimiento:

  • Carga de trabajo :escrituras aleatorias de 4 KB, 1 subproceso, 1 E/S pendiente, E/S síncrona, archivo de 1 GB, NTFS, calentamiento de 3 s, tiempo de medición de 7 s
  • Hardware :HPE ProLiant DL380 Gen9, 2 Intel Xeon E5-2650L v3 a 1,8 GHz, 96 GB de RAM, 2 NVDIMM-N de 8 GB, 1 SSD NVMe de 1600 GB
  • Software :Versión preliminar de WS 2016, herramienta de E/S interna de Microsoft

Hay un buen video de Channel 9 llamado Accelerating SQL Server 2016 Performance with Persistent Memory in Windows Server 2016 con Lindsey Allen y Tobias Klima. Una demostración en el video muestra cómo SQL Server 2016 que se ejecuta en Windows Server 2016 admite el modo DAX (con un indicador de seguimiento no especificado). Una vez que Windows Server 2016 pase a la disponibilidad general, el indicador de seguimiento no será necesario con una versión futura de SQL Server.

Estas nuevas capas de almacenamiento de memoria se ubicarán entre la memoria DRAM tradicional y los SSD SATA/SAS.

Un volumen de almacenamiento que se ha formateado en modo DAX podría usarse para hospedar un archivo de registro de transacciones de SQL Server 2016 en un escenario en el que necesita el mejor rendimiento de escritura posible y no desea usar la durabilidad retrasada o OLTP en memoria. Otro escenario posible sería usar un volumen en modo DAX para alojar sus archivos de datos de tempdb si tuviera una carga de trabajo que pusiera una tensión extrema en tempdb.

Capas de memoria/almacenamiento futuras

A fines de 2016 o principios de 2017, deberíamos ver la introducción de las unidades SSD Intel Optane con el protocolo NVMe. Estos serán dispositivos de almacenamiento flash que utilizan la tecnología Intel/Micron 3D XPoint (pronunciada como punto de cruce), que funcionarán en los servidores existentes. En las pruebas internas de Intel, estos dispositivos muestran una latencia aproximadamente 10 veces menor y un IOPS aproximadamente 10 veces mayor que los dispositivos SSD Intel DC P3700 Series PCIe NVMe de muy alto rendimiento existentes.

A mediados o fines de 2017, también deberíamos ver el lanzamiento de una nueva forma de DIMM persistente que se puede usar como memoria persistente de gran capacidad o como almacenamiento de baja capacidad y rendimiento extremadamente alto. Estos serán eléctrica y físicamente compatibles con los DIMM DDR4 actuales y serán compatibles con la plataforma basada en el procesador Intel Xeon de próxima generación (la plataforma Skylake "Purley"). Estos productos también se basarán en la tecnología Intel/Micron 3D XPoint. Estos DIMM Intel ofrecerán hasta el doble de la capacidad de memoria del sistema a un costo significativamente menor que la DRAM DDR4 tradicional, suponiendo que su plataforma de procesador/servidor lo admita (y Microsoft aumente el límite de memoria de la licencia después del lanzamiento de Windows Server 2016). Estos DIMM no tendrán la misma latencia que la DRAM tradicional (serán más lentos), pero ofrecerán una latencia mucho más baja que los dispositivos de almacenamiento PCIe NVMe.

Desde una perspectiva más amplia de toda la industria, esta nueva categoría de dispositivos de memoria persistente (PM) ofrecerá almacenamiento no volátil con un rendimiento similar al de DRAM. Los dispositivos PM residen directamente en el bus de memoria, lo que les otorga una latencia muy baja y un ancho de banda alto. Microsoft admite dispositivos PM en Windows 10 Anniversary Update y Windows Server 2016. Habrá soporte para una nueva clase de volumen de almacenamiento, que se denomina Volumen de almacenamiento de acceso directo (DAX). Los volúmenes DAX utilizan archivos asignados a la memoria para brindar a las aplicaciones acceso directo a los dispositivos PM para obtener el mejor rendimiento absoluto.

Una de las razones por las que el modo DAX es mucho más rápido es porque una vez que ha asignado la memoria de la región de NVDIMM en un volumen DAX, las interacciones posteriores con ese almacenamiento pasan por alto por completo la pila de almacenamiento. Es literalmente solo una copia de memoria para que los datos sean persistentes. Eso es mucho código que no tiene que ejecutar en cada interacción con el almacenamiento. Ese es otro contribuyente muy significativo a la latencia (junto con la velocidad de la luz). Los volúmenes DAX son compatibles con NTFS y debe elegir el modo DAX cuando formatea el volumen. Las aplicaciones (como SQL Server 2016) deben haber sido modificadas (por Microsoft) para admitir y usar el modo DAX, y también deberá habilitar un indicador de seguimiento.

Para la compatibilidad con versiones anteriores del hardware de PM, también habrá volúmenes en modo Bloque, que mantienen toda la semántica de almacenamiento existente. Todas las operaciones de E/S atravesarán la pila de almacenamiento hasta el controlador de disco PM. Esto hace que el modo Bloque sea totalmente compatible con las aplicaciones existentes. Si tiene un dispositivo de hardware PM, con un sistema operativo compatible, obtendrá un rendimiento de almacenamiento significativo sin ninguna modificación de la aplicación en modo Bloque. Esto significa que las versiones de nivel inferior de SQL Server podrán usar volúmenes de almacenamiento en modo Bloque.

La conclusión de todo esto es que tendremos mucha más flexibilidad y nuevas opciones sobre cómo diseñar y configurar sus capas de memoria y subsistema de almacenamiento durante los próximos 12 a 18 meses, siempre que use SQL Server 2016 en Windows. Server 2016 y tiene hardware lo suficientemente nuevo que puede admitir dispositivos PM. Las versiones anteriores de SQL Server podrán usar volúmenes PM en modo de bloque si se ejecutan en Windows Server 2016. El hardware anterior y las versiones anteriores de Windows Server podrán usar SSD Intel Optane. ¡Esto nos dará muchas opciones adicionales para mejorar el rendimiento del almacenamiento!