Contenção de recursos

Em computação, 'contenção de recursos' refere-se a um conflito sobre um recurso compartilhado entre vários componentes. A contenção de recursos muitas vezes afeta negativamente o desempenho dos componentes que competem pelo recurso. É uma preocupação comum na computação em nuvem.

A contenção de recursos acontece quando a demanda excede a oferta de um determinado recurso. Quando vários processos requerem o mesmo recurso, um processo chega primeiro ao recurso e os outros competidores são atrasados até que o primeiro termine de usar o recurso. As aplicações que esperam pelo recurso provavelmente sofrerão uma redução de desempenho porque precisam do recurso para funcionar. Os recursos normalmente contendidos incluem processador, rede, memória e armazenamento.

Como a contenção de recursos afeta os projetos? 

A contenção de recursos muitas vezes leva à degradação do desempenho nas aplicações que contendem para o recurso compartilhado. Isso pode causar atrasos inesperados nos projetos, pois os processos que contendem para os recursos serão paralisados até que eles possam acessar o recurso.

Conversamente, processos priorizados de forma inadequada podem ser concluídos mais cedo do que o esperado, e levar uma quantidade desnecessária de recursos. Isto também pode atrasar projetos porque a ordem dos processos é incorreta.

Estes problemas de contenção são difíceis de identificar e resolver, porque os processos problemáticos devem ser identificados e reordenados para alocar recursos aos processos mais importantes primeiro. Além do problema de contenção de recursos em si, identificar e resolver o problema também pode ser demorado e levar a mais atrasos nos projetos.

Problemas comuns de contenção de recursos

O principal problema a ser tratado na contenção de recursos é a gestão das transações entre os recursos e os processos que os requerem. As transações precisam ser priorizadas para que os processos conflitam sobre os recursos o mínimo possível.

Mais transações simultâneas criam mais peças móveis para gerenciar e priorizar. Portanto, as configurações de nuvem pública são frequentemente propensas a problemas de contenção de recursos, porque são especialmente dinâmicas por natureza e apresentam um conjunto mais amplo de "solicitadores de recursos". Quanto mais dinâmico for o ambiente, mais processo um recurso compartilhado deve servir e mais gerenciamento da alocação de recursos é necessário. Algumas outras infra-estruturas de TI dinâmicas que são propensas à contenção de recursos são:

  • >Bring your own device (BYOD). O aumento do uso de dispositivos pessoais na empresa cria um ambiente mais dinâmico e mais entidades solicitando recursos.
  • IT as a service (ITaaS). As configurações ITaaS apresentam tecnologias hospedadas por terceiros. Este tipo de configuração se presta a ambientes multitenant que aumentam a probabilidade de contenção de recursos.
  • Automação>forte>. Configurações que usam automação para priorizar transações podem inadvertidamente aumentar a probabilidade de contenção de recursos porque podem priorizar incorretamente uma transação sem importância. A automação também diminui a visibilidade e o controle de ambientes de TI para administradores.>>li>Virtualização>strong>. Virtualização cria versões virtuais de um recurso existente, como sistemas operacionais (SO), dispositivos de armazenamento ou servidores. Essencialmente adiciona outra camada de processos que requerem recursos, pois uma parte dos recursos físicos é reservada pelo ambiente virtual para prover na camada virtual. Portanto, a contenção de recursos pode ocorrer na camada de virtualização quando dois ou mais processos disputam um recurso virtual, ou na camada física quando o recurso virtual acessa o recurso físico de suporte.

O principal problema da contenção de recursos é a degradação do desempenho dos aplicativos, que pode se manifestar de várias maneiras:

  • Contenção em nuvem. Os usuários da nuvem pública podem acabar disputando com outros inquilinos se for um ambiente multitenant. Tanto o provedor da nuvem quanto o usuário assumiriam um nível de responsabilidade na mitigação do problema. O usuário pode trabalhar com o provedor, se possível, para reorganizar seus processos para utilizar os recursos de forma mais eficiente. O provedor também pode precisar reorganizar a forma como os recursos da nuvem são distribuídos a todos os locatários para melhorar a eficiência.
  • Deadlock. O nome oficial para uma situação em que os processos esperam que um recurso fique disponível.
  • Livelock. Semelhante a deadlock, mas os processos de espera se movem continuamente, tentando vários caminhos para chegar ao recurso sem fazer nenhum progresso. Isto é comum quando um algoritmo é usado para mitigar bloqueios. O algoritmo aciona mais processos do que o necessário para dar-lhes acesso ao recurso e acaba congestionando o caminho para o recurso.
  • Thrashing. Isto ocorre quando a memória virtual de um computador é usada em excesso e causa uma degradação ou colapso completo do desempenho ao nível da aplicação. Isto pode continuar indefinidamente até que seja criado espaço para processos de aplicação na largura de banda da memória virtual.

Como reduzir a contenção de recursos

Problemas de contenção de recursos e suas soluções muitas vezes variam de acordo com as idiossincrasias de uma configuração de TI. Independentemente das especificidades de um problema de contenção de recursos, os profissionais de TI podem aplicar esse processo geral para resolvê-lo:

  • Determinar quais problemas de desempenho derivam da contenção de recursos.
  • Identificar as transações competindo por recursos.
  • Priorizar transações para agilizar processos e minimizar conflitos.

p>Os profissionais de TI podem aplicar esses passos usando uma das várias ferramentas disponíveis para gerenciar a alocação de recursos em ambientes dinâmicos. Algumas dessas ferramentas são:

  • ferramentas de linha de comando, que vêm com um sistema operacional de computador;
  • Prometheus, que é um software de código aberto para monitoramento de containers em ambientes Windows;
  • Grafana, que também é um software de código aberto para monitoramento de containers em ambientes Windows; e
  • Splunk, que é uma ferramenta voltada principalmente para monitoramento de logs, mas também pode ser usada em ambientes virtuais.

Como mencionado no subtítulo anterior, as máquinas virtuais aumentam a probabilidade de contenção de recursos. Consequentemente, muitas soluções recentes para a contenção de recursos são especializadas no monitoramento de contêineres. Tal como as máquinas virtuais (VMs), os contentores simulam a funcionalidade do hardware para criar um sistema virtual. Ao contrário das VMs, os contêineres não precisam de um sistema operacional convidado para funcionar. Ao invés disso, todos eles compartilham um sistema operacional e, portanto, são mais eficientes porque requerem menos overhead.

administradores de TI que experimentam contenção de recursos em uma estrutura virtual devem utilizar containers e ferramentas de monitoramento para ajudar a mitigar o problema.

Para tirar o máximo proveito das ferramentas de monitoramento, os administradores de TI devem:

  • > forte>Analisar dependências multi e transfronteiriças. Ajuda a ter a visão mais abrangente possível da infraestrutura de TI, para ver o que usa os recursos, quanto é usado e quando.
  • Estabelecer uma linha de base e um período de referência. Os administradores devem ter dados históricos mostrando como seus sistemas funcionam normalmente, para que quando surgirem problemas, eles possam comparar novos dados da configuração com os dados antigos, "normais" para ver o que deu errado, e quando deu errado.
  • Estrong>Contexto de negócios compreensível. A relevância de negócios de cada processo deve ser considerada quando se repriorizar os processos. O processo mais crítico -- processos que mais prejudicariam o negócio se atrasados -- deve geralmente ter o acesso mais imediato aos recursos. Algumas ferramentas de monitoramento dão aos usuários a opção de organizar processos por relevância para o negócio, mas muitas têm um foco principalmente técnico e deixam o usuário rastrear essa métrica manualmente.
  • > forte>Promote visibilidade de dados. Funcionários em todos os setores da infraestrutura de TI -- armazenamento, rede e desenvolvimento, por exemplo -- devem todos ter acesso aos mesmos dados de desempenho. Isso melhora a comunicação dentro dos departamentos de TI e acelera a mitigação da contenção de recursos.

Todos, não importa a ferramenta ou a natureza específica de um problema de contenção de recursos, um departamento de TI deve resolvê-lo de forma estratégica e proativa. Mesmo usuários de computadores pessoais podem usar os passos gerais listados para manter níveis saudáveis de desempenho para o seu computador. A contenção de recursos, como em qualquer problema de TI, é muito mais fácil de corrigir com um plano em vigor, ao invés de reagir após a ocorrência de um incidente.