Contesa di risorse

In informatica, "conflitto di risorse" si riferisce a un conflitto su una risorsa condivisa tra diversi componenti. Il conflitto di risorse spesso influisce negativamente sulle prestazioni dei componenti in competizione per la risorsa. È una preoccupazione comune nel cloud computing.

Il conflitto di risorse si verifica quando la domanda supera l'offerta per una determinata risorsa. Quando più processi richiedono la stessa risorsa, un processo raggiunge per primo la risorsa e gli altri contendenti vengono ritardati fino a quando il primo non finisce di utilizzare la risorsa. Le applicazioni in attesa della risorsa probabilmente subiranno una riduzione delle prestazioni perché necessitano della risorsa per funzionare. Le risorse comunemente contese includono processore, rete, memoria e archiviazione.

In che modo la contesa delle risorse influisce sui progetti? 

Il conflitto di risorse spesso porta a una riduzione delle prestazioni nelle applicazioni che si contendono la risorsa condivisa. Ciò può causare ritardi imprevisti del progetto, perché i processi che si contendono le risorse verranno bloccati fino a quando non potranno accedere alla risorsa.

Al contrario, i processi con priorità errata possono essere completati prima del previsto e richiedere una quantità di risorse non necessaria. Ciò può anche ritardare i progetti perché l'ordine dei processi non è corretto.

Questi problemi di contesa sono difficili da identificare e risolvere, perché i processi problematici devono essere individuati e ridefiniti per assegnare le risorse prima ai processi più importanti. A parte il problema della contesa delle risorse in sé, identificare e risolvere il problema può anche richiedere molto tempo e portare a ulteriori ritardi nel progetto.

Problemi comuni di conflitto di risorse

Il problema principale da affrontare nella contesa delle risorse è la gestione delle transazioni tra le risorse ei processi che le richiedono. È necessario assegnare la priorità alle transazioni in modo che i processi siano in conflitto sulle risorse il meno possibile.

Più transazioni simultanee creano più pezzi in movimento da gestire e dare priorità. Pertanto, le configurazioni di cloud pubblico sono spesso soggette a problemi di contesa di risorse, perché sono particolarmente dinamiche e presentano un pool più ampio di "richiedenti di risorse". Più dinamico è l'ambiente, più processo deve servire una risorsa condivisa e maggiore è la gestione dell'allocazione delle risorse. Alcune altre infrastrutture IT dinamiche che sono soggette a conflitti di risorse sono:

  • Porta il tuo dispositivo (BYOD). Il maggiore utilizzo di dispositivi personali nell'azienda crea un ambiente più dinamico e più entità che richiedono risorse.
  • IT come servizio (ITaaS). Le configurazioni ITaaS includono tecnologie ospitate da terze parti. Questo tipo di configurazione si presta ad ambienti multi-tenant che aumentano la probabilità di contesa di risorse.
  • Automazione. Le configurazioni che utilizzano l'automazione per assegnare priorità alle transazioni possono inavvertitamente aumentare la probabilità di contesa di risorse perché potrebbero assegnare in modo errato la priorità a una transazione non importante. L'automazione riduce anche la visibilità e il controllo degli ambienti IT per gli amministratori.
  • Virtualization. La virtualizzazione crea versioni virtuali di una risorsa esistente come sistemi operativi (OS), dispositivi di archiviazione o server. Essenzialmente aggiunge un altro livello di processi che richiedono risorse, perché una parte delle risorse fisiche è riservata dall'ambiente virtuale per fornire al livello virtuale. Pertanto, la contesa delle risorse può verificarsi nel livello di virtualizzazione quando due o più processi si contendono una risorsa virtuale, oppure a livello fisico quando la risorsa virtuale accede alla risorsa fisica di supporto.

Il problema principale della contesa delle risorse è il degrado delle prestazioni dell'applicazione, che può manifestarsi in diversi modi:

  • Cloud contention. Gli utenti del cloud pubblico possono finire per competere con altri tenant se si tratta di un ambiente multi-tenant. Il fornitore di servizi cloud e l'utente si assumerebbero entrambi un livello di responsabilità nella mitigazione del problema. L'utente può collaborare con il provider, se possibile, per riorganizzare i propri processi in modo da utilizzare le risorse in modo più efficiente. Il provider potrebbe anche dover riorganizzare il modo in cui le risorse cloud vengono distribuite a tutti i tenant per migliorare l'efficienza.
  • Deadlock. Il nome ufficiale di una situazione in cui i processi attendono che una risorsa diventi disponibile.
  • Livelock. Simile al deadlock, ma i processi di attesa si muovono continuamente, cercando varie strade per raggiungere la risorsa senza fare alcun progresso. Ciò è comune quando viene utilizzato un algoritmo per mitigare i deadlock. L'algoritmo innesca più processi del necessario per fornire loro l'accesso alle risorse e finisce per congestionare il percorso verso la risorsa.
  • Thrashing. Ciò si verifica quando la memoria virtuale di un computer viene utilizzata in modo eccessivo e causa un degrado o un collasso completo delle prestazioni a livello di applicazione. Questo può continuare indefinitamente fino a quando non viene creato spazio per i processi dell'applicazione nella larghezza di banda della memoria virtuale.

Come ridurre la contesa sulle risorse

I problemi di conflitto di risorse e le relative soluzioni spesso variano a seconda delle peculiarità di una configurazione IT. Indipendentemente dalle specifiche di un problema di conflitto di risorse, i professionisti IT possono applicare questo processo generale per risolverlo:

  • Determina quali problemi di prestazioni derivano dalla contesa delle risorse.
  • Identifica le transazioni in competizione per le risorse.
  • Assegna priorità alle transazioni per semplificare i processi e ridurre al minimo i conflitti.

I professionisti IT possono applicare questi passaggi utilizzando uno dei numerosi strumenti disponibili per la gestione dell'allocazione delle risorse in ambienti dinamici. Alcuni di questi strumenti sono:

  • strumenti da riga di comando, forniti con il sistema operativo di un computer;
  • Prometheus, che è un software open source per il monitoraggio dei container in ambienti Windows;
  • Grafana, che è anche un software di monitoraggio dei contenitori open source per ambienti Windows; e
  • Splunk, che è uno strumento principalmente orientato al monitoraggio dei log, ma può essere utilizzato anche in ambienti virtuali.

Come accennato nel sottotitolo precedente, le macchine virtuali aumentano la probabilità di contesa di risorse. Di conseguenza, molte soluzioni recenti al conflitto di risorse sono specializzate nel monitoraggio dei contenitori. Come le macchine virtuali (VM), i contenitori simulano la funzionalità hardware per creare un sistema virtuale. A differenza delle VM, i container non richiedono un SO guest per essere eseguiti. Invece, condividono tutti un sistema operativo e sono quindi più efficienti perché richiedono meno overhead.

Gli amministratori IT che riscontrano conflitti di risorse in un framework virtuale dovrebbero utilizzare contenitori e strumenti di monitoraggio per aiutare a mitigare il problema.

Per ottenere il massimo dagli strumenti di monitoraggio, gli amministratori IT dovrebbero:

  • Analizza le dipendenze multi-tier e cross-tier. Aiuta ad avere la visione più completa possibile dell'infrastruttura IT, per vedere cosa utilizza le risorse, quanto viene utilizzato e quando.
  • Stabilire una linea di base e un periodo di riferimento. Gli amministratori dovrebbero disporre di dati storici che mostrano come funzionano normalmente i loro sistemi, in modo che quando sorgono problemi, possono confrontare i nuovi dati dalla configurazione malfunzionante con i vecchi dati "normali" per vedere cosa è andato storto e quando è andato storto.
  • Comprendi il contesto aziendale. La rilevanza aziendale di ciascun processo dovrebbe essere considerata quando si ridefiniscono le priorità dei processi. Il processo più critico, i processi che danneggerebbero maggiormente l'azienda se ritardati, dovrebbero generalmente avere l'accesso più immediato alle risorse. Alcuni strumenti di monitoraggio offrono agli utenti la possibilità di organizzare i processi in base alla rilevanza aziendale, ma molti hanno un focus principalmente tecnico e lasciano all'utente il monitoraggio manuale di questa metrica.
  • Promuovi la visibilità dei dati. I dipendenti di tutti i settori dell'infrastruttura IT, ad esempio archiviazione, rete e sviluppo, dovrebbero avere tutti accesso agli stessi dati sulle prestazioni. Ciò migliora la comunicazione all'interno dei reparti IT e accelera la mitigazione del conflitto di risorse.

Nel complesso, indipendentemente dallo strumento o dalla natura specifica di un problema di conflitto di risorse, un reparto IT dovrebbe risolverlo in modo strategico e proattivo. Anche gli utenti di personal computer possono utilizzare i passaggi generali elencati per mantenere livelli di prestazioni sani per il proprio computer. La contesa sulle risorse, come con qualsiasi problema IT, è molto più facile da risolvere con un piano in atto, invece di reagire dopo che si è verificato un incidente.