Isolamento del gruppo di carico di lavoro di Azure Synapse Analytics

Questo articolo illustra come usare i gruppi di carico di lavoro per configurare l'isolamento del carico di lavoro, contenere le risorse e applicare regole di runtime per l'esecuzione delle query.

Gruppi di carichi di lavoro

I gruppi di carico di lavoro sono contenitori per un set di richieste e su di essi si basa la configurazione della gestione del carico di lavoro in un sistema, incluso l'isolamento del carico di lavoro. I gruppi di carico di lavoro vengono creati usando la sintassi CREATE WORKLOAD GROUP. Una semplice configurazione della gestione del carico di lavoro consente di gestire carichi di dati e query utente. Ad esempio, un gruppo di carico di lavoro denominato wgDataLoads definirà gli aspetti del carico di lavoro per i dati caricati nel sistema. Inoltre, un gruppo di carico di lavoro denominato wgUserQueries definirà gli aspetti del carico di lavoro per gli utenti che eseguono query per leggere dati dal sistema.

Nelle sezioni seguenti verrà evidenziato in che modo i gruppi di carico di lavoro consentono di definire l'isolamento, il contenimento e la definizione della risorsa della richiesta e di aderire alle regole di esecuzione.

Governance delle risorse

I gruppi di carico di lavoro regolano le risorse di memoria e CPU. Le operazioni di I/O su disco e di rete e tempdb non sono regolate. La governance delle risorse per memoria e CPU è la seguente:

La memoria viene governata a livello di richiesta e mantenuta per tutta la durata della richiesta. Per altre informazioni su come configurare la quantità di memoria per richiesta, vedere Definizione delle risorse per richiesta. Il parametro MIN_PERCENTAGE_RESOURCE per il gruppo di carico di lavoro dedica la memoria esclusivamente a tale gruppo di carico di lavoro. Il parametro CAP_PERCENTAGE_RESOURCE per il gruppo di carico di lavoro è un limite rigido per la memoria che un gruppo di carico di lavoro può utilizzare.

Le risorse della CPU sono regolate a livello di gruppo del carico di lavoro e condivise da tutte le richieste all'interno di un gruppo di carico di lavoro. Le risorse della CPU sono fluide rispetto alla memoria dedicata a una richiesta per la durata dell'esecuzione. Dato che la CPU è una risorsa fluida, le risorse della CPU inutilizzate possono essere utilizzate da tutti i gruppi di carico di lavoro. Ciò significa che l'utilizzo della CPU può superare il parametro CAP_PERCENTAGE_RESOURCE per il gruppo di carico di lavoro. Ciò significa anche che il parametro MIN_PERCENTAGE_RESOURCE per il gruppo di carico di lavoro non è una prenotazione rigida come la memoria. Quando le risorse della CPU sono contese, l'utilizzo verrà allineato alla definizione di CAP_PERCENTAGE_RESOURCE per i gruppi di carico di lavoro.

Isolamento del carico di lavoro

L'isolamento del carico di lavoro significa che le risorse sono riservate esclusivamente per un gruppo di carico di lavoro. L'isolamento del carico di lavoro si ottiene configurando il parametro MIN_PERCENTAGE_RESOURCE su un valore maggiore di zero nella sintassi CREATE WORKLOAD GROUP. Per i carichi di lavoro a esecuzione continua che devono essere conformi a Contratti di servizio rigorosi, l'isolamento garantisce che le risorse siano sempre disponibili per il gruppo di carico di lavoro.

La configurazione dell'isolamento del carico di lavoro definisce in modo implicito un livello di concorrenza garantita. Ad esempio, a un gruppo di carico di lavoro con MIN_PERCENTAGE_RESOURCE impostato sul 30% e REQUEST_MIN_RESOURCE_GRANT_PERCENT impostato sul 2% è garantita una concorrenza di 15. Il livello di concorrenza è garantito perché il 15-2% degli slot di risorse è riservato all'interno del gruppo di carico di lavoro in qualsiasi momento, indipendentemente dalla configurazione di REQUEST_MAX_RESOURCE_GRANT_PERCENT. Se REQUEST_MAX_RESOURCE_GRANT_PERCENT è maggiore di REQUEST_MIN_RESOURCE_GRANT_PERCENT e CAP_PERCENTAGE_RESOURCE è maggiore di MIN_PERCENTAGE_RESOURCE è possibile aggiungere risorse aggiuntive per ogni richiesta (in base alla disponibilità delle risorse). Se REQUEST_MAX_RESOURCE_GRANT_PERCENT e REQUEST_MIN_RESOURCE_GRANT_PERCENT sono uguali e CAP_PERCENTAGE_RESOURCE è maggiore di MIN_PERCENTAGE_RESOURCE, è possibile un'ulteriore concorrenza. Prendere in considerazione il metodo seguente per determinare la concorrenza garantita:

[Concorrenza garantita] = [MIN_PERCENTAGE_RESOURCE] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT]

Nota

Per min_percentage_resource ci sono valori minimi specifici per il livello di servizio. Per altre informazioni, vedere Valori effettivi.

In assenza di isolamento del carico di lavoro, le richieste funzionano nel pool condiviso di risorse. L'accesso alle risorse nel pool condiviso non è garantito e viene assegnato in base all'importanza.

La configurazione dell'isolamento del carico di lavoro deve essere eseguita con cautela, poiché le risorse vengono allocate al gruppo di carico di lavoro anche se non ci sono richieste attive nel gruppo di carico di lavoro. Una configurazione eccessiva dell'isolamento può comportare una riduzione dell'utilizzo complessivo del sistema.

Gli utenti devono evitare una soluzione di gestione del carico di lavoro che configura l'isolamento del carico di lavoro al 100%: l'isolamento del 100% viene raggiunto quando la somma di min_percentage_resource configurato in tutti i gruppi di carico di lavoro è uguale al 100%. Questo tipo di configurazione è eccessivamente rigida e restrittiva e lascia poco spazio alle richieste di risorse accidentalmente classificate in modo errato. Esiste la possibilità di consentire l'esecuzione di una richiesta da gruppi di carico di lavoro non configurati per l'isolamento. Le risorse allocate per questa richiesta verranno visualizzate come zero nei sistemi DMV e prendono in prestito un livello inferiore di concessione di risorse dalle risorse riservate del sistema.

Nota

Per garantire un utilizzo ottimale delle risorse, prendere in considerazione una soluzione di gestione del carico di lavoro che sfrutti un certo isolamento per garantire che i Contratti di servizio siano soddisfatti e combinati con risorse condivise a cui si accede in base all'importanza del carico di lavoro.

Contenimento del carico di lavoro

Il contenimento del carico di lavoro fa riferimento alla limitazione della quantità di risorse che un gruppo di carico di lavoro può utilizzare. Il contenimento del carico di lavoro si ottiene configurando il parametro CAP_PERCENTAGE_RESOURCE su un valore inferiore a 100 nella sintassi CREATE WORKLOAD GROUP. Si consideri lo scenario in cui gli utenti necessitano dell'accesso in lettura al sistema in modo da poter eseguire un'analisi di simulazione tramite query ad hoc. Questi tipi di richieste potrebbero avere un impatto negativo su altri carichi di lavoro in esecuzione nel sistema. La configurazione del contenimento garantisce che la quantità di risorse sia limitata.

La configurazione del contenimento del carico di lavoro definisce in modo implicito un livello di concorrenza massima. Con CAP_PERCENTAGE_RESOURCE impostato sul 60% e REQUEST_MIN_RESOURCE_GRANT_PERCENT impostato sull'1%, per il gruppo di carico di lavoro è consentito un livello di concorrenza di un massimo di 60. Si consideri il metodo riportato di seguito per determinare la concorrenza massima:

[Concorrenza massima] = [CAP_PERCENTAGE_RESOURCE] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT]

Nota

Il valore effettivo di CAP_PERCENTAGE_RESOURCE di un gruppo di carico di lavoro non raggiungerà il 100% quando vengono creati gruppi di carico di lavoro con MIN_PERCENTAGE_RESOURCE a un livello maggiore di zero. Per i valori di runtime effettivi, vedere sys.dm_workload_management_workload_groups_stats.

Definizione delle risorse per richiesta

I gruppi di carico di lavoro forniscono un meccanismo per definire la quantità minima e massima di risorse allocate per ogni richiesta con i parametri REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT nella sintassi CREATE WORKLOAD GROUP. La risorsa in questo caso è memoria. La governance delle risorse della CPU è illustrata nella sezione Governance delle risorse.

Nota

REQUEST_MAX_RESOURCE_GRANT_PERCENT è un parametro facoltativo che usa per impostazione predefinita lo stesso valore specificato per REQUEST_MIN_RESOURCE_GRANT_PERCENT.

Come per la scelta di una classe di risorse, la configurazione di REQUEST_MIN_RESOURCE_GRANT_PERCENT imposta il valore per le risorse utilizzate da una richiesta. La quantità di risorse indicata dal valore impostato è garantita per l'allocazione alla richiesta prima che inizi l'esecuzione. Per i clienti che eseguono la migrazione dalle classi di risorse ai gruppi di carico di lavoro, provare a seguire le indicazioni dell'articolo sulle procedure per eseguire il mapping dalle classi di risorse ai gruppi di carico di lavoro come punto iniziale.

La configurazione di REQUEST_MAX_RESOURCE_GRANT_PERCENT su un valore maggiore di REQUEST_MIN_RESOURCE_GRANT_PERCENT consente al sistema di allocare più risorse per ogni richiesta. Durante la pianificazione di una richiesta, il sistema determina l'allocazione effettiva delle risorse alla richiesta, che è compresa tra REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT, in base alla disponibilità delle risorse nel pool condiviso e al carico corrente nel sistema. Le risorse devono essere presenti nel pool condiviso di risorse quando la query viene pianificata.

Nota

REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT hanno valori effettivi che dipendono dai valori effettivi di MIN_PERCENTAGE_RESOURCE e CAP_PERCENTAGE_RESOURCE. Per i valori di runtime effettivi, vedere sys.dm_workload_management_workload_groups_stats.

Regole di esecuzione

Nei sistemi di reporting ad hoc i clienti possono eseguire accidentalmente query con eccessivo tempo di esecuzione che incidono gravemente sulla produttività degli altri utenti. Gli amministratori di sistema sono costretti a dedicare tempo a terminare le query con eccessivo tempo di esecuzione per liberare le risorse di sistema. I gruppi di carico di lavoro offrono la possibilità di configurare una regola di timeout per l'esecuzione della query per annullare le query che hanno superato il valore specificato. La regola viene configurata impostando il parametro QUERY_EXECUTION_TIMEOUT_SEC nella sintassi CREATE WORKLOAD GROUP.

Risorse del pool condiviso

Le risorse del pool condiviso sono le risorse non configurate per l'isolamento. I gruppi di carico di lavoro con un valore MIN_PERCENTAGE_RESOURCE impostato su zero sfruttano le risorse nel pool condiviso per l'esecuzione delle richieste. Anche i gruppi di carico di lavoro con un valore CAP_PERCENTAGE_RESOURCE maggiore di MIN_PERCENTAGE_RESOURCE hanno usato le risorse condivise. La quantità di risorse disponibili nel pool condiviso viene calcolata come indicato di seguito.

[Pool condiviso] = 100 - [somma di MIN_PERCENTAGE_RESOURCE tra tutti i gruppi di carico di lavoro]

L'accesso alle risorse nel pool condiviso viene allocato in base all'importanza. Le richieste con lo stesso livello di importanza accederanno alle risorse del pool condiviso su base FIFO (First In First Out).

Passaggi successivi