jueves, 20 de julio de 2017

Consideraciones (preventa) de rendimiento y desempeño


Siguiendo esta breve serie, hoy quiero revisar algunas de las consideraciones de rendimiento y desempeño a tener en cuenta al momento de diseñar el almacenamiento.

Si desea revisar las entradas anteriores acá estan los enlaces:

Algunas consideraciones (preventa) para almacenamiento
Consideraciones de Conectividad y de Capacidad





Consideraciones de Rendimiento y Desempeño

En cuanto al rendimiento, desde el punto de vista de capacidad de un disco individual o sistema de almacenamiento, hay que tener en cuenta principalmente 3 variables: IOPS (Input Output por segundo), latencia y throughput. Revisemos estos conceptos:


IOPS (Input Output por segundo)

Input Output por segundo (IOPS) es el término que se da a la cantidad de operaciones de lectura y/o escritura que pueden ser efectuadas en un segundo de tiempo. Es un término muy usado para mostrar las fortalezas de un sistema de almacenamiento, pero es importante tener en cuenta que es solo una característica parcial para demostrar desempeño, y no se debe basar uns decisión sólo en IOps.

En un sistema de almacenamiento, los IOPS que se obtienen son la suma de varios factores, como por ejemplo la cantidad y tipo de discos mecánicos o unidades SSD, la cantidad y tipos de arreglos creados, memroria caché de las controladoras del almacenamiento, capa de caché basada en SSD, software de optimización de acceso a las capas (tiers), la relación de lectura/escritura, así como el tamaño de cada requerimiento de I/O.

Como vemos, no es tan sencillo hablar de IOps. Por ejemplo, si analizamos el tamaño del requerimiento Input/Output (I/O size) notaremos que éste varía dependiendo del sistema operativo y las aplicaciones o servicios que hagan requerimientos de I/O al almacenamiento. El tamaño del I/O size suele medirse en KB (4 KB, 8 KB, 32 KB, etcétera).

La recomendación acá, como siempre, es entender y analizar todas (o la mayor cantidad) de variables, con el fin de obtener un diseño de almacenamiento aterrizado y acorde al requerimiento.


Latencia

En sistemas de almacenamiento, el término latencia se asocia al tiempo en que una operación de lectura/escritura demora en ser realizada (completada) desde que solicita hasta que se confirma. La latencia se la mide en milisegundos (ms), generalmente es el resultado de la suma de varios retardos o latencias acumuladas. Como es obvio, a menor latencia tendremos mejor desempeño de un sistema de almacenamiento.




Los discos mecánicos (HDD) son uno de los componentes que generan mayor latencia en un sistema de almacenamiento (por la latencia rotacional, tiempo de búsqueda, etcétera). Por esta razón se buscan medidas para mitigar el impacto de la "lentitud" de los HDD, como caché SDD, discos híbridos, mayor cantidad de discos, arreglos de discos, entre otros.

Acá la recomendación nuevamente es entender el requerimiento, porque tener un sistema con poca o nula latencia se podría conseguir con unidades SSD, pero sin duda eso tendría un impacto en el presupuesto, y si no existe la clara necesidad de tener esos niveles de desempeño, puede hacer un proyecto inviable económicamente.


Throughput

El throughput es la cantidad de información que un disco o sistema de almacenamiento es capaz de brindar en un periodo de tiempo. Suele ser expresado en Megabytes por segundo (MB/s) y es una de las variables que en ocasiones no es tomada en cuenta, pero es muy importante para conocer la capacidad de un disco o sistema de almacenamiento.





De hecho, hay una relación directa entre el throughput y IOPS que un sistema de almacenamiento puede generar, dependiendo del tamaño de I/O:


Throughput (MB/s) = Tamaño I/O (promedio) x IOPS


De acá podemos deducir que si el tamaño de I/O es pequeño, podemos obtener un gran número de IOPS y cierto nivel de throughput.

Así mismo con un mayor tamaño de I/O, vamos a obtener menos IOPS, pero el monto de throughput será el mismo.

Por ejemplo un sistema de almacenamiento que ofrezca 100,000 IOPS en bloques de 4K genera 400 MB/s; ese mismo sistema con un bloque de 32K generará 12,500 IOPS, con los mismos 400 MB/s (estos valores asumen lecturas secuenciales).

Como vemos, es muy importante considerar todas las variables, y esto se consigue conociendo realmante el requerimiento del cliente, y no solo fijarnos en la capacidad requerida.

Espero sea de utilidad. Hasta la próxima.



Algunas referencias:

Es común confundir el Throughput con Bandwidth. Acá hay un breve video que explica en forma simple esta diferencia: https://www.youtube.com/watch?v=VWxGtl5J7WM


No hay comentarios:

Publicar un comentario