Grupo de recursos de Resource Governor
Se aplica a:SQL ServerAzure SQL Managed Instance
En el regulador de recursos, un grupo de recursos representa un subconjunto de los recursos físicos de una instancia del motor de base de datos. El regulador de recursos permite especificar límites en la cantidad total de CPU, E/S física y memoria que las solicitudes de las aplicaciones pueden utilizar en el grupo de recursos.
Cada grupo de recursos puede contener uno o varios grupos de cargas de trabajo . Cuando se crea una sesión, se clasifica en un grupo de cargas de trabajo específico. Las directivas de grupo de cargas de trabajo rigen las solicitudes que se ejecutan en una sesión. Las solicitudes usan los recursos del grupo de recursos subyacente.
Conceptos del grupo de recursos
Un grupo de recursos representa los recursos físicos del servidor, como CPU, memoria y E/S. En función de la configuración, los recursos de un grupo de recursos se pueden reservar o compartir con otros grupos. La configuración del grupo se define especificando una o varias de las opciones siguientes para cada tipo de recurso (CPU, memoria y E/S física):
MIN_CPU_PERCENT y MAX_CPU_PERCENT
Esta configuración define el ancho de banda medio de CPU mínimo y máximo garantizado para todas las solicitudes del grupo de recursos cuando hay contención de CPU. MIN_CPU_PERCENT
es una reserva de ancho de banda de CPU para el grupo de recursos que no puede ser usado por otros grupos cuando hay contención. MAX_CPU_PERCENT
es un límite flexible para el ancho de banda de CPU en el grupo. El límite solo se aplica si hay contención de CPU con otros grupos.
Por ejemplo, supongamos que los departamentos ventas y marketing de una empresa comparten la misma instancia de SQL Server. El departamento de ventas tiene una carga de trabajo intensiva de CPU con consultas de alta prioridad. El departamento de marketing también tiene una carga de trabajo que consume mucha CPU, pero tiene consultas de prioridad más baja. Al crear un grupo de recursos independiente para cada departamento, puede asignar un mínimo porcentaje de CPU de 40 para el grupo de recursos Sales y un máximo porcentaje de CPU de 30 para el grupo de recursos marketing. Esta configuración garantiza que la carga de trabajo Ventas recibe los recursos de CPU que requiere y que la carga de trabajo Marketing no afecta a las demandas de CPU de la carga de trabajo Ventas.
El porcentaje máximo de CPU es un máximo oportunista. Si hay capacidad de CPU disponible, las solicitudes usan todas ellas, hasta el 100 %. El valor máximo solo se aplica cuando hay contención para los recursos de CPU. En el ejemplo anterior, si la carga de trabajo Sales no se está ejecutando, la carga de trabajo Marketing puede usar el 100 % de la CPU si es necesario.
CAP_CPU_PERCENT
La configuración de CAP_CPU_PERCENT
es un límite estricto en el ancho de banda de CPU para todas las solicitudes del grupo de recursos. Las cargas de trabajo asociadas al grupo pueden usar la capacidad de CPU por encima del valor de MAX_CPU_PERCENT
si está disponible, pero no por encima del valor de CAP_CPU_PERCENT
. En función del ejemplo de la sección anterior, supongamos que el departamento de marketing se está cobrando por su uso de recursos. Quieren una facturación predecible y no quieren pagar por más del 30 % de la CPU. Este objetivo se puede lograr estableciendo CAP_CPU_PERCENT
en 30 para el grupo de recursos de marketing.
MIN_MEMORY_PERCENT y MAX_MEMORY_PERCENT
Esta configuración es la cantidad mínima y máxima de memoria reservada para el grupo de recursos que no se puede compartir con otros grupos de recursos.
Al establecer un valor de memoria mínimo para un grupo, se reserva la memoria para las solicitudes que se ejecutan en este grupo de recursos. Esta configuración es diferente de MIN_CPU_PERCENT
, ya que la memoria reservada podría permanecer en el grupo incluso cuando no hay solicitudes en los grupos de cargas de trabajo que pertenecen a este grupo. Tenga cuidado al usar esta configuración, ya que esta memoria no está disponible para su uso por parte de cualquier otro grupo, incluso cuando no haya ninguna solicitud activa. Establecer un valor de memoria máximo para un grupo significa que, cuando las solicitudes se ejecutan en este grupo, nunca obtienen más de este porcentaje de memoria general.
Para las bases de datos sin tablas optimizadas para memoria, la memoria regulada por MIN_MEMORY_PERCENT
y MAX_MEMORY_PERCENT
es específicamente la memoria del espacio de trabajo de consultas o la memoria asignada para la ejecución de consultas. La memoria del grupo de búferes (páginas de datos e índices) siempre se comparte entre todos los grupos de recursos y no está reservada o limitada por el regulador de recursos. Para obtener más información sobre las concesiones de memoria para la ejecución de consultas, consulte Consideraciones de concesión de memoria. Para obtener más información sobre el uso de grupos de recursos con tablas optimizadas para memoria, consulte Enlazar una base de datos con tablas de Memory-Optimized a un grupo de recursos.
AFFINITY
Este valor permite establecer afinidad entre un grupo de recursos de servidor y uno o varios programadores o nodos NUMA para conseguir un mayor aislamiento de los recursos de CPU. Para usar el escenario ventas y marketing de las secciones anteriores, supongamos que el departamento de ventas necesita un entorno más aislado y quiere un 100 % de una CPU lógica en todo momento. Con la opción AFFINITY
, las cargas de trabajo de Ventas y Marketing se pueden programar en distintas CPU lógicas. Suponiendo que se especifica el CAP_CPU_PERCENT
en el grupo de Marketing, la carga de trabajo de Marketing sigue usando un máximo del 30 % de una CPU, mientras que la carga de trabajo de Ventas usa el 100 % de otra CPU.
MIN_IOPS_PER_VOLUME y MAX_IOPS_PER_VOLUME
Estos valores representan el número mínimo y máximo de operaciones de E/S físicas por segundo (IOPS) por cada volumen de disco para un grupo de recursos de servidor. Puede utilizar esta configuración para controlar las E/S físicas emitidas por las solicitudes de usuario en un grupo de recursos determinado. Por ejemplo, el departamento de ventas genera varios informes de fin de mes en lotes grandes. Las consultas de estos lotes pueden generar E/S que pueden saturar el volumen de disco y afectar al rendimiento de otras cargas de trabajo de mayor prioridad en la misma instancia de SQL Server. Para aislar esta carga de trabajo, el MIN_IOPS_PER_VOLUME
se establece en 500 y el MAX_IOPS_PER_VOLUME
se establece en 2000 para el grupo de recursos del departamento de ventas.
Grupos de recursos definidos por el sistema y el usuario
El regulador de recursos tiene dos grupos de recursos predefinidos, el grupo internal
y el grupo default
. Puede crear grupos adicionales definidos por el usuario.
Grupo interno
El grupo de internal
rige los recursos consumidos por el propio motor de base de datos. Esta piscina siempre contiene solo el grupo internal
, y no se puede modificar de ninguna manera. El consumo de recursos por parte del grupo de internal
no está restringido. Cualquier carga de trabajo en el grupo se considera crítica para el funcionamiento del motor de base de datos. El regulador de recursos permite que el grupo de internal
pueda presionar a los demás grupos incluso si eso significa una infracción de los límites establecidos para los otros grupos.
Nota:
El uso de recursos del pool internal
y el grupo internal
no se resta del uso general de recursos. Los porcentajes se calculan a partir de los recursos totales disponibles.
Grupo predeterminado
Inicialmente, el grupo de recursos default
solo contiene el grupo de cargas de trabajo default
. No puede crear ni quitar el grupo de default
, pero puede modificarlo. El grupo de default
puede contener grupos de cargas de trabajo definidos por el usuario además del grupo de default
. A partir de SQL Server 2016 (13.x), además del grupo de recursos de default
para las operaciones del motor de base de datos, hay un grupo de recursos externo default
específicamente para procesos externos, como ejecutar scripts de R.
Nota:
El grupo de default
se puede modificar, pero no se puede mover fuera del grupo de default
.
Grupo externo
Los usuarios pueden crear un grupo externo para definir recursos para los procesos externos. Para R Services, este grupo rige específicamente rterm.exe
, BxlServer.exe
, python.exe
y otros procesos generados por ellos. Para obtener más información, consulte CREATE EXTERNAL RESOURCE POOL.
Grupos de recursos definidos por el usuario
Puede crear grupos de recursos definidos por el usuario para cargas de trabajo específicas en su entorno. El regulador de recursos proporciona instrucciones DDL para crear, modificar y eliminar grupos de recursos. Para obtener más información, consulte Crear un grupo de recursos, Eliminar un grupo de recursosy Cambiar la configuración del grupo de recursos.
Asignación de recursos entre grupos de recursos
Al configurar los límites de CPU y memoria y las reservas, la suma de los valores MIN
en todos los grupos no puede superar el 100 % de los recursos del servidor. Los valores MAX
y CAP
se pueden establecer en cualquier punto del intervalo entre el valor de MIN
y el 100 %, inclusivo.
Si un grupo tiene una reserva de recursos especificando un valor de MIN
distinto de cero, es posible que se reduzca el valor de MAX
efectivo de otros grupos. La menor parte del valor de MAX
configurado de un grupo y la suma de los valores MIN
de otros grupos se resta del 100 %.
En las tablas siguientes se muestra este concepto. En estas tablas, LEAST(X, Y)
significa el valor más pequeño de X
y Y
. Todos los valores numéricos son porcentajes.
La primera tabla muestra la configuración del grupo de internal
, el grupo de default
y dos grupos definidos por el usuario.
Nombre del grupo | MIN |
MAX |
Effective MAX |
Shared % |
Comentario |
---|---|---|---|---|---|
internal |
0 | 100 | 100 | 0 | Effective MAX y Shared % no son aplicables al grupo de internal . |
default |
0 | 100 | 30 | 30 | Effective MAX = LEAST(100, 100 - (20 + 50)) = 30 Shared % = Effective MAX - MIN = 30 |
Pool 1 |
20 | 100 | 50 | 30 | Effective MAX = LEAST(100, 100 - 50) = 50 Shared % = Effective MAX - MIN = 30 |
Pool 2 |
50 | 70 | 70 | 20 | Effective MAX = LEAST(70, 100 - 20) = 70 Shared % = Effective MAX - MIN = 20 |
Con la tabla anterior como ejemplo, podemos ilustrar aún más los ajustes que tienen lugar cuando se crea otro grupo de recursos. Este grupo se denomina Pool 3
y tiene un valor MIN
de 5.
Nombre del grupo | MIN |
MAX |
Effective MAX |
Shared % |
Comentario |
---|---|---|---|---|---|
internal |
0 | 100 | 100 | 0 | Effective MAX y Shared % no son aplicables al grupo de internal . |
default |
0 | 100 | 25 | 25 | Effective MAX = LEAST(100, 100 - (20 + 50 + 5)) = 25 Shared % = Effective MAX - MIN = 25 |
Pool 1 |
20 | 100 | 45 | 25 | Effective MAX = LEAST(100, 100 - (50 + 5))) = 45 Shared % = Effective MAX - MIN = 25 |
Pool 2 |
50 | 70 | 70 | 20 | Effective MAX = LEAST(70, 100 - (20 + 5))) = 70 Shared % = Effective MAX - MIN = 20 |
Pool 3 |
5 | 100 | 30 | 25 | Effective MAX = LEAST(100, 100 - (50 + 20))) = 30 Shared % = Effective MAX - MIN = 25 |
La parte compartida de la piscina es donde pueden ir los recursos disponibles. Sin embargo, cuando se consumen recursos, van al grupo especificado y no se comparten. Este comportamiento puede mejorar el uso de recursos en los casos en los que no hay ninguna solicitud en un grupo determinado y los recursos que no están reservados para el grupo se pueden liberar para otros grupos.
Algunos casos límite de configuración del grupo son:
- Todos los grupos definen mínimos que en total representan el 100 por cien de los recursos del servidor. En este caso, los máximos efectivos son iguales que los mínimos. Esto equivale a dividir los recursos del servidor en partes no superpuestas, independientemente de cómo se consuman los recursos dentro de cualquier grupo determinado.
- Todos los grupos tienen mínimos cero. Todos los grupos comparten y compiten por los recursos disponibles y sus tamaños de tiempo de ejecución se basan en el consumo de recursos en cada grupo. Otros factores, como las directivas de grupo de cargas de trabajo, desempeñan un papel en definir los tamaños de los grupos.
Tareas del grupo de recursos
Los grupos de recursos pueden controlar una variedad de recursos del sistema. Para obtener más información, consulte CREATE RESOURCE POOL.
Para obtener más ejemplos y un tutorial completo, consulte Tutorial: Ejemplos de configuración del regulador de recursos y procedimientos recomendados.
Descripción de la tarea | Artículo |
---|---|
Creación de un grupo de recursos | Crear un grupo de recursos |
Modificación de la configuración del grupo de recursos | Cambiar la configuración del grupo de recursos |
Eliminación de un grupo de recursos | Eliminar un grupo de recursos |
El regulador de recursos proporciona instrucciones DDL para crear, modificar y eliminar grupos de recursos.
Para obtener más información, incluidos los detalles sobre las reservas y los límites del grupo de recursos, consulte: