Pool di risorse di Resource GovernorResource Governor Resource Pool

In questo argomento si applica a: SìSQL ServernonDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In Resource Governor di SQL ServerSQL Server , un pool di risorse rappresenta un subset delle risorse fisiche di un'istanza del Motore di databaseDatabase Engine.In the SQL ServerSQL Server Resource Governor, a resource pool represents a subset of the physical resources of an instance of the Motore di databaseDatabase Engine. Resource Governor permette di specificare i limiti sulla quantità di CPU, I/O fisico e memoria che le richieste dell'applicazione in ingresso possono utilizzare nel pool di risorse.Resource Governor enables you to specify limits on the amount of CPU, physical IO, and memory that incoming application requests can use within the resource pool. Ogni pool di risorse può contenere uno o più gruppi di carico di lavoro.Each resource pool can contain one or more workload groups. Una volta avviata, la sessione viene assegnata a un gruppo di carico di lavoro specifico tramite la funzione di classificazione di Resource Governor e deve essere eseguita utilizzando le risorse assegnate a tale gruppo.When a session is started, the Resource Governor classifier assigns the session to a specific workload group, and the session must run using the resources assigned to the workload group.

Concetti relativi al pool di risorseResource Pool Concepts

Un pool di risorse, o pool, rappresenta le risorse fisiche del server.A resource pool, or pool, represents the physical resources of the server. Il pool può essere paragonato a un'istanza virtuale di SQL ServerSQL Server in un'istanza di SQL ServerSQL Server .You can think of a pool as a virtual SQL ServerSQL Server instance inside of a SQL ServerSQL Server instance. Un pool è composto da due parti.A pool has two parts. Una parte non si sovrappone agli altri pool, abilitando così la prenotazione delle risorse minime.One part does not overlap with other pools, which enables minimum resource reservation. L'altra parte è condivisa con gli altri pool e supporta l'utilizzo massimo possibile delle risorse.The other part is shared with other pools, which supports maximum possible resource consumption. Le risorse del pool vengono definite specificando una o più delle seguenti impostazioni per ciascuna risorsa (CPU, memoria e I/O fisico):The pool resources are defined by specifying one or more of the following settings for each resource (CPU, memory, and physical IO):

  • MIN_CPU_PERCENT e MAX_CPU_PERCENTMIN_CPU_PERCENT and MAX_CPU_PERCENT

    Queste impostazioni rappresentano il valore minimo e massimo della larghezza di banda media garantita della CPU per tutte le richieste nel pool in caso di contesa delle risorse della CPU.These settings are the minimum and maximum guaranteed average CPU bandwidth for all requests in the resource pool when there is CPU contention. È possibile utilizzare queste impostazioni per determinare l'utilizzo previsto delle risorse della CPU per più carichi di lavoro in base alle esigenze di ciascun carico di lavoro.You can use these settings to establish predictable CPU resource usage for multiple workloads that is based on the needs of each workload. Si supponga ad esempio che i reparti Vendita e Marketing di un'azienda condividano lo stesso database.For example, assume the Sales and Marketing departments in a company share the same database. Il reparto Vendita ha un carico di lavoro ad uso intensivo della CPU con query ad alta priorità.The Sales department has a CPU-intensive workload with high-priority queries. Anche il reparto Marketing ha un carico di lavoro ad uso intensivo della CPU, ma la priorità delle query è inferiore.The Marketing department also has a CPU-intensive workload, but has lower-priority queries. Se si crea un pool di risorse distinto per ciascun reparto, è possibile assegnare una percentuale di CPU minima pari a 70 per il pool di risorse del reparto Vendita e una percentuale massima pari a 30 per il pool di risorse del reparto Marketing.By creating a separate resource pool for each department, you can assign a minimum CPU percentage of 70 for the Sales resource pool and a maximum CPU percentage of 30 for the Marketing resource pool. In questo modo si garantisce che il carico di lavoro del reparto Vendita riceva le risorse della CPU necessarie e che il carico di lavoro del reparto Marketing sia isolato dalle richieste di CPU del carico di lavoro dell'altro reparto.This ensures that the Sales workload receives the CPU resources it requires and the Marketing workload is isolated from the CPU demands of the Sales workload. Notare che la percentuale di CPU massima è un valore massimo opportunistico.Note that the maximum CPU percentage is an opportunistic maximum. Se disponibile, il carico di lavoro utilizza fino al 100% della capacità della CPU.If there is available CPU capacity, the workload uses it up to 100 percent. Il valore massimo viene applicato solo in caso di contesa delle risorse della CPU.The maximum value only applies when there is contention for CPU resources. In questo esempio, se il carico di lavoro del reparto Vendita è disattivato, per il carico di lavoro del reparto Marketing se necessario può essere utilizzato il 100% della CPU.In this example, if the Sales workload is switched off, the Marketing workload can use 100 percent of the CPU if needed.

  • CAP_CPU_PERCENTCAP_CPU_PERCENT

    Questa impostazione impone un limite rigido sulla larghezza di banda della CPU per tutte le richieste nel pool di risorse.This settings is a hard cap limit on the CPU bandwidth for all requests in the resource pool. I carichi di lavoro associati al pool possono utilizzare la capacità della CPU oltre il valore di MAX_CPU_PERCENT se è disponibile, ma non oltre il valore di CAP_CPU_PERCENT.Workloads associated with the pool can use CPU capacity above the value of MAX_CPU_PERCENT if it is available, but not above the value of CAP_CPU_PERCENT. Utilizzando l'esempio precedente, si supponga che al reparto Marketing sia fatturato l'utilizzo delle risorse.Using the example above, lets assume that the Marketing department is being charged for their resource usage. Il reparto chiede di ricevere una fatturazione prevedibile e non desidera pagare più del 30 percento della CPU.They want predictable billing and do not want to pay for more than 30 percent of the CPU. Questa richiesta può essere soddisfatta impostando CAP_CPU_PERCENT su 30 per il pool di risorse del reparto Marketing.This can be accomplished by setting the CAP_CPU_PERCENT to 30 for the Marketing resource pool.

  • MIN_MEMORY_PERCENT e MAX_MEMORY_PERCENTMIN_MEMORY_PERCENT and MAX_MEMORY_PERCENT

    Queste impostazioni rappresentano il valore minimo e massimo della quantità di memoria riservata al pool di risorse che non può essere condivisa con altri pool di risorse.These settings are the minimum and maximum amount of memory reserved for the resource pool that can not be shared with other resource pools. La memoria a cui viene fatto riferimento qui è la memoria concessa per l'esecuzione delle query, non la memoria del pool di buffer (ad esempio le pagine di dati e di indice).The memory referenced here is query execution grant memory, not buffer pool memory (for example, data and index pages). Impostando un valore di memoria minimo per un pool, si garantisce la disponibilità della percentuale di memoria specificata per qualsiasi richiesta che possa essere eseguita nel pool di risorse.Setting a minimum memory value for a pool means that you are ensuring that the percentage of memory specified will be available for any requests that might run in this resource pool. Questo rappresenta un'importante differenza rispetto a MIN_CPU_PERCENT, perché in questo caso la memoria può rimanere nel pool di risorse in questione anche se non esistono richieste nei gruppi di carico di lavoro appartenenti a esso.This is an important differentiator compared to MIN_CPU_PERCENT, because in this case memory may remain in the given resource pool even when the pool does not have any requests in the workload groups belonging to this pool. Occorre quindi prestare molta attenzione nell'utilizzo di questa impostazione, perché la memoria specificata non sarà disponibile per gli altri pool, anche in assenza di richieste attive.Therefore it is crucial that you be very careful when using this setting, because this memory will be unavailable for use by any other pool, even when there are no active requests. Se si imposta un valore di memoria massimo per un pool significa che le richieste in esecuzione in questo pool non otterranno mai più di questa percentuale di memoria complessiva.Setting a maximum memory value for a pool means that when requests are running in this pool, they will never get more than this percentage of overall memory.

  • AFFINITYAFFINITY

    Con questa impostazione è possibile impostare l'affinità di un pool di risorse a una o più unità di pianificazione o nodi NUMA per un maggiore isolamento delle risorse della CPU.This setting lets you affinitize a resource pool to one or more schedulers or NUMA nodes for greater isolation of CPU resources. Nello scenario precedente dei reparti Vendita e Marketing, si supponga che il reparto Vendita necessiti di un ambiente più isolato e richieda costantemente il 100% di un core CPU.Using the Sales and Marketing scenario above, lets assume that the Sales department needs a more isolated environment and wants 100 percent of a CPU core at all times. Tramite l'utilizzo dell'opzione AFFINITY è possibile pianificare i carichi di lavoro dei reparti Vendita e Marketing su CPU differenti.By using the AFFINITY option the Sales and Marketing workloads can be scheduled on different CPUs. Supponendo che il valore di CAP_CPU_PERCENT nel pool del reparto Marketing sia invariato, il carico di lavoro del reparto Marketing continua a utilizzare un massimo del 30 percento di un core, mentre il carico di lavoro del reparto Vendita utilizza il 100 percento dell'altro core.Assuming the CAP_CPU_PERCENT on the Marketing pool is still in place, the Marketing workload continues to use a maximum of 30 percent of one core, while the Sales workload uses 100 percent of the other core. Per quanto concerne i carichi di lavoro dei reparti Vendita e Marketing, essi sono in esecuzione su due computer isolati.As far as the Sales and Marketing workloads are concerned, they are running on two isolated machines.

  • MIN_IOPS_PER_VOLUME e MAX_IOPS_PER_VOLUMEMIN_IOPS_PER_VOLUME and MAX_IOPS_PER_VOLUME

    Queste impostazioni rappresentano il valore minimo e massimo delle operazioni di I/O fisico al secondo (IOPS) per volume di disco per un pool di risorse.These settings are the minimum and maximum physical IO operations per second (IOPS) per disk volume for a resource pool. È possibile utilizzare queste impostazioni per controllare gli I/O fisici per i thread di utente per un determinato pool di risorse.You can use these settings to control the physical IOs issued for user threads for a given resource pool. Il reparto Vendita genera ad esempio numerosi report di fine mese in grandi batch.For example, the Sales department generates several end-of-month reports in large batches. Le query in questi batch possono generare operazioni di I/O tali da saturare il volume del disco e influire sulle prestazioni di altri carichi di lavoro nel database che hanno una priorità più elevata.The queries in these batches can generate IOs that can saturate the disk volume and impact the performance of other higher priority workloads in the database. Per isolare questo carico di lavoro, MIN_IOPS_PER_VOLUME viene impostato su 20 e MAX_IOPS_PER_VOLUME viene impostato su 100 per il pool di risorse del reparto Vendita, in modo da controllare il livello di I/O che può essere emesso per il carico di lavoro.To isolate this workload, the MIN_IOPS_PER_VOLUME is set to 20 and the MAX_IOPS_PER_VOLUME is set to 100 for the Sales department resource pool, which controls the level of IOs that can issued for the workload.

Quando si configura la CPU o la memoria, la somma dei valori MIN di tutti i pool non può superare il 100 percento delle risorse del server.When configuring CPU or Memory, the sum of MIN values across all pools cannot exceed 100 percent of the server resources. Inoltre, quando si configura la CPU o la memoria, i valori MAX e CAP possono essere impostati dovunque nell'intervallo tra MIN e 100 percento inclusi.In addition, when configuring CPU or Memory, MAX and CAP values can be set anywhere in the range between MIN and 100 percent inclusive.

Se per un pool è definito un valore MIN diverso da zero, il valore MAX effettivo degli altri pool viene nuovamente regolato.If a pool has a nonzero MIN defined, the effective MAX value of other pools is readjusted. Il valore minimo del valore MAX configurato di un pool e la somma dei valori MIN degli altri pool vengono sottratti dal 100 percento.The minimum of the configured MAX value of a pool and the sum of the MIN values of other pools is subtracted from 100 percent.

Nella seguente tabella vengono illustrati alcuni concetti precedenti.The following table illustrates a few of the preceding concepts. Nella tabella vengono mostrate le impostazioni per il pool interno, il pool predefinito e due pool definiti dall'utente.The table shows the settings for the internal pool, the default pool, and two user-defined pools.

Nome poolPool name Impostazione MIN%MIN % setting Impostazione MAX%MAX % setting Valore MAX% effettivo calcolatoCalculated effective MAX % Percentuale condivisa calcolataCalculated shared % CommentoComment
internointernal 00 100100 100100 00 I valori MAX% effettivo e % condivisa non sono applicabili al pool interno.Effective MAX% and shared% are not applicable to the internal pool.
predefinitidefault 00 100100 3030 3030 Il valore MAX effettivo viene calcolato come: min(100,100-(20+50)) = 30.The effective MAX value is calculated as: min(100,100-(20+50)) = 30. La percentuale condivisa calcolata è il valore effettivo MAX - MIN = 30.The calculated shared % is effective MAX - MIN = 30.
Pool 1Pool 1 2020 100100 5050 3030 Il valore MAX effettivo viene calcolato come: min(100,100-50) = 50.The effective MAX value is calculated as: min(100,100-50) = 50. La percentuale condivisa calcolata è il valore effettivo MAX - MIN = 30.The calculated Shared % is Effective MAX - MIN = 30.
Pool 2Pool 2 5050 7070 7070 2020 Il valore MAX effettivo viene calcolato come: min(70,100-20) = 70.The effective MAX value is calculated as: min(70,100-20) = 70. La percentuale condivisa calcolata è il valore effettivo MAX - MIN = 20.The calculated Shared % is Effective MAX - MIN = 20.

Le seguenti formule vengono utilizzate per calcolare il valore MAX% effettivo e la percentuale condivisa nella tabella precedente:The following formulas are used for calculating the effective MAX% and the shared % in the table above:

  • Min(X,Y) indica il valore più piccolo di X e Y.Min(X,Y) means the smaller value of X and Y.

  • Sum(X) indica la somma del valore X in tutti i pool.Sum(X) means the sum of value X across all pools.

  • Totale percentuale condivisa = 100 - sum(MIN%).Total shared % = 100 - sum(MIN %).

  • Valore effettivo MAX% = Min(X,Y).Effective MAX % = min(X,Y).

  • Percentuale condivisa = Valore effettivo MAX% - MIN%.Shared % = Effective MAX % - MIN %.

Utilizzando la tabella precedente come esempio, è possibile descrivere ulteriormente le regolazioni che si verificano quando viene creato un altro pool.Using the preceding table as an example, we can further illustrate the adjustments that take place when another pool is created. Il pool descritto è il pool 3 e ha una impostazione MIN% di 5.This pool is Pool 3 and has a MIN % setting of 5.

Nome poolPool name Impostazione MIN%MIN % setting Impostazione MAX%MAX % setting Valore MAX% effettivo calcolatoCalculated effective MAX % Percentuale condivisa calcolataCalculated shared % CommentoComment
internointernal 00 100100 100100 00 I valori MAX% effettivo e % condivisa non sono applicabili al pool interno.Effective MAX % and shared % are not applicable to the internal pool.
predefinitidefault 00 100100 2525 2525 Il valore MAX effettivo viene calcolato come: min(100,100-(20+50+5) = 25.The effective MAX value is calculated as: min(100,100-(20+50+5)) = 25. La percentuale condivisa calcolata è il valore effettivo MAX - MIN = 25.The calculated shared % is Effective MAX - MIN = 25.
Pool 1Pool 1 2020 100100 4545 2525 Il valore MAX effettivo viene calcolato come: min(100,100-55) = 45.The effective MAX value is calculated as: min(100,100-55) = 45. La percentuale condivisa calcolata è il valore effettivo MAX - MIN = 25.The calculated Shared % is Effective MAX - MIN = 25.
Pool 2Pool 2 5050 7070 7070 2020 Il valore MAX effettivo viene calcolato come: min(70,100-25) = 70.The effective MAX value is calculated as: min(70,100-25) = 70. La percentuale condivisa calcolata è il valore effettivo MAX - MIN = 20.The calculated Shared % is effective MAX - MIN = 20.
Pool 3Pool 3 55 100100 3030 2525 Il valore MAX effettivo viene calcolato come: min(100,100-70) = 30.The effective MAX value is calculated as: min(100,100-70) = 30. La percentuale condivisa calcolata è il valore effettivo MAX - MIN = 25.The calculated Shared % is effective MAX - MIN = 25.

La parte condivisa del pool viene utilizzata per indicare la destinazione possibile delle risorse, se disponibili.The shared part of the pool is used to indicate where available resources can go if resources are available. Tuttavia, quando le risorse vengono utilizzate vengono destinate al pool specificato e non vengono condivise.However, when resources are consumed they go to the specified pool and are not shared. Ciò può migliorare l'utilizzo delle risorse nei casi in cui non sono presenti richieste in un pool specificato e le risorse configurate per il pool possono essere liberate per gli altri pool.This may improve resource utilization in cases where there are no requests in a given pool and the resources configured to the pool can be freed up for other pools.

Alcuni casi estremi di configurazione del pool sono:Some extreme cases of pool configuration are:

  • Tutti i pool definiscono valori minimi che in totale rappresentano il 100 percento delle risorse del server.All pools define minimums that in total represent 100 percent of the server resources. In questo caso i valori massimi effettivi equivalgono ai minimi.In this case the effective maximums are equal to minimums. Ciò equivale a dividere le risorse del server in parti non sovrapposte indipendentemente dalle risorse utilizzate in ciascun pool.This is equivalent to dividing the server resources into non-overlapping pieces regardless of resources are consumed inside any given pool.

  • Tutti i pool hanno valori minimi uguali a zero.All pools have zero minimums. Tutti i pool si contendono le risorse disponibili e le dimensioni finali sono basate sull'utilizzo delle risorse in ciascun pool.All the pools compete for available resources and their final sizes are based on resource consumption in each pool. Altri fattori quali i criteri svolgono un ruolo nella determinazione delle dimensioni finali del pool.Other factors such as policies play a role in shaping the final pool size.

In Resource Governor sono disponibili due pool di risorse, il pool interno e il pool predefinito.Resource Governor predefines two resource pools, the internal pool and the default pool. È possibile aggiungere altri pool.You can add additional pools.

Pool internoInternal Pool

Il pool interno rappresenta le risorse utilizzate da SQL ServerSQL Server .The internal pool represents the resources consumed by the SQL ServerSQL Server itself. Questo pool contiene sempre soltanto il gruppo interno e non può essere modificato in alcun modo.This pool always contains only the internal group, and the pool is not alterable in any way. L'utilizzo delle risorse da parte del pool interno non è limitato.Resource consumption by the internal pool is not restricted. I carichi di lavoro nel pool sono considerati critici per la funzione del server e tramite Resource Governor il pool interno richiede memoria agli altri pool anche se questo comporta la violazione dei limiti impostati per gli altri pool.Any workloads in the pool are considered critical for server function, and Resource Governor allows the internal pool to pressure other pools even if it means the violation of limits set for the other pools.

Nota

L'utilizzo del pool interno e delle risorse del gruppo interno non viene sottratto dall'utilizzo complessivo delle risorse.The internal pool and internal group resource usage is not subtracted from the overall resource usage. Le percentuali vengono calcolate dalle risorse complessive disponibili.Percentages are calculated from the overall resources available.

Pool predefinitoDefault Pool

Il pool predefinito è il primo pool utente predefinito.The default pool is the first predefined user pool. Prima della configurazione il pool predefinito contiene solo il gruppo predefinito.Prior to any configuration the default pool only contains the default group. Il pool predefinito non può essere creato o eliminato ma può essere modificato.The default pool cannot be created or dropped but it can be altered. Il pool predefinito può contenere gruppi definiti dall'utente oltre al gruppo predefinito.The default pool can contain user-defined groups in addition to the default group. A partire da SQL Server 2016SQL Server 2016 è presente un pool di risorse predefinito per le operazioni SQL ServerSQL Server di routine e un pool di risorse esterno predefinito per i processi esterni, ad esempio l'esecuzione di script R.Beginning with SQL Server 2016SQL Server 2016 there is a default resource pool for routine SQL ServerSQL Server operations, and a default external resource pool for external processes, such as executing R scripts.

Nota

Il gruppo predefinito può essere modificato ma non può essere spostato all'esterno del pool predefinito.The default group is alterable but it cannot be moved out of the default pool.

Pool esternoExternal Pool

Gli utenti possono definire un pool esterno per definire le risorse per i processi esterni.Users can define an external pool to define resources for the external processes. Per R Services, questo pool determina rterm.exe, BxlServer.exe e altri processi derivati.For R Services, this specifically governs rterm.exe, BxlServer.exe and other processes spawned by them.

Pool di risorse definiti dall'utenteUser-Defined Resource Pools

I pool di risorse definiti dall'utente sono quelli che si creano per carichi di lavoro specifici in un ambiente.User-defined resource pools are those that you create for specific workloads in your environment. Resource Governor fornisce istruzioni DDL per la creazione, la modifica e l'eliminazione dei pool di risorse.Resource Governor provides DDL statements for creating, changing, and dropping resource pools.

Attività relative ai pool di risorseResource Pool Tasks

Descrizione dell'attivitàTask Description ArgomentoTopic
Viene descritto come creare un pool di risorse.Describes how to create a resource pool. Creare un pool di risorseCreate a Resource Pool
Viene descritto come modificare le impostazioni del pool di risorse.Describes how to change resource pool settings. Modificare le impostazioni del pool di risorseChange Resource Pool Settings
Viene descritto come eliminare un pool di risorse.Describes how to delete a resource pool. Eliminare un pool di risorseDelete a Resource Pool

Vedere ancheSee Also

Resource Governor Resource Governor
Gruppo di carico di lavoro di Resource Governor Resource Governor Workload Group
Funzione di classificazione di Resource Governor Resource Governor Classifier Function
Configurare Resource Governor utilizzando un modello Configure Resource Governor Using a Template
Visualizzare proprietà di Resource GovernorView Resource Governor Properties