¿Qué es la Storage Class Memory o SCM?

La tecnología de almacenamiento basada en estado sólido (almacenamiento flash) ha ayudado a mitigar muchos de los cuellos de botella presentes en los sistemas como consecuencia de las limitaciones de la capa de almacenamiento, que sigue siendo el eslabón más lento de la cadena de procesamiento de datos. Por otro lado, la memoria (almacenamiento no persistente) sigue superando significativamente a los componentes flash más rápidos de la actualidad, pero el problema es que las tecnologías de memoria principal (DRAM, etc.) solo pueden escalar hasta un cierto punto (hasta los pocos TB en los servidores más potentes) y además tienen un coste bastante elevado, prohibitivo en grandes capacidades.

En paralelo, las nuevas necesidades en lo relativo al procesamiento analítico de los datos que están apareciendo en esta cuarta revolución industrial en la que nos encontramos han hecho que se incremente exponencialmente el uso de entornos de analíticas de datos de última generación (bases de datos masivamente paralelas, análisis masivo de grandes cantidades de datos, modelos de aprendizaje automático y aprendizaje profundo, etc.). Estos nuevos entornos y aplicativos de análisis de datos, con su uso intensivo de memoria, no hacen sino poner más presión sobre esta tecnología y los costes de propiedad.

La respuesta a este este nuevo reto parece estar en un nuevo medio de almacenamiento no-volátil, que tenga características de rendimiento cercano al de la memoria RAM (ultra baja latencia y gran ancho de banda), que esté conectado al bus de memoria para facilitar su asimilación tecnológica, y que no tenga los problemas de escalabilidad ni costes de la memoria principal.

A este nuevo medio de almacenamiento no-volátil, cuyo enfoque inicial es el de llenar el vacío tecnológico existente entre la DRAM y el flash NAND, se le conoce como Storage Class Memory o SCM (o incluso PMEM) y, como hemos visto en anteriores posts, la tecnología NVMe es un habilitador importante.

Para entender mejor el posicionamiento de esta tecnología he elaborado la siguiente pirámide:


En la actualidad, los dos principales productos SCM comerciales son el Optane de Intel (basado en tecnología 3D XPoint) y el Z-SSD de Samsung (basado en tecnología Z-NAND, que parece tratarse de V-NAND SLC con un FPGA específicamente desarrollado). La latencia de estas tecnologías es unas 10 veces menor que la de los actuales SSDs NVMe; Intel indica que su 3D XPoint tiene una latencia de unos 10μs y la de Z-NAND de Samsung tiene un tiempo de respuesta de unos 20μs.



También hay otros fabricantes que están trabajando en SCM y tienen implementaciones comerciales como los NVDIMMs (basados en memoria DRAM con una batería de respaldo para mantener la persistencia y un pequeño chip flash para el flush instantáneo de los datos volátiles a medio persistente), e incluso otros están desarrollando otras tecnologías SCM, algunas basadas en RAM magneto-resistiva (MRAM), otras en RAM resistiva (ReRAM o RRAM) como el Memristor, o incluso otras en RAM por nanotubos de carbono (la NRAM de Nantero).


Ventajas, costes y usos actuales

Además de las evidentes ventajas en escalabilidad de capacidad y bajos tiempos de respuesta de las tecnologías SCM, hay otro punto muy importante. Y es que, independientemente de las diferencias entre las distintas tecnologías SCM actuales, todas comparten la misma aproximación: se basan un mecanismo de bloqueo rápido que permite el acceso a nivel de byte y en el protocolo NVMe.

El acceso a nivel de byte es otra de las diferencias fundamentales con la tecnología flash NAND, ya que en lugar de realizar operaciones a nivel de bloque o de página como con los SSDs actuales, con SCM la capa de software puede acceder directamente a nivel de byte en el SCM lo que elimina la necesidad de borrar un bloque entero para poder reprogramarlo acelerando la E/S aleatoria y haciéndola más eficiente, y mejorando radicalmente el nivelado de las escrituras (wear-leveling).

Otra de las ventajas de SCM es que, al poder ser utilizada como memoria persistente de acceso muy rápido con latencias de nanosegundo, el sistema operativo que esté diseñado y soporte esta tecnología podrá beneficiarse de eliminar cambios de contexto y experimentar una notable mejora en su rendimiento: un sistema operativo multi-tarea utiliza el cambio de contexto para conmutar entre procesos a medida que uno de ellos está en espera de E/S por almacenamiento, pero si se mueve suficiente memoria persistente a una capa por encima del almacenamiento (a una capa conectada al bus de memoria, que esté a su nivel y con latencias de nanosegundos) se podrían eliminar muchos de los cambios de contexto que en la actualidad son necesarios cuando el dato tiene que ir de memoria principal no persistente a memoria secundaria persistente (alguien dijo alguna vez que la mejor situación de I/O es cuando no hay I/O).

En la actualidad, Windows 2016 soporta SCM (de momento NVDIMMs) para, por ejemplo, almacenar los ficheros de log transaccionales de SQL Server (y dejar los ficheros de los datafiles en almacenamiento convencional, por ejemplo, en SSD). Hyper-V y VMware también ofrecen ya soporte para SCM en forma de NVDIMMs, incluso hay un artículo interesante comparando el rendimiento frente a SSDs NVMe en vSphere 6.7 aquí.

El coste de esta tecnología es, hoy en día, bastante elevado (algo similar a lo que experimentó la tecnología flash NAND empresarial cuando apareció y se la comparaba con el disco rotacional). El coste estimado es de, aproximadamente, unos 4 $/GB, mientas que los SSDs NVMe de última generación están ya por debajo de los 2 $/GB y los SSDs SAS/SATA empresariales por debajo de 1$/GB. Otro de los principales problemas es, además del coste, la desidad o las capacidades actuales de los dispositivos SCM: los NVDIMMs mas grandes son de 32GB y las capacidades de Optane o Z-NAND no superan los 1.5TB.

De momento este nivel de almacenamiento se está utilizando como almacenamiento persistente de altísimo rendimiento para aplicaciones y entornos bastante específicos y exigentes, generalmente como almacenamiento en caché y tiering para aplicaciones. En breve, cuando se extienda el soporte por parte de los sistemas operativos pilas de aplicación y las distintas tecnologías, lo podremos utilizar para ampliar la memoria de los servidores haciendo un tiering de memoria interna automatizada entre DRAM y SCM (por ejemplo, actualmente ya existe una librería open source para la tecnología SCM y un modelo de programación definido por la SNIA: la NVML, que recientemente ha sido sustituida por el PMDK disponible para Linux, FreeBSD y Windows).

Comentarios

Entradas populares de este blog

Apache Spark 2.4: hacia la analítica de datos unificada

¿Qué es NVMe y porqué es clave?