Ésta es realmente la pregunta del millón; a día de hoy, la tecnología flash ya “cura” un montón de “enfermedades” en el datacenter e incluso es capaz de prolongar el ciclo de vida de la IT, de un proyecto, y sobre todo de la infraestructura de almacenamiento subyacente. No obstante, y a lo largo de esta série de entradas en el blog, voy a ir desgranando qué es necesario para que ésta panacea amplíe su espectro de acción.

Comencemos por repasar lo bueno, lo feo y lo malo de la tecnología en sí y enseguida nos daremos cuenta que para poder extraer todo el potencial que ofrece la tecnología se hacen necesarios un conjuntos de mecanismos específicos para la gestión y el control de la misma.

Bueno-Feo-Malo

Lo bueno: tiempo de respuesta (latencia) muy corto, bajo consumo eléctrico, elevada densidad con relación al tamaño, excelente bajo patrones de E/S aleatorios (especialmente en lecturas).

el_bueno

Lo feo: Las operaciones de borrado son lentas (unos 5 milisegundos), se produce un desgaste con el tiempo que limita la vida de las páginas, las tecnologías utilizadas para aumentar la densidad a la vez que garantizan la fiabilidad parecen hacer a la tecnología mas lenta (generación SLC vs MLC).

el_feo

Lo malo: Las operaciones de escritura bloquean a las de lectura, las operaciones de borrado bloquean a las de lectura y a las de escritura, y además no es posible sobre-escribir directamente las páginas.

el_malo

Además:

  • Las operaciones de escritura en flash son entre 5 y 10 veces mas lentas que las de lectura (ejemplo para SLC: 60μs en lecturas frente a 250μs en escrituras; ejemplo para MLC: 100μs en lecturas frente a 500μs en escrituras; ejemplo para eMLC: 100μs en lecturas frente a 1200μs en escrituras).
  • Las operaciones de borrado en flash son entre 30 y 50 veces mas lentas que las de lectura (ejemplo para SLC: 60μs en lecturas frente a 1.000μs en borrado; ejemplo para MLC: 100μs en lecturas frente a 3.000μs en borrado; ejemplo para eMLC: 100μs en lecturas frente a 5.500μs en borrado).
  • El desgaste no ocurre de manera uniforme debido al modo de acceso, de hecho en flash existe una capa denominada FTL (Flash Translation Layer) que se encarga de mapear los bloques lógicos presentados por el dispositivo a la capa software (sistema operativo) con los bloques físicos en el propio dispositivo flash. Suele ocurrir también sobre todo con datos estáticos que no cambian o se reubican (por ejemplo, los binarios de un sistema operativo o una aplicación suelen mantener el mismo LBA). La capa control del dispositivo flash ha de implementar una serie de algoritmos y mecanismos que no solo distribuyan las escrituras provenientes de la capa software a través de todas las celdas para aprovechar la durabilidad máxima de cada una de éstas y prolongar la vida del dispositivo, sino que además traten casos como el del dato estático y sean capaces de mover estos LBAs estáticos hacia otros PBAs en función del nivelado de escrituras óptimo. Esto se suele conocer como wear leveling.
  • El modo de acceso y escritura del dato en flash provoca otra necesidad sustancial: la gestión y reciclado de páginas inválidas dentro de un bloque físico, esto se suele conocer como garbage collection (GC a partir de ahora), y me imagino que de algún u otro modo sonará bastante ya que no es nada nuevo, se lleva utilizando desde hace décadas para la gestión de la memoria física (evitaba procesos manuales que había que lanzar tras la ejecución de pesados programas en super y mini computadores en las décadas de los 60/70) y lógica (que le pregunten a cualquier programador de Java o .Net). Según lo expuesto en mis anteriores entradas del blog (la tecnología NAND requiere el borrado previo a la escritura), este mecanismo se encarga de reclamar de manera automática y transparente aquellas páginas que contienen datos inválidos como consecuencia de sobre-escrituras lógicas fundamentalmente para que éstas puedan volverse a utilizar (por ejemplo, se ha producido una sobre-escritura de un LBA y los nuevos datos pasan a otro PBA quedando el PBA anterior marcado como inválido). Al igual que con Java (me solidarizo con los programadores), los mecanismos de GC tienen un papel fundamental en tecnología flash ya que de ellos va a depender en buen manera el desempeño y rendimiento del dispositivo flash.
  • El diseño de los algoritmos de GC junto con los mecanismos de protección de la información en sistemas de almacenamiento centralizado tienen también una relación directa con la aparición de efectos colaterales (a parte de sobre-consumo de recursos de CPU y aumento de interrupciones) donde quizá uno de los más importantes sea la amplificación de escrituras: se borra a nivel de bloque pero suele ocurrir que en el mismo bloque tengo páginas válidas y páginas que puedo reclamar, por lo que ello me obliga a leer las páginas válidas y escribirlas a un bloque nuevo disponible (borrado previamente) para poder borrar el anterior…si el algoritmo de GC no es muy eficiente puede acabar con la vida y el rendimiento del dispositivo flash sobre el que actúa (lo mismo puede ocurrirte en una VM de Java). Además, si pensamos en almacenamiento empresarial centralizado, es decir, el típico array o cabina de discos donde los discos rotacionales se han sustituído por SSDs, el uso de niveles RAID convencionales (RAID-1, RAID-5, RAID-6, etc) no hace sino aumentar el problema de la amplificación de las escrituras: solo basta pensar en una sobre-escritura de un stripe en un RAID-5 donde llega un dato nuevo (segmento, bloque, etc) y tengo que leer el resto de la banda para re-calcular la nueva paridad, escribir en nuevo dato y la nueva paridad; es decir, una única modificación o sobre-escritura me provoca una lectura del stripe completa y dos escrituras… y ya hemos visto que a la tecnología flash no le gustan mucho las escrituras.

bug_raid2

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s