Throughout many of my blog posts I talk about how I feel
putting in the time to fully study certification material really pays off by
filling out the breadth of your knowledge of the SQL Server products. I came across a situation recently that really
demonstrated this and I would like to share it with you.
It is easy as IT professionals to jump to conclusions about
the functionality of areas of the product when in fact it may not be as intuitive
as you may think.
Recently, we came across a situation where our test
environment was really struggling to perform.
We thought maybe it was because of the concurrent workloads we were
asking it to handle but that didn’t really make sense since in the past it
handled many different volumes with no problem.
After some investigation, it was discovered that an erroneously configured Resource Governor set up was the culprit. Resource Governor is a simple enough concept
but there a few different components that must be setup properly. It needs a resource pool, a workload group
and a workload classifier function to all be set up correctly or the outcome
can be very serious if you are unnecessarily throttling CPU or
RAM or both.
Let me explain what happened. An ETL developer suggested a Resource Governor
set up so that when they run a job that rebuilds indexes they won’t hog the
resources from the other ETL developers. That was a kind innocent enough gesture.
So the first thing the sysadmin did was to enable Resource Governor which makes sense.
Then they thought that if they set the Maximum CPU to 50% on
the default resource pool for a limited amount of time, the developer could
rebuild the indexes without hogging all the resources.
I believe the thinking was it was not possible to build a classifier function for some reason for this purpose so if they set the default to 50% for a limited time and then when they were done to return the system to normal.
When the developer was finished the rebuilding the sysadmin
went in and clicked on the ‘Enable Resource Governor’ check box to disable it thereby returning the system
to how they found it.
So to summarize, the thought was if they enabled Resource
Governor and lowered the default CPU to 50% and then later disabled the
Resource Governor it would return the CPU to 100%.
What they discovered, weeks later full of frustration at the
decreased performance of the test
server, was that disabling Resource Governor without setting the default CPU
back to 100% would effectively limit all users of resources in the system to
only 50%. Simply disabling Resource
Governor may not do what you think it does.
It isn’t quite that simple.
My point is that if they read more material about how
Resource Governor really works and the importance of correctly using all the
components together including a classifier function and also what the ‘default’
resource pool really is, then perhaps weeks of frustration could have been
avoided.
Of course, I have the benefit of hindsight...:)
Thanks for reading,
SQL Canuck
No comments:
Post a Comment