How many logical CPUs does SQLSERVER recognize? Preface in the Forum a few days ago, someone encountered the problem of SQLSERVER identifying logical CPU. Post address: Environment LZ's current environment was like this: Operating System: WindowsServer2008R2 Enterprise Edition SP1 high-availability configuration: Cluster database: SQLSERVER2005 Enterprise Edition 64-bit SP4 server hardware configuration
How many logical CPUs does SQLSERVER recognize? Preface a few days ago, someone encountered a problem with SQLSERVER identifying logical CPU in the forum. Post address: Environment LZ's current environment was like this: Operating System: Windows Server 2008 R2 Enterprise Edition SP1 high-Availability Configuration: cluster Database: SQL Server 2005 Enterprise Edition 64-bit SP4 server hardware configuration
How many logical CPUs does SQLSERVER recognize?
Preface
Someone encountered an SQL Server logic CPU recognition problem in the Forum a few days ago.
Post address:
Environment
The environment of LZ was as follows:
Operating System: Windows Server 2008 R2 Enterprise SP1
High Availability Configuration: Cluster
Database: SQLSERVER 2005 Enterprise Edition 64-bit SP4
Server hardware configuration:
CPU: HP DL980 G7 4*10 core 2.00G clock speed super thread function
Memory: 256 GB
SQL Server
LZ described at the time that he had enabled hyper-threading.
The operating system can identify 80 logical CPUs (in the Task Manager)
If the operating system can identify 80 logical CPUs, it indicates:
Four 10-core, 2.00 processor, each core dual-thread (4*10*2 = 80), that is, 80 Logic processors (each thread represents a logical CPU)
Or
Four 10-core 2.00 processors, one thread per core, but with hyper-Threading Technology changed to a dual-thread per core (4*10*2 = 80 ),
That is, 80 Logic processors (each thread represents a logic CPU)
In SQL server 2005, only cpu0-cpu59 can be identified by one database property processor and, after a cluster switchover, the other TakeOver resource node can only recognize 20 logical processors, LZ says.
Only 60 logical CPUs can be identified
Forum description
In the post, the two heroes both gave their respective statements:
Statement 1:
If you have multiple SQLSERVER instances in the same cluster, you 'd better split these processors and use them for multiple instances. For any SQLSERVER instance
You cannot use "automatically set all processor associated Masks"
Rmiao means that you cannot select "automatically set the processor Association mask for all processors" to prevent a cluster instance from exhausting all logical CPU resources.
Statement 2:
According to MSDN, SQLSERVER2005 Enterprise Edition supports the maximum number of processors in the operating system.
In this case, Eric Yi provides the following link:
64-bit Windows 7 and Windows Server2008 R2 introduce the concept of Process Group to support more than 64 logical CPUs on one machine
It organizes some logical CPUs into one group, but the total number of logical CPUs in one group cannot exceed 64. Otherwise, it is incorporated into another group.
In addition, the logical CPU allocation is not necessarily average. The operating system automatically groups logical CPUs according to the physical distance.
For example, it may be 20 or 60 cores after restart.
The Process Group concept was introduced in Windows2008. When SQLSERVER2008 was developed, no corresponding changes were made,
Therefore, SQLSERVER2008 cannot support this function. Upgrade to SQLSERVER2008 R2 to solve this problem.
It can detect a maximum of 256 logical CPUs at the same time.
If you cannot upgrade to SQLSERVER2008 R2, you can manually intervene in the Process Group and set the first Process Group to 64-core,
To use as much CPU as possible, but the operating system must be 64-bit Windows2008R2 or 64-bit Windows7 or later.
For details about how to set Process Group, refer:
Translation
How to Set Process Group
Title: How to manually set a processor group on a multi-processor machine
Overview
The manual settings of the processor group are allocated starting from the 64-bit Windows Server 2008 R2 operating system and applied in
NUMA (non-Unified memory architecture) architecture system with more than 64 logical CPUs. Processor group settings allow
The administrator specifies a static NUMA node for the processor group, which is more dynamic
It is better to allocate NUMA nodes to the processor group.
Note: OEMs can configure the optimal processor group for the system before the OEM system leaves the factory.
More information
In the past, when a processor group was not manually set, Windows assigned the NUMA node to the Group in the form of the smallest group.
Windows uses its own experience to assess the minimum node distance from the previous start to allocate the internal node distance between each processor group.
The administrator system administrator can reset the automatic grouping and allocation using one of the following two methods:
First, use BCDEdit.
Second, use the modify registry
Note: Windows Server2008R2 uses the following reset priority:
Manually modifying the Registry priority is greater than resetting the BCDEdit setting. Then, the BCDEdit setting overwrites the automatic grouping allocation of the operating system.
That is to say, the priority is: manually modify the Registry> BCDEdit Settings> Automatic Grouping and allocation of operating systems
Use BCDEdit to configure group allocation
The administrator system administrator can use BCDEdit to overwrite the default group allocation. BCDEdit allows you to change the group size and maximum group size.
You can find this setting method in the "Modify operating system startup parameters to drive the test multi-processor grouping support" article in MSDN.
Article address: (VS.85). aspx
Related commands:
Bcdedit.exe/set groupsize maxsize bcdedit.exe/deletevalue groupsize bcdedit.exe/set groupaware off