Crear un grupo de recursos para SQL Server Machine Learning Services

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores

Obtenga información sobre cómo crear y usar un grupo de recursos para administrar cargas de trabajo de Python o R en SQL Server Machine Learning Services.

El proceso incluye varios pasos:

  1. Estado de revisión de cualquiera de los grupos de recursos existente. Es importante que comprenda qué servicios están usando los recursos existentes.
  2. Modificar grupos de recursos de servidor.
  3. Crear un nuevo grupo de recursos para los procesos externos.
  4. Cree una función de clasificación para identificar las solicitudes de script externas.
  5. Compruebe que el nuevo grupo de recursos externos está capturando trabajos de Python o R de las cuentas o los clientes especificados.

Estado de revisión de los grupos de recursos existentes

  1. Use una instrucción como la siguiente para comprobar los recursos asignados al grupo predeterminado para el servidor.

    SELECT * FROM sys.resource_governor_resource_pools WHERE name = 'default'
    

    Ejemplo de resultados

    {1}pool_id{2} name min_cpu_percent max_cpu_percent min_memory_percent max_memory_percent cap_cpu_percent min_iops_per_volume max_iops_per_volume
    2 default 0 100 0 100 100 0 0
  2. Compruebe los recursos asignados al grupo de recursos externos predeterminado.

    SELECT * FROM sys.resource_governor_external_resource_pools WHERE name = 'default'
    

    Ejemplo de resultados

    external_pool_id name max_cpu_percent max_memory_percent max_processes version
    2 default 100 20 0 2
  3. Con estos valores predeterminados de servidor, es probable que el tiempo de ejecución externo no tenga recursos suficientes para completar la mayoría de las tareas. Para mejorar los recursos, se debe modificar el uso de recursos de servidor de la siguiente manera:

    • Reducir la memoria máxima del equipo que puede usar el motor de base de datos.

    • Aumentar la memoria máxima del equipo que puede usar el proceso externo.

Modificar el uso de recursos de servidor

  1. En Management Studio, ejecute la siguiente instrucción para limitar el uso de memoria de SQL Server al 60 % del valor de la opción "max server memory".

    ALTER RESOURCE POOL "default" WITH (max_memory_percent = 60);
    
  2. Ejecute la instrucción siguiente para limitar el uso de memoria de los procesos externos al 40 % de los recursos totales del equipo.

    ALTER EXTERNAL RESOURCE POOL "default" WITH (max_memory_percent = 40);
    
  3. Para aplicar estos cambios, debe volver a configurar y reiniciar Resource Governor de esta forma:

    ALTER RESOURCE GOVERNOR RECONFIGURE;
    

    Nota

    Estas son solo opciones iniciales sugeridas. Debe evaluar las tareas de aprendizaje automático en función de otros procesos del servidor para determinar el equilibrio correcto para el entorno y la carga de trabajo.

Crear un grupo de recursos externos definido por el usuario

  1. Todos los cambios en la configuración de Resource Governor se aplican a través del servidor como un todo. Los cambios afectan a las cargas de trabajo que usan los conjuntos predeterminados para el servidor, así como a las cargas de trabajo que usan los grupos externos.

    Para proporcionar un mayor control sobre qué cargas de trabajo deben tener prioridad, puede crear un nuevo grupo de recursos externos definido por el usuario. Defina una función de clasificación y asígnela al grupo de recursos externos. La palabra clave EXTERNAL es nueva.

    Cree un nuevo grupo de recursos externos definido por el usuario. En el ejemplo siguiente, el grupo se denomina ds_ep.

    CREATE EXTERNAL RESOURCE POOL ds_ep WITH (max_memory_percent = 40);
    
  2. Cree un grupo de cargas de trabajo denominado ds_wg para usar en la administración de solicitudes de sesión. Para las consultas SQL, usará el grupo predeterminado. Para las consultas de procesos externos usará el grupo ds_ep.

    CREATE WORKLOAD GROUP ds_wg WITH (importance = medium) USING "default", EXTERNAL "ds_ep";
    

    Las solicitudes se asignan al grupo predeterminado siempre que no se puede clasificar la solicitud, o si hay otros errores de clasificación.

Para más información, vea Resource Governor Workload Group (Grupo de cargas de trabajo de Resource Governor) y CREATE WORKLOAD GROUP (Transact-SQL).

Crear una función de clasificación para el aprendizaje automático

Una función de clasificación examina las tareas entrantes. Determina si la tarea se puede ejecutar con el grupo de recursos actual. Las tareas que no cumplen los criterios de la función de clasificación se vuelven a asignar al grupo de recursos predeterminado del servidor.

  1. Empiece por especificar una función clasificadora que Resource Governor debe usar para determinar los grupos de recursos. Puede asignar un valor null como marcador de posición para la función clasificadora.

    ALTER RESOURCE GOVERNOR WITH (classifier_function = NULL);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    

    Para obtener más información, vea ALTER RESOURCE GOVERNOR (Transact-SQL).

  2. En la función clasificadora para cada grupo de recursos, defina el tipo de instrucciones o las solicitudes entrantes que se deben asignar al grupo de recursos.

    Por ejemplo, la siguiente función devuelve el nombre del esquema asignado al grupo de recursos externos definido por el usuario si la aplicación que envió la solicitud es "Microsoft R Host", "RStudio" o "Mashup". De lo contrario, devuelve el grupo de recursos predeterminado.

    USE master
    GO
    CREATE FUNCTION is_ds_apps()
    RETURNS sysname
    WITH schemabinding
    AS
    BEGIN
        IF program_name() in ('Microsoft R Host', 'RStudio', 'Mashup') RETURN 'ds_wg';
        RETURN 'default'
        END;
    GO
    
  3. Cuando se haya creado la función, vuelva a configurar el grupo de recursos para asignar la nueva función clasificadora al grupo de recursos externos que definió anteriormente.

    ALTER RESOURCE GOVERNOR WITH  (classifier_function = dbo.is_ds_apps);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    GO
    

Comprobar los nuevos grupos de recursos y la afinidad

Compruebe la configuración de memoria del servidor y la CPU para cada uno de los grupos de cargas de trabajo. Compruebe que se han realizado los cambios en los recursos de instancia revisando lo siguiente:

  • el grupo predeterminado para el servidor SQL Server
  • el grupo de recursos predeterminado para procesos externos
  • el grupo definido por el usuario para procesos externos
  1. Ejecute la siguiente instrucción para ver todos los grupos de cargas de trabajo:

    SELECT * FROM sys.resource_governor_workload_groups;
    

    Ejemplo de resultados

    group_id name importance request_max_memory_grant_percent request_max_cpu_time_sec request_memory_grant_timeout_sec max_dop group_max_requests pool_id pool_idd external_pool_id
    1 internal Media 25 0 0 0 0 1 2
    2 default Media 25 0 0 0 0 2 2
    256 ds_wg Media 25 0 0 0 0 2 256
  2. Use la nueva vista de catálogo, sys.resource_governor_external_resource_pools (Transact-SQL), para ver todos los grupos de recursos externos.

    SELECT * FROM sys.resource_governor_external_resource_pools;
    

    Ejemplo de resultados

    external_pool_id name max_cpu_percent max_memory_percent max_processes version
    2 default 100 20 0 2
    256 ds_ep 100 40 0 1

    Para más información, vea Resource Governor Catalog Views (Transact-SQL) (Vistas de catálogo de Resource Governor (Transact-SQL)).

  3. Ejecute la instrucción siguiente para devolver información sobre los recursos del equipo que tienen afinidad con el grupo de recursos externo, si procede:

    SELECT * FROM sys.resource_governor_external_resource_pool_affinity;
    

    No se mostrará ninguna información porque los grupos se crearon con la afinidad AUTO. Para más información, vea sys.dm_resource_governor_resource_pool_affinity (Transact-SQL).

Pasos siguientes

Para obtener más información acerca de la administración de recursos del servidor, vea:

Para obtener información general sobre la regulación de recursos para el aprendizaje automático, vea: