Condividi tramite


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 risorse e applicare regole di runtime per l'esecuzione di 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 i dati dal sistema.

Le sezioni seguenti illustrano in che modo i gruppi di carico di lavoro offrono la possibilità di definire isolamento, contenimento, definizione della risorsa richiesta e rispettare le 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 ogni richiesta, vedere Risorse per definizione di 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 lavoro non è una prenotazione rigida come lo è per la memoria. Quando le risorse della CPU sono sotto contese, l'utilizzo verrà allineato alla definizione di CAP_PERCENTAGE_RESOURCE per i gruppi di carico di lavoro.

Isolamento dei carichi 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 viene ottenuto configurando il parametro MIN_PERCENTAGE_RESOURCE su maggiore di zero nella sintassi CREATE WORKLOAD GROUP . Per i carichi di lavoro di esecuzione continua che devono rispettare 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 garantito. Ad esempio, un gruppo di carico di lavoro con un MIN_PERCENTAGE_RESOURCE impostato su 30% e REQUEST_MIN_RESOURCE_GRANT_PERCENT impostato su 2% garantisce 15 concorrenza. Il livello di concorrenza è garantito perché 15-2% slot di risorse sono sempre riservati all'interno del gruppo di carico di lavoro (indipendentemente dalla modalità di 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 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 una concorrenza aggiuntiva. Si consideri il metodo seguente per determinare la concorrenza garantita:

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

Annotazioni

Esistono valori minimi del livello di servizio specifici per min_percentage_resource. Per altre informazioni, vedere Valori effettivi per altri dettagli.

In assenza di isolamento del carico di lavoro, le richieste operano 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 perché le risorse vengono allocate al gruppo di carico di lavoro anche se non sono presenti richieste attive nel gruppo di carico di lavoro. L'isolamento sovraconfigurato può comportare una riduzione dell'utilizzo complessivo del sistema.

Gli utenti devono evitare una soluzione di gestione del carico di lavoro che configura 100% isolamento del carico di lavoro: 100% isolamento viene raggiunto quando la somma di min_percentage_resource configurata in tutti i gruppi di carico di lavoro è uguale a 100%. Questo tipo di configurazione è eccessivamente restrittivo e rigido, lasciando poco spazio per le richieste di risorse che vengono accidentalmente classificate erroneamente. È disponibile una disposizione per consentire l'esecuzione di una singola richiesta dai gruppi di carico di lavoro non configurati per l'isolamento. Le risorse allocate a questa richiesta verranno visualizzate come zero nelle DMV dei sistemi e prenderanno in prestito un livello ridotto di concessione di risorse dalle risorse riservate del sistema.

Annotazioni

Per garantire un utilizzo ottimale delle risorse, prendere in considerazione una soluzione di gestione del carico di lavoro che utilizza un certo grado di isolamento per garantire che gli accordi sui livelli di servizio (SLA) vengano soddisfatti e sia integrata 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 si riferisce alla limitazione della quantità di risorse che un gruppo di carico di lavoro può usare. Il contenimento del carico di lavoro viene ottenuto configurando il parametro CAP_PERCENTAGE_RESOURCE su meno di 100 nella sintassi CREATE WORKLOAD GROUP . Si consideri lo scenario in cui gli utenti necessitano dell'accesso in lettura al sistema per poter eseguire un'analisi ipotetica 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 incluso di seguito per determinare la concorrenza massima:

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

Annotazioni

La CAP_PERCENTAGE_RESOURCE effettiva di un gruppo di carico di lavoro non raggiungerà 100% quando vengono creati gruppi di carico di lavoro con MIN_PERCENTAGE_RESOURCE a un livello maggiore di zero. Vedere sys.dm_workload_management_workload_groups_stats per i valori di runtime effettivi.

Risorse per definizione di richiesta

I gruppi di carico di lavoro forniscono un meccanismo per definire la quantità minima e massima di risorse allocate per 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 .

Annotazioni

REQUEST_MAX_RESOURCE_GRANT_PERCENT è un parametro facoltativo che per impostazione predefinita corrisponde allo stesso valore specificato per REQUEST_MIN_RESOURCE_GRANT_PERCENT.

Analogamente alla 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 di iniziare l'esecuzione. Per i clienti che eseguono la migrazione da classi di risorse a gruppi di carico di lavoro, vedere l'articolo Procedura per eseguire il mapping dalle classi di risorse ai gruppi di carico di lavoro come punto di partenza.

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, ovvero 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 esistere nel pool condiviso di risorse quando la query è pianificata.

Annotazioni

REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT hanno valori effettivi che dipendono dai valori effettivi MIN_PERCENTAGE_RESOURCE e CAP_PERCENTAGE_RESOURCE. Vedere sys.dm_workload_management_workload_groups_stats per i valori di runtime effettivi.

Regole di esecuzione

Nei sistemi di creazione di report ad hoc, i clienti possono eseguire accidentalmente query non controllate che influiscono gravemente sulla produttività degli altri utenti. Gli amministratori di sistema sono costretti a dedicare tempo a eliminare le query senza controllo per liberare risorse di sistema. I gruppi di carico di lavoro offrono la possibilità di configurare una regola di timeout di esecuzione delle 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 MIN_PERCENTAGE_RESOURCE impostato su zero sfruttano le risorse nel pool condiviso per eseguire le richieste. I gruppi di carico di lavoro con un CAP_PERCENTAGE_RESOURCE maggiore di MIN_PERCENTAGE_RESOURCE usano anche le risorse condivise. La quantità di risorse disponibili nel pool condiviso viene calcolata nel modo seguente.

[Pool condiviso] = 100 - [somma di MIN_PERCENTAGE_RESOURCE attraverso 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 in base al principio del primo arrivato/primo servito.

Passaggi successivi