El efecto “noisy neighbor”: problemas de convivencia en la nube

Todos hemos sufrido en algún momento la incomodidad de tener unos vecinos escandalosos que escuchan música o ven la televisión a un volumen alto, que ponen la lavadora a deshora, que organizan fiestas sin fin o cuyos hijos trotan y gritan incansables a todas horas. Si tales molestias son de especial intensidad o suceden con cierta regularidad, entonces se convierten en un factor que puede reducir drásticamente la comodidad de la vivienda que se ha alquilado. Si sustituimos “vivienda alquilada” por “recursos contratados”, este problema traspasa las cuatro paredes del hogar para convertirse en un fenómeno muy extendido también en el entorno de los servidores, donde se lo conoce como “efecto noisy neibhbor” o “efecto del vecino ruidoso”.

¿Qué es el efecto “noisy neighbor”?

Cuando se trata de buscar una vivienda se tienen generalmente dos opciones: por un lado, alquilar o comprar una casa propia o, por el otro, un piso en una comunidad de vecinos. Mientras que en el primer caso el contacto con los vecinos requiere un mínimo de voluntad y no es necesariamente frecuente, en un edificio de varios pisos su presencia se percibe constante e involuntariamente de una forma mucho más cercana. Como contrapartida, los gastos de mantenimiento de una casa unifamiliar son mucho más elevados que los de un apartamento.

La situación es similar cuando se busca un “hogar” adecuado donde alojar un proyecto web o la estructura informática de una empresa. Un servidor físico propio, alojado por uno mismo o por un proveedor, que satisfaga los requisitos de software y de hardware, es la solución sin duda más compleja, pero tiene la ventaja de que tanto los recursos como su gestión recaen exclusivamente en manos de su propietario. Cuando se opta por hacer uso de recursos virtualizados, compartiendo así el fundamento técnico del proyecto con otros, puede que el rendimiento se resienta temporalmente.

La causa de ello radica normalmente en una sobreutilización de los recursos por parte de otro “inquilino” que los comparte, de ahí la denominación de “efecto del vecino ruidoso” o “noisy neighbor effect”. Hoy en día, el fenómeno de las instancias “vecinas” que perjudican el rendimiento global de los recursos se observa sobre todo en la flexible computación en la nube, fundamentada en la denominada arquitectura de tenencia múltiple (multitenancy o multi-tenant architecture), en particular en las nubes públicas.

El problema del “noisy neighbor” en los servidores virtuales

El efecto “vecino ruidoso” no es en absoluto nuevo, sino que es tan antiguo como la posibilidad de compartir recursos, que existía antes incluso del nacimiento de la nube. Ya en el tradicional shared hosting o alojamiento compartido, este era uno de los problemas a los que tenían que enfrentarse los proveedores de alojamiento. Si uno de los clientes requería, sabiéndolo o no, más recursos de los que le correspondían, alguno de los demás “inquilinos” de la misma máquina se veía perjudicado con alguna limitación, en especial en lo concerniente a la memoria de almacenamiento, siempre escasa.

Hoy en día, los modernos hipervisores distribuyen los recursos fundamentales de hardware de forma tan eficiente entre las máquinas virtuales que administran que solo en casos excepcionales se producen reducciones del rendimiento ocasionadas por un vecino ruidoso.

Por su parte, el alojamiento en la nube, cuya principal ventaja radica en una escalabilidad muy flexible, tiene a su propio “vecino ruidoso”: a pesar de que la tecnología de almacenamiento ha mejorado mucho en cuanto a capacidad y velocidad de acceso en los últimos años, las necesidades de espacio en el contexto de la nube han crecido de forma exponencial. Si varios usuarios están conectados a una nube y uno o más máquinas virtuales sobrecargan la memoria física del servidor con valores muy altos de entrada y salida (I/O), para algunos usuarios puede significar una pérdida de capacidad de almacenamiento. El almacenamiento con SSD puede contrarrestar este efecto, aunque no forma parte aún del repertorio estándar de todos los proveedores de alojamiento en la nube.

El efecto “noisy neighbor” de la computación en la nube también resulta de la interacción de los hipervisores y los procesadores. Los hipervisores no tienen acceso al almacenamiento local ni tampoco a la memoria caché de los procesadores y estos, por su lado, tampoco disponen de información sobre lo que pasa más allá de la capa de red. Son los algoritmos de caching definidos en el procesador los que deciden qué datos se almacenan en la caché. Los modernos procesadores multicore, además, asignan a algunas máquinas virtuales la memoria caché L3 (Level 3), que acelera el intercambio de datos. Esto tiene como consecuencia que, para el resto de máquinas que dependen asimismo de este procesador, la ejecución de operaciones requiera más tiempo.

Cómo evitar el efecto “vecino ruidoso” en la nube

Para reducir los efectos de los “noisy neighbors” y optimizar a largo plazo todos los proyectos alojados, algunos proveedores de alojamiento en la nube muestran su preferencia por los sistemas all-flash storage o almacenamiento todo flash. Este concepto se fundamenta en la sustitución de las unidades de disco rígido (Hard Disc Drive, HDD) por los más potentes y más caros SSD o discos de estado sólido (Solid State Drive), que utilizan memoria no volátil, como la memoria flash, para almacenar los datos. Sin embargo, estos medios de almacenamiento flash más modernos tampoco pueden evitar completamente el efecto de los “vecinos ruidosos”, a pesar de su tasa de I/O más alta. Esto ha hecho que se consolidaran los denominados all-flash arrays o matrices de discos todo flash, que contienen varias unidades de almacenamiento flash, a la hora de implementar una arquitectura de almacenamiento sin HDD. Estas matrices todo flash cuentan con una cuota integrada de almacenamiento para la entrada y salida de datos, que se gestiona en un nivel de aplicación que se gestiona individualmente, de tal forma que el proveedor de la nube o su administrador pueden supervisar y coordinar la transferencia de datos de las diferentes máquinas virtuales.

En ocasiones, es difícil predecir cómo va a evolucionar un proyecto. Es por esto que, antes de nada, conviene informarse bien sobre la hipotética posibilidad de aumentar o reducir los recursos contratados, porque, de lo contrario, podría pagarse por unas prestaciones de almacenamiento y CPU que no se necesitan o convertirse en el mismo vecino ruidoso que saca de quicio a los demás inquilinos.

Consejo:

Desde octubre de 2015, las ofertas de alojamiento en la nube de IONOS se basan en soluciones de almacenamiento en matrices todo flash. Usar la tecnología SolidFire garantiza el mejor rendimiento posible para todos los proyectos de alojamiento y ofrece paquetes de prestaciones económicas y ajustadas que puedes actualizar o revertir en cualquier momento.

Te interesa un servidor virtual pero quieres evitar el efecto “noisy neighbor”, infórmate aquí sobre el abanico de servidores IONOS.