IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

[2008] Gouverneur de Ressource


Sujet :

Administration SQL Server

  1. #1
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut [2008] Gouverneur de Ressource
    Bonjour,

    Suite à la lecture du tutoriel de Mike Davem, je tente en vain de faire fonctionner le gouverneur de ressource sur mon serveur de développement.

    J'ai créé mes deux pool et mes deux work group correspondant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    CREATE RESOURCE POOL [pReplication] WITH(min_cpu_percent=30, 
    		max_cpu_percent=80, 
    		min_memory_percent=0, 
    		max_memory_percent=100)
     
    CREATE RESOURCE POOL [pReporting] WITH(min_cpu_percent=50, 
    		max_cpu_percent=50, 
    		min_memory_percent=0, 
    		max_memory_percent=100)
     
    CREATE WORKLOAD GROUP [gRepl] WITH(group_max_requests=0, 
    		importance=Medium, 
    		request_max_cpu_time_sec=0, 
    		request_max_memory_grant_percent=25, 
    		request_memory_grant_timeout_sec=0, 
    		max_dop=0) USING [pReplication]
     
    CREATE WORKLOAD GROUP [gRep] WITH(group_max_requests=0, 
    		importance=Medium, 
    		request_max_cpu_time_sec=0, 
    		request_max_memory_grant_percent=25, 
    		request_memory_grant_timeout_sec=0, 
    		max_dop=0) USING [pReporting]
    J'ai ensuite créé deux LOGIN test sur mon serveur, soit rg_reporting et rg_replication.

    Puis ma fonction de classification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    CREATE FUNCTION [dbo].[classified_function]()
    RETURNS SYSNAME
    WITH SCHEMABINDING
    AS
    BEGIN
    RETURN
    (
    SELECT CASE SUSER_NAME()
    WHEN 'RG_Replication' THEN 'gRepl'
    WHEN 'RG_Reporting' THEN 'gRep'
    ELSE 'default'
    END
    )
    END;
    J'ai activité mon gouverneur de ressource :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select * From sys.resource_governor_configuration
     
    classifier_function_id	is_enabled
    1143675122	1
    Cela pointe bien vers la bonne fonction...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select name, object_id, type_desc from sys.objects where object_id = 1143675122
    name	object_id	type_desc
    classified_function	1143675122	SQL_SCALAR_FUNCTION
    Je vais ensuite dans le Management Studio et j'ouvre de nouvelles connection avec chacun de mes login. Lorsque je vérifie que la fonction de classification retourne le bon groupe, cela semble fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select SUSER_NAME() as session_name, dbo.classified_function() as groupe_name
     
    session_name	groupe_name
    RG_Reporting	gRep
    Mais voilà, lorsque je démarre une requête afin de valider que tout est okay via le performance monitor, je me rend compte que ma fonction de classification renvoie tout tout tout dans le groupe défault....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    set nocount on
     
    declare @i int = 0;
    declare @result varchar(1000);
     
    while @i < 10000000
    begin
    select @result = @@VERSION + CAST(rand() as varchar(500))
    select @result = @@VERSION + CAST(rand() as varchar(500))
    select @result = @@VERSION + CAST(rand() as varchar(500))
    set @i = @i + 1;
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    select * from sys.dm_os_performance_counters where counter_name = 'cpu usage %'
     
    object_name	counter_name	instance_name	cntr_value	cntr_type
    SQLServer:Workload Group Stats	CPU usage %	gRep	0	537003264
    SQLServer:Workload Group Stats	CPU usage %	gRepl	0	537003264
    SQLServer:Workload Group Stats	CPU usage %	default	1007	537003264
    SQLServer:Workload Group Stats	CPU usage %	internal	24	537003264
    SQLServer:Resource Pool Stats	CPU usage %	pReplication	0	537003264
    SQLServer:Resource Pool Stats	CPU usage %	pReporting	0	537003264
    SQLServer:Resource Pool Stats	CPU usage %	default	1007	537003264
    SQLServer:Resource Pool Stats	CPU usage %	internal	24	537003264
    Je ne comprend pas du tout pourquoi ma fonction de classification ne fonctionne pas. Lorsque je l'appelle manuellement elle me retourne pourtant le bon groupe.

    Vous avez des pistes de solutions pour moi ?

    Merci !

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Question bête mais est ce que le gouverneur de ressources est actif après vos manipulations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT is_enabled -- doit retourner 1
    FROM sys.resource_governor_configuration
    Pour activer et configurer le gouverneur de ressources après votre paramétrage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    GO
    ++

  3. #3
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Oui oui, je l'avais précisé dans mon post initial. Le gouverneur est bel et bien actif...

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    ll me semble qu'il faut le relancer après reconfiguration.

    A +

  5. #5
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Merci pour vos réponses,

    Après chacune de mes modifications, je lance toujours la commande de reconfiguration.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER RESOURCE GOVERNOR RECONFIGURE
    C'est vraiment étrange j'ai vraiment tout fait ce qu'il se doit et niet nada

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Je ne suis basé sur votre post pour configurer un gouverneur de ressources sur mon instance SQL Server. Le script de configuration suivant permet de bien allouer les ressources dans les bons pool chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    CREATE RESOURCE POOL [pReplication] WITH(min_cpu_percent=30, 
    		max_cpu_percent=80, 
    		min_memory_percent=0, 
    		max_memory_percent=100)
     
    CREATE RESOURCE POOL [pReporting] WITH(min_cpu_percent=50, 
    		max_cpu_percent=50, 
    		min_memory_percent=0, 
    		max_memory_percent=100)
     
    CREATE WORKLOAD GROUP [gRepl] WITH(group_max_requests=0, 
    		importance=Medium, 
    		request_max_cpu_time_sec=0, 
    		request_max_memory_grant_percent=25, 
    		request_memory_grant_timeout_sec=0, 
    		max_dop=0) USING [pReplication]
     
    CREATE WORKLOAD GROUP [gRep] WITH(group_max_requests=0, 
    		importance=Medium, 
    		request_max_cpu_time_sec=0, 
    		request_max_memory_grant_percent=25, 
    		request_memory_grant_timeout_sec=0, 
    		max_dop=0) USING [pReporting];
    GO
     
    use master;
    go
     
    CREATE FUNCTION [dbo].[classified_function]()
    RETURNS SYSNAME
    WITH SCHEMABINDING
    AS
    BEGIN
    RETURN
    (
    SELECT CASE SUSER_NAME()
    WHEN 'RG_Replication' THEN 'gRepl'
    WHEN 'RG_Reporting' THEN 'gRep'
    ELSE 'default'
    END
    )
    END;
    GO
     
    ALTER RESOURCE GOVERNOR 
    WITH
    (
     CLASSIFIER_FUNCTION = dbo.classified_function
    );
     
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    GO
     
    SELECT * FROM sys.resource_governor_configuration
    GO
     
    CREATE LOGIN RG_Replication
    WITH PASSWORD = 'test', CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF;
     
    CREATE LOGIN RG_Reporting
    WITH PASSWORD = 'test', CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF;
    ++

  7. #7
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Bon, j'ai finalement réussi à le faire fonctionner.

    C'était "rien" en plus

    Le problème provenait de mes tests. Je m'étais créée deux login sql pour fin de test et j'avais fait deux connections contenant une longue boucle. Ainsi je me disais que via le performance monitor je pourrais voir interagir les pools entres eux.

    Le problème c'est que j'ai du modifier ma fonction de classification 5-6 fois... Mais je ne reconnectais jamais mes usagers test !

    C'était donc clair que la classification ne fonctionnait pas, puisque le gouverneur de ressource classe les usagers au moment de la connection...

    Alors voilà. J'avais envie de me cacher lorsque je m'en suis rendue compte je vous dit pas. M'enfin. Ce qui est fait est fait.

    La bonne nouvelle, c'est que cela fonctionne !! Je suis donc maintenant rendue à l'étape du tuning...

    Merci pour votre aide !

    Baq'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gouverneur de ressource, classification avec AD?
    Par Baquardie dans le forum Administration
    Réponses: 1
    Dernier message: 04/04/2012, 17h54
  2. Gouverneur de ressources requêtes de lots/sec
    Par lm34000 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/02/2012, 12h43
  3. Gouverneur de ressources
    Par Hotfirenet dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/02/2012, 19h40
  4. Problème avec le gouverneur de ressource
    Par Philippe Robert dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/01/2012, 17h04
  5. Editeur de ressources VS 2008
    Par _Michel dans le forum Visual C++
    Réponses: 3
    Dernier message: 10/03/2008, 13h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo