SQL Server - Resource governor



Enable Resource Governor

ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

Disable Resource Governor

ALTER RESOURCE GOVERNOR DISABLE;
GO

Reload the configuration of resource governor after any change

-- Reload configuration after any parameter change about workloads, resource pools ...
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

Initialise statistics of resource governor's use

ALTER RESOURCE GOVERNOR RESET STATISTICS;
GO

Visualisation of resource governor's state

SELECT * 
FROM sys.resource_governor_configuration;
GO

Visualisation of resource governor's configuration (workloads and resource pools)

SELECT 
	p.name AS pool_name,
	p.min_cpu_percent AS pool_min_cpu_percent,
	p.max_cpu_percent AS pool_max_cpu_percent,
	g.name AS group_name,
	g.importance AS group_importance
FROM sys.resource_governor_resource_pools AS p
INNER JOIN sys.resource_governor_workload_groups AS g
ON p.pool_id = g.pool_id;
GO

Knowing the distribution of requests in the workload groups

SELECT 
	p.name AS pool_name,
	g.name AS group_name,
	r.session_id,
	t.text AS sql_txt
FROM sys.resource_governor_resource_pools AS p
INNER JOIN sys.resource_governor_workload_groups AS g
ON p.pool_id = g.pool_id
INNER JOIN sys.dm_exec_requests AS r
ON r.group_id = g.group_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE p.name <> 'internal'
ORDER BY p.name, g.name;
GO

Knowing the distribution of the user and requests for each resource pool and workload group

SELECT 
	w.group_id,
	w.name AS groupe_name,
	active_request_count,
	COALESCE(s.nb_users, 0) AS nb_users
FROM sys.dm_resource_governor_workload_groups AS w
LEFT JOIN 
(
	SELECT	
		group_id,
		COUNT(*) AS nb_users
	FROM sys.dm_exec_sessions
	GROUP BY group_id
) AS s
ON w.group_id = s.group_id;
GO

What's the use of resource pools

WITH total_resources
AS
(
	SELECT 
		SUM(total_cpu_usage_ms) AS total_cpu_usage_ms,
		SUM(cache_memory_kb) AS total_cache_memory_kb,
		SUM(compile_memory_kb) AS total_compile_memory_kb,
		SUM(used_memory_kb) AS total_used_memory_kb
	FROM sys.dm_resource_governor_resource_pools
)
SELECT
	p.name AS pool_name, 
	p.total_cpu_usage_ms * 100.0 / t.total_cpu_usage_ms AS total_cpu_usage,
	p.cache_memory_kb * 100.0 / t.total_cache_memory_kb AS cache_memory,
	p.compile_memory_kb * 100.0 / t.total_compile_memory_kb AS compile_memory,
	p.used_memory_kb * 100.0 / t.total_used_memory_kb AS used_memory
FROM sys.dm_resource_governor_resource_pools AS p
CROSS JOIN total_resources AS t;
GO

Share |

 Cant find the page you are looking for?
 Help us to improve by adding the content that you are looking for.
 Leave a feedback
 We look forward to hear your comments and feedback.