Contención de recursos

En informática, la "contención de recursos" se refiere a un conflicto sobre un recurso compartido entre varios componentes. La contención de recursos a menudo afecta negativamente el desempeño de los componentes que compiten por el recurso. Es una preocupación común en la computación en nube.

La contención de recursos ocurre cuando la demanda excede la oferta de un determinado recurso. Cuando varios procesos requieren el mismo recurso, un proceso llega primero al recurso y los otros contendientes se retrasan hasta que el primero termina de usar el recurso. Es probable que las aplicaciones que esperan el recurso experimenten una reducción del rendimiento porque necesitan el recurso para funcionar. Los recursos por los que se compite comúnmente incluyen procesador, red, memoria y almacenamiento.

¿Cómo afecta la contención de recursos a los proyectos? 

La contención de recursos a menudo conduce a una degradación del rendimiento en las aplicaciones que compiten por el recurso compartido. Esto puede provocar retrasos inesperados en el proyecto, ya que los procesos que compiten por recursos se detendrán hasta que puedan acceder al recurso.

Por el contrario, los procesos priorizados incorrectamente pueden completarse antes de lo esperado y requerir una cantidad innecesaria de recursos. Esto también puede retrasar los proyectos porque el orden de los procesos es incorrecto.

Estos problemas de contención son difíciles de identificar y resolver, porque los procesos problemáticos deben ser identificados y priorizados para asignar primero los recursos a los procesos más importantes. Aparte del problema de la contención de recursos en sí, identificar y solucionar el problema también puede llevar mucho tiempo y provocar más retrasos en el proyecto.

Problemas comunes de contención de recursos

El principal problema a tratar en la contención de recursos es la gestión de transacciones entre los recursos y los procesos que los requieren. Las transacciones deben priorizarse para que los procesos entren en conflicto con los recursos lo menos posible.

Más transacciones simultáneas crean más piezas móviles para administrar y priorizar. Por lo tanto, las configuraciones de nube pública a menudo son propensas a problemas de contención de recursos, porque son de naturaleza especialmente dinámica y cuentan con un grupo más amplio de "solicitantes de recursos". Cuanto más dinámico es el entorno, más proceso debe servir un recurso compartido y se requiere más gestión de la asignación de recursos. Algunas otras infraestructuras de TI dinámicas que son propensas a la contención de recursos son:

  • Traiga su propio dispositivo (BYOD). El mayor uso de dispositivos personales en la empresa crea un entorno más dinámico y más entidades que solicitan recursos.
  • TI como servicio (ITaaS). Las configuraciones de ITaaS cuentan con tecnologías alojadas por un tercero. Este tipo de configuración se presta a entornos de múltiples inquilinos que aumentan la probabilidad de contención de recursos.
  • automatización. Las configuraciones que utilizan la automatización para priorizar transacciones pueden aumentar inadvertidamente la probabilidad de contención de recursos porque pueden priorizar incorrectamente una transacción sin importancia. La automatización también reduce la visibilidad y el control de los entornos de TI para los administradores.
  • VIRTUALIZACIÓN. La virtualización crea versiones virtuales de un recurso existente, como sistemas operativos (SO), dispositivos de almacenamiento o servidores. Básicamente, agrega otra capa de procesos que requieren recursos, porque el entorno virtual reserva una parte de los recursos físicos para proporcionarla en la capa virtual. Por lo tanto, la contención de recursos puede ocurrir en la capa de virtualización cuando dos o más procesos compiten por un recurso virtual, o en la capa física cuando el recurso virtual accede al recurso físico de soporte.

El principal problema de la contención de recursos es la degradación del rendimiento de las aplicaciones, que puede manifestarse de varias formas:

  • Contención de nubes. Los usuarios de la nube pública pueden terminar compitiendo con otros inquilinos si se trata de un entorno de múltiples inquilinos. El proveedor de la nube y el usuario asumirían un nivel de responsabilidad para mitigar el problema. El usuario puede trabajar con el proveedor, si es posible, para reorganizar sus procesos para utilizar los recursos de manera más eficiente. Es posible que el proveedor también deba reorganizar la forma en que se distribuyen los recursos de la nube a todos los inquilinos para mejorar la eficiencia.
  • Punto muerto. El nombre oficial de una situación en la que los procesos esperan a que un recurso esté disponible.
  • Livelock. Similar al punto muerto, pero los procesos de espera se mueven continuamente, probando varias vías para llegar al recurso sin hacer ningún progreso. Esto es común cuando se usa un algoritmo para mitigar los puntos muertos. El algoritmo desencadena más procesos de los necesarios para darles acceso a los recursos y termina congestionando el camino hacia el recurso.
  • Paliza. Esto ocurre cuando la memoria virtual de una computadora se sobreutiliza y provoca una degradación o colapso completo del rendimiento del nivel de la aplicación. Esto puede continuar indefinidamente hasta que se cree espacio para los procesos de aplicación en el ancho de banda de la memoria virtual.

Cómo reducir la contención de recursos

Los problemas de contención de recursos y sus soluciones a menudo varían según la idiosincrasia de una configuración de TI. Independientemente de las características específicas de un problema de contención de recursos, los profesionales de TI pueden aplicar este proceso general para resolverlo:

  • Determine qué problemas de desempeño se derivan de la contención de recursos.
  • Identificar las transacciones que compiten por los recursos.
  • Priorice las transacciones para agilizar los procesos y minimizar los conflictos.

Los profesionales de TI pueden aplicar estos pasos mediante una de las diversas herramientas disponibles para administrar la asignación de recursos en entornos dinámicos. Algunas de estas herramientas son:

  • herramientas de línea de comandos, que vienen con el sistema operativo de una computadora;
  • Prometheus, que es un software de código abierto para monitorear contenedores en entornos Windows;
  • Grafana, que también es un software de monitoreo de contenedores de código abierto para entornos Windows; y
  • Splunk, que es una herramienta orientada principalmente a la supervisión de registros, pero que también se puede utilizar en entornos virtuales.

Como se mencionó en el subtítulo anterior, las máquinas virtuales aumentan la probabilidad de contención de recursos. En consecuencia, muchas soluciones recientes para la contención de recursos se especializan en el monitoreo de contenedores. Al igual que las máquinas virtuales (VM), los contenedores simulan la funcionalidad del hardware para crear un sistema virtual. A diferencia de las máquinas virtuales, los contenedores no necesitan un sistema operativo invitado para ejecutarse. En cambio, todos comparten un sistema operativo y, por lo tanto, son más eficientes porque requieren menos gastos generales.

Los administradores de TI que experimentan contención de recursos en un marco virtual deben utilizar contenedores y herramientas de monitoreo para ayudar a mitigar el problema.

Para aprovechar al máximo las herramientas de supervisión, los administradores de TI deben:

  • Analice las dependencias de varios niveles y varios niveles. Ayuda tener la visión más completa posible de la infraestructura de TI, para ver qué utiliza los recursos, cuánto se utiliza y cuándo.
  • Establezca una línea de base y un marco de tiempo de referencia. Los administradores deben tener datos históricos que muestren cómo funcionan normalmente sus sistemas, de modo que cuando surjan problemas, puedan comparar los datos nuevos de la configuración defectuosa con los datos "normales" antiguos para ver qué salió mal y cuándo.
  • Comprender el contexto empresarial. Se debe considerar la relevancia comercial de cada proceso al cambiar las prioridades de los procesos. El proceso más crítico, los procesos que dañarían más el negocio si se retrasan, generalmente debe tener el acceso más inmediato a los recursos. Algunas herramientas de monitoreo brindan a los usuarios la opción de organizar los procesos por relevancia comercial, pero muchas tienen un enfoque principalmente técnico y dejan que el usuario rastree esta métrica manualmente.
  • Promueva la visibilidad de los datos. Los empleados de todos los sectores de la infraestructura de TI (almacenamiento, red y desarrollo, por ejemplo) deben tener acceso a los mismos datos de rendimiento. Esto mejora la comunicación dentro de los departamentos de TI y acelera la mitigación de la contención de recursos.

En general, sin importar la herramienta o la naturaleza específica de un problema de contención de recursos, un departamento de TI debe resolverlo de manera estratégica y proactiva. Incluso los usuarios de computadoras personales pueden seguir los pasos generales enumerados para mantener niveles saludables de rendimiento para su computadora. La contención de recursos, como con cualquier problema de TI, es mucho más fácil de solucionar con un plan establecido, en lugar de reaccionar después de que ha ocurrido un incidente.