Dedicating the right number of cores to servers is important both for performance and licensing cost reasons. SQL Governor's Right-sizing feature is designed to automatically determine the correct number of cores for each server based on monitored data. Right-sizing projects are similar to server consolidation projects, except they optimize individual servers instead of combinations of virtual servers under hosts.
Creating a right-sizing project
- Choose Plan > Server right-sizing from the navigation menu.
- Select Create new project from the drop-down menu and give it a name.
- Drag each server you want to right-size into one of the three boxes, depending on how critical the servers are. The criticality level determines the CPU threshold values, which you can set in Settings > Metadata > Criticality. The three levels are:
- Critical servers
- Servers with medium criticality
- Servers with low criticality
- Select the planning scope from the drop-down. This selection determines how far into the future the forecast is calculated.
- Select start date and end date from the calendar controls. These values determine the time period from which monitoring data is used.
- By default, the growth factor for each server's CPU usage is set to zero. You can override this setting by right-clicking on a server and selecting a different value. The manual value is a yearly percentage increase, while "Auto" calculates a linear trendline from the data.
- Click the Save button to save the project and calculate the results.
Existing projects can be modified by selecting a project from the drop-down menu. To re-calculate the results, simply click the Save button again.
Interpreting the results
When the results have been calculated, they are listed under the Results pane.
For each server, a list of properties is shown, described in the table below. When a value is exceedingly high, it is shown in red.
| Header | Column | Description |
| Server | HT | Is hyperthreading on |
| VM | Is this a virtual machine | |
| Cores | Now | Number of cores at the moment |
| Optimal | Optimal number of cores according to forecast | |
| CPU avg % | Now | Average CPU usage at the moment |
| Forecast | Average CPU usage according to forecast | |
| Limit | Average CPU threshold (based on criticality) | |
| CPU peak % | Now | Peak CPU usage at the moment |
| Forecast | Peak CPU usage according to forecast | |
| Limit | Peak CPU threshold (based on criticality) | |
| Service level % | Avg | SLA of forecasted average CPU usage. |
| Peak | SLA of forecasted peak CPU usage. | |
| Avg processor queue | Now | Average processor queue length at the moment |
| Forecast | Average processor queue length according to forecast | |
| Contention % | Percentage of data points with CPU contention | |
| Queue / CPU peak | The queue length and CPU peak of the data point with the highest contention |
The optimal number of cores is the crucial result which is calculated based on the other values. If this number is lower than the current number of cores, it means there is unused capacity and you can therefore reduce your costs by reducing the number of cores on the server. If the number is higher, it means the server does not have enough cores to run efficiently.