Consider the following scenario:
- You install Microsoft SQL Server 2012 on a server.
- The CPU on the server has many cores. For example, the CPU has 64 or 128 cores, and it includes a non-uniform memory access (NUMA) configuration.
- The server has lots of memory. For example, the server has 256 gigabytes (GB) or 1 terabyte (TB) of memory.
- The Resource Monitor thread keeps spinning, and there is no load on the server.
In this scenario, a CPU spike occurs.Note
This issue occurs only when the "max server memory" option is set to a low value.
This issue occurs because SQL Server Memory Manager requires lots of memory to set up the infrastructure for dynamic memory management.
SQL Server Memory Manager has been redesigned, and it now provides page allocations for the other components. More specifically, the "max server memory" option controls the volume of memory that SQL Server Memory Manager allocates to other components. In SQL Server 2005 and later versions of SQL Server, the target memory calculation occurs during the SQL Server startup operation. Each NUMA node receives an equal amount of memory.
The startup memory for the SOSMemoryManager clerk on a 1-TB 8-node box is about 1 GB when the server is not using locked pages. When the server is using locked pages, the clerk requires additional memory to maintain pointers for the operating system pages. In this situation, all the memory is allocated from Memory Node 0 in SQL Server Memory Manager.
For example, the memory requirements of a 1 TB physical memory box are as follows:
- Node 0 requires about 4 GB of memory when Lock Pages In Memory (LPIM) is enabled.
- Node 0 requires about 1 GB of memory when LPIM is not enabled.
Therefore, Node 0 requires more than 4 GB of memory when LPIM is enabled (or 1 GB when LPIM is not enabled) during the SQL Server startup operation. However, a box that has four NUMA nodes requires 16 GB of memory (4 NUMA nodes * 4 GB per node) during the startup operation. Additionally, a box that has eight NUMA nodes requires 32 GB of memory during the startup operation.
To determine whether you are experiencing this issue, run the following Dynamic Management View (DMV):
SELECT * FROM sys.dm_exec_requests WHERE COMMAND = 'RESOURCE MONITOR'
If one of the resource monitors is constantly accumulating CPU while the other resource monitors are idle, you are experiencing this issue. In this situation, the idle resource monitors are not loaded.
Cumulative update information
Cumulative Update 3 for SQL Server 2012 SP1
The fix for this issue was first released in Cumulative Update 3. For more information about how to obtain this cumulative update package for SQL Server 2012 SP1, click the following article number to view the article in the Microsoft Knowledge Base:
Cumulative update package 3 for SQL Server 2012 Service Pack 1
Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2012 SP1 fix release. We recommend that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
The SQL Server 2012 builds that were released after SQL Server 2012 Service Pack 1 was released
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
To work around this issue, follow these steps:
- Enable Trace Flag 8015 to disable auto-detection and NUMA setup.
- Set the "max server memory" option to a large value.
For more information about the Incremental Servicing Model for SQL Server, click the following article number to view the article in the Microsoft Knowledge Base:
An Incremental Servicing Model is available from the SQL Server team to deliver hotfixes for reported problems
For more information about the naming schema for SQL Server updates, click the following article number to view the article in the Microsoft Knowledge Base:
Naming schema for Microsoft SQL Server software update packages
For more information about software update terminology, click the following article number to view the article in the Microsoft Knowledge Base:
Description of the standard terminology that is used to describe Microsoft software updates