Share via

SQL CPU socket math issue

Nathan Heaivilin 0 Reputation points
2025-02-15T04:59:32.5766667+00:00

So, got a head scratcher here.

Quick Stats :

  1. SQL Server 2019 Enterprise Edition
  2. Ubuntu OS
  3. Proxmox LXC container
  4. CPU originally configured for 16 cores, now 8

The story:

Ran into massive slowness issues over the last couple of days with a client, after a server restart 2/12 due to a failed container backup locking drives.  When the system came back online, SQL Server was only using 1 of the 16 cores allocated.  Prior restart of server was 12/4 and no change in config between 12/4 and 2/12.  Everything was running fine until the restart. 

After much testing, and restarts with different CPU configs, we ended up reducing the core count to 8, which allowed all of the CPU's to be utilized.

Looking in the error logs, I found the following, and man, am I really really confused!  I don't have a masters in math or anything, but this sure doesn't add up. 

2025-02-13 13:47:14.590 Server       SQL Server detected 2 sockets with 3 cores per socket and 3 logical processors per socket, 8 total logical processors; using 8 logical processors based on SQL Server licensing. This is an informational message; no user action is required. 2025-02-12 10:00:23.330 Server       SQL Server detected 2 sockets with 3 cores per socket and 6 logical processors per socket, 16 total logical processors; using 16 logical processors based on SQL Server licensing. This is an informational message; no user action is required. 2024-12-04 01:08:46.050 Server       SQL Server detected 3 sockets with 5 cores per socket and 5 logical processors per socket, 16 total logical processors; using 16 logical processors based on SQL Server licensing. This is an informational message; no user action is required.

Running a query inside of SQL Server, I see the following:

Logical CPU Count,scheduler_count, Physical Core Count, Socket Count, cores_per_socket, numa_node_count 8,8,6,2,3,1

I'm really lost here folks and could use some guidance.

SQL Server | Other
0 comments No comments

1 answer

Sort by: Most helpful
  1. LiHongMSFT-4306 31,621 Reputation points
    2025-02-17T02:46:36.9266667+00:00

    Hi @Nathan Heaivilin

    To be clear, I am not that familiar with SQL Server on Ubuntu OS.

    As far as I know, SQL Server uses Windows APIs to determine the processors and package interactions.

    The calls to GetSystemInfo &  GetLogicalProcessorInformation retrieve the RelationProcessorCore and RelationProcessorPackage details. Using the returned information SQL Server assigns nodes and schedulers accordingly.  

    Best regards,

    Cosmog


    If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.