Een resourcegroep maken voor SQL Server Machine Learning Services

Van toepassing op: SQL Server 2016 (13.x) en latere versies

Meer informatie over het maken en gebruiken van een resourcegroep voor het beheren van Python- en R-workloads in SQL Server Machine Learning Services.

Het proces omvat meerdere stappen:

  1. Controleer de status van bestaande resourcegroepen. Het is belangrijk dat u begrijpt welke services gebruikmaken van bestaande resources.
  2. Wijzig serverresourcegroepen.
  3. Maak een nieuwe resourcegroep voor externe processen.
  4. Maak een classificatiefunctie om externe scriptaanvragen te identificeren.
  5. Controleer of de nieuwe externe resourcegroep R- of Python taken van de opgegeven clients of accounts vastlegt.

De status van bestaande resourcegroepen controleren

  1. Gebruik een instructie zoals het volgende om de resources te controleren die zijn toegewezen aan de standaardgroep voor de server.

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

    Voorbeeldresultaten

    pool_id naam 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. Controleer de resources die zijn toegewezen aan de standaard externe resourcegroep.

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

    Voorbeeldresultaten

    external_pool_id naam max_cpu_percent max_memory_percent max_processes version
    2 default 100 20 0 2
  3. Onder deze standaardinstellingen voor de server beschikt de externe runtime waarschijnlijk over onvoldoende resources om de meeste taken uit te voeren. Als u resources wilt verbeteren, moet u het serverresourcegebruik als volgt wijzigen:

    • Verminder het maximale computergeheugen dat kan worden gebruikt door de database-engine.

    • Verhoog het maximale computergeheugen dat door het externe proces kan worden gebruikt.

Serverresourcegebruik wijzigen

  1. Voer in Management Studio de volgende instructie uit om het geheugengebruik van SQL Server te beperken tot 60% van de waarde in de instelling maximaal servergeheugen.

    ALTER RESOURCE POOL "default" WITH (max_memory_percent = 60);
    
  2. Voer de volgende instructie uit om het gebruik van geheugen door externe processen te beperken tot 40% van het totale aantal computerbronnen.

    ALTER EXTERNAL RESOURCE POOL "default" WITH (max_memory_percent = 40);
    
  3. Als u deze wijzigingen wilt afdwingen, moet u Resource Governor als volgt opnieuw configureren en opnieuw starten:

    ALTER RESOURCE GOVERNOR RECONFIGURE;
    

    Opmerking

    Dit zijn alleen voorgestelde instellingen om mee te beginnen; u moet uw machine learning-taken evalueren in het licht van andere serverprocessen om de juiste balans voor uw omgeving en workload te bepalen.

Een door de gebruiker gedefinieerde externe resourcegroep maken

  1. Alle wijzigingen in de configuratie van Resource Governor worden op de hele server afgedwongen. De wijzigingen zijn van invloed op workloads die gebruikmaken van de standaardpools voor de server, evenals workloads die gebruikmaken van de externe pools.

    U kunt een nieuwe door de gebruiker gedefinieerde externe resourcegroep maken om een nauwkeurigere controle te bieden over welke workloads prioriteit moeten hebben. Definieer een classificatiefunctie en wijs deze toe aan de externe resourcegroep. Het sleutelwoord EXTERNAL is nieuw.

    Maak een nieuwe door de gebruiker gedefinieerde externe resourcegroep. In het volgende voorbeeld heeft de pool de naam ds_ep.

    CREATE EXTERNAL RESOURCE POOL ds_ep WITH (max_memory_percent = 40);
    
  2. Maak een workloadgroep met de naam ds_wg die moet worden gebruikt bij het beheren van sessieaanvragen. Voor SQL-query's gebruikt u de standaardpool; voor alle externe procesquery's wordt de ds_ep pool gebruikt.

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

    Aanvragen worden toegewezen aan de standaardgroep wanneer de aanvraag niet kan worden geclassificeerd of als er een andere classificatiefout is.

Zie Resource Governor Workload Group en CREATE WORKLOAD GROUP (Transact-SQL) voor meer informatie.

Een classificatiefunctie maken voor machine learning

Een classificatiefunctie onderzoekt binnenkomende taken. Hiermee wordt bepaald of de taak een taak is die kan worden uitgevoerd met behulp van de huidige resourcegroep. Taken die niet voldoen aan de criteria van de classificatiefunctie, worden weer toegewezen aan de standaardresourcegroep van de server.

  1. Geef eerst op dat een classificatiefunctie door Resource Governor moet worden gebruikt om resourcegroepen te bepalen. U kunt een null toewijzen als tijdelijke aanduiding voor de classificatiefunctie.

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

    Zie (Transact-SQL) voor meer informatieALTER RESOURCE GOVERNOR.

  2. Definieer in de classificatiefunctie voor elke resourcepool het type statements of inkomende aanvragen dat aan de resourcepool moet worden toegewezen.

    De volgende functie retourneert bijvoorbeeld de naam van het schema dat is toegewezen aan de gebruikersgedefinieerde externe resourcepool als de toepassing die de aanvraag heeft verzonden een van de volgende toepassingen is: 'Microsoft R Host', 'RStudio' of 'Mashup'; anders retourneert deze de standaardresourcepool.

    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. Wanneer de functie is gemaakt, configureert u de resourcegroep opnieuw om de nieuwe classificatiefunctie toe te wijzen aan de externe resourcegroep die u eerder hebt gedefinieerd.

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

Nieuwe resourcegroepen en affiniteit verifiëren

Controleer de servergeheugenconfiguratie en CPU voor elk van de workloadgroepen. Controleer of de resourcewijzigingen van de instantie zijn doorgevoerd door het volgende na te gaan:

  • de standaardgroep voor de SQL Server-server
  • de standaardresourcegroep voor externe processen
  • de door de gebruiker gedefinieerde pool voor externe processen
  1. Voer de volgende instructie uit om alle workloadgroepen weer te geven:

    SELECT * FROM sys.resource_governor_workload_groups;
    

    Voorbeeldresultaten

    group_id naam belang 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 intern Gemiddeld 25 0 0 0 0 1 2
    2 default Gemiddeld 25 0 0 0 0 2 2
    256 ds_wg Gemiddeld 25 0 0 0 0 2 256
  2. Gebruik de nieuwe catalogusweergave , sys.resource_governor_external_resource_pools (Transact-SQL), om alle externe resourcegroepen weer te geven.

    SELECT * FROM sys.resource_governor_external_resource_pools;
    

    Voorbeeldresultaten

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

    Zie Resource Governor Catalogusweergaven (Transact-SQL)voor meer informatie.

  3. Voer de volgende instructie uit om informatie op te halen over de computerresources die, indien van toepassing, zijn gekoppeld aan de externe resourcepool:

    SELECT * FROM sys.resource_governor_external_resource_pool_affinity;
    

    Er wordt geen informatie weergegeven omdat de pools zijn aangemaakt met de affiniteit AUTO. Zie sys.dm_resource_governor_resource_pool_affinity (Transact-SQL) voor meer informatie.

Volgende stappen 

Zie voor meer informatie over het beheren van serverresources:

Zie voor een overzicht van resourcebeheer voor machine learning: