¿Qué son IOPS y como influyen en mi VPS?

En informática entendemos como virtualización a la creación, a través de software, de una versión virtual de algún recurso tecnológico. De modo que la virtualización de servidores consiste en la división de los recursos físicos (hardware) en unidades virtuales (por software) completamente independientes, en las cuales llamaremos host al sistema físico y guest al sistema virtualizado. Así hoy podemos alquilar una porción de un servidor físico en divisiones virtualizadas e independientes que se conocen como máquinas virtuales (VM, virtual machines) o también como servidores VPS (Virtual Private Server).

Hasta ahí todo muy bien, la teoría nos dice es que cuando damos el salto de un plan de hosting compartido a un VPS ya tenemos en un entorno o sistema privado y totalmente aislado, podemos reiniciar nuestra máquina virtual y el uso o abuso que hagan nuestros “vecinos” de partición física (servidor real) ya no nos debe afectar.

VPS

Mitos y realidades de la virtualización

Hasta donde hemos hablado es cierto, pero hay muchos matices y de ahí que en el mercado podemos encontrar un gran abanico en precios para servidores VPS de un mismo tamaño, lo que en cierto modo es normal porque tratándose de recursos virtualizados el marketing tiene un gran aliado para tratar de confundir y vender gato por liebre… y me explico; si los componentes del servidor físico son de media-baja calidad por mucho que los enmascaremos detrás de un ‘algo’ virtual el resultado será un rendimiento medio-bajo. Regla de Oro: el rendimiento virtual va a ser siempre algo menor que el mismo rendimiento antes de virtualizar, para todos y cada uno de los componentes: CPUs, tarjetas de red, discos, ram, etc…

¿Cómo puedo saber si mis VPS son de calidad?

Hay un debate sobre el rendimiento dependiendo del hypervisor utilizado (Xen, KVM, OpenVZ, VMWare, etc) y es cierto porque hay diferencias técnicas y conceptuales que pueden ofrecer mejor o menor rendimiento dependiendo muchos factores. En este blog hemos discutido entre las diferencias de KVM y XEN en otro post. Si nos centramos en dicho debate solemos despistarnos y no darle importancia a los dos elementos más importantes de nuestro servidor VPS, que son sin duda la memoria RAM y el DISCO (almacenamiento). Pregunta a tu proveedor sobre el hardware que utiliza para virtualizar, eso te dará pistas o pídele unos días de prueba para comprobar el rendimiento.

El disco, limites de Entrada/Salida

Uno de los mayores handicaps para el rendimiento de VPS radica, del mismo modo como pasa con los servidores no virtualizados, en la elección del tipo de almacenamiento. Obviamente no ofrece el mismo rendimiento un disco SATA de 7200 RPM, que un disco sólido SSD o un disco SAS de 15000 RPM. En entornos virtualizados no hablamso de tal o cual marca o de tal o cual tipo de disco, sino que debemos fijarnos con el rendimiento de IOPS (Input/Output Operations Per Second), este valor indica el rendimiento midiendo las operaciones de lectura escritura. Por ejemplo un servidor VPS con discos SATA (lo cual *NO* recomendamos y hemos eliminado completamente de nuestros servidores físicos) suelen dar un rendimiento de hasta 100 IOPS en entornos que no haya mucha condensación. En el otro extremo están los discos SAS de 15K RPM que deberían dar un rendimiento aproximado o mayor de 200 IOPS.

Esto sin duda está directamente relacionado con la sensación de rapidez de nuestro VPS, con buenos discos funciona mucho mejor nuestra web o aplicaciones que tengamos instaladas en el servidor, especialmente las bases de datos, la parte negativa es que incrementa el precio del VPS. En NESSYS IT,desde hace un par de meses usamos sólo discos SAS de 15K RPM, de ninguna manera nos planteamos la opción de usar discos de baja calidad, la experiencia nos indica que se generan bloqueos y pérdida de rendimiento que penaliza fuertemente el rendimiento global de los servidores VPS.

Empresas como Amazon AWS ofrecen instancias de bajo coste con un rendimiento pobre en almacenamiento, opcionalmente podemos contratar mayor rendmiento IOPS por un incremento de coste considerable. Está bien el enfoque y es lógico, el transfondo es claro: si eres sensible al precio el almacenamiento de tu servidor es estándar, empiezas con 1 vcore, poca ram y sin nada de swap. Más adelante deberás aumentar el tamaño de la RAM y los vCores pero donde vas a notar un alto rendimiento es en IOPS y lógicamente tienes que pagar por ello. Nosotros estamos estudiando seriamente esta opción, clasificar nuestra oferta de VPS en función no sólo de vCores y RAM, sino también ofrecer más rendimiento IOPS por un incremento de precio.

La RAM es tu amiga

En entornos virtualizados hay que evitar en la medida de los posible que los clientes no hagan abuso de operaciones de IOPS, esto perjudicaria el rendimiento de todas las máquinas virtuales. Lo que ofrecen los hypervisores es la posibilidad de ajusar lo que se conoce como “Per Disk I/O Limits”, de modo que si un usuario necesita más RAM no penalice el rendimiento del disco usando la memoria swap como si se tratase de una RAM peristente en disco. Básicamente lo justo es que si no tenemos bastante RAM para acomodar todos nuestros procesos no estemos abusando constantemente de la SWAP puesto que esta practica de modo continuado degrada el rendimiento global del sistema host y por tanto otros VPS que dependen del mismo disco penalizan su rendimiento; lo correcto es identificar dichos Clientes e invitarles a que contraten la RAM adecuada para dar servicio a sus aplicaciones considerando el consumo de acuerdo al número de visitas/usuarios concurrentes.

¿Alguien se ha preguntado porque cuando lanzamos una instancio en el Cloud de Amazon no está configurada la swap? Con todo lo dicho es obvia la respuesta, no quieren que abusemos de swap, al final por debajo hay almacenamiento real (físico) que no hay que maltratar puesto que se debe solucionar contratando más memoria física, la RAM es tu amiga.

Cómo medir el rendimiento de los discos

Existen diferentes manuales y ejemplos para el uso de comandos como hdparm, sar, iotop, iostat, etc.. el resultado debe permanecer por encima de 100 IOPS para cualquier aplicación web y mucho más cerca de 200 si tu aplicación tiene uso intensivo en la base de datos y además la BBDD está en el mismo VPS. También deberás haber calculado bien la RAM necesaria para acomodar los procesos en momentos de picos y así no penalizar el rendimiento general con uso -o abuso- continuo de SWAP.

Mi VPS va mal a ratos… y yo no he tocado nada.

Hemos conocido muchos casos de Clientes que nos piden que les ayudemos a identificar el motivo por el cual su servidor VPS hay momentos del día que no funciona o que se queda bloqueado y después vuelve a funcionar, incluso en algunos casos se enfadan porque insisten en que no entienden cómo puede pasar esto si ellos “no han tocado nada”.

Con el contexto de lo explicado anteriormente la respuesta es muy fácil: durante momentos que no hay demasiada carga de visistas o usuarios conectados a nuestro servidor el consumo de RAM es moderado y está por debajo de los recursos contratados, entonces el servidor se comporta bien y todos estamos muy felices. La situación cambia cuando recibimos muchas visitas sin tener la suficiente memoria RAM, bajo estas circunstancias el Sistema utiliza la SWAP (disco) como memoria de intercambio y si además tenemos la(s) base(s) de datos en el mismo VPS una operación de flush puede ser crítica y generar un cuello de botella considerable en el sistema de I/O. Cuando termina las operacions de flush o bajan las visitas el Sistema se recompone, se vacia de nuevo la SWAP y el servidor vuelve a responder con relativa normalidad.

Nadie toca nada, es cierto, y todo vuelve a su normalidad, también es cierto… pero este alivio es sólo temporal hasta nuevo pico de visitas… este comportamiento no es una anomalía del servidor o servicio en sí, se conoce como un problema de ‘capacity planning’ o dimensionamiento de los recursos inadecuado.