SQL Server/SQL Server Tip

VM 환경의 SQL Server에서 할당된 CPU를 모두 사용하지 못하는 현상

SungWookKang 2020. 3. 4. 00:39
반응형

VM 환경의 SQL Server에서 할당된 CPU를 모두 사용하지 못하는 현상

 

·       Version : SQL Server

 

Virtual Machine (VM)의 성능이 향상됨에 따라 많은 시스템들이 Physical 서버에서 VM 머신으로 마이그레이션을 진행하고 있다. 이번 포스트는 Physical머신에서 VM으로 마이그레이션 후 SQL Server에서 할당된 CPU를 모두 사용하지 못하는 성능 문제에 대해서 다룬다.

 

Host Server

OS

Windows Server 2019 Standard

CPU

2 socket (64 Core)

RAM

128GB

 

VM Server

OS

Windows Server 2019 Standard

SQL Server

SQL Server 2016 Standard

CPU

8 Core

RAM

32GB

 

아래 그림을 보면 가상머신에 할당된 CPU 8 Core 에서 4 Core만 사용하는것을 확인할 수 있다.

 

아래 쿼리를 사용하여 실제 SQL Server가 사용중인 CPU를 확인할 수 있다. 역시 할당된 8개의 코어중에 4개만 사용하고 있음이 표시되었다.

SELECT scheduler_id, cpu_id, status, is_online FROM sys.dm_os_schedulers

 

 

원인을 확인결과 VM 머신의 세팅에 문제가 있다는 것을 확인하였다. 필자가 구성한 VM환경을 보면, 8 소켓에 8Core로 설정되어 있는것을 확인할 수 있다. 이 뜻은 1소켓 1 코어가 8개 할당되었다는 의미이다. SQL 공식 다큐먼트를 보면 Standard의 경우 4소켓 또는 24코어까지만 지원된다고 되어 있다. 즉 소켓의 개수가 8개로 세팅되어, 실제 4 소켓만 동작을 하기 때문에 4Core만 동작을 하게 된것이다.

VM 환경을 변경하여, 1소켓 8 Core로 설정을 변경한 후 정상적으로 모든 CPU를 사용하는 것을 확인하였다.

 

VM의 환경을 변경하는것은 시스템 운영에 문제가 발생할 수 있으므로 반드시 시스템 담당자와 상의해서 진행할 수 있도록 한다.

 

아래 스크립트는 현재 구성된 VM의 환경에서 SQL Server가 할당된 CPU를 모두 사용가능한지 쉽게 확인한다.

----------------------------------------------------------------------------------------------------------------

-- CPU VISIABLE ONLINE CHECK

----------------------------------------------------------------------------------------------------------------

DECLARE @OnlineCpuCount int

DECLARE @LogicalCpuCount int

 

SELECT @OnlineCpuCount = COUNT(*) FROM sys.dm_os_schedulers WHERE status = 'VISIBLE ONLINE'

SELECT @LogicalCpuCount = cpu_count FROM sys.dm_os_sys_info

 

SELECT @LogicalCpuCount AS 'ASSIGNED ONLINE CPU #', @OnlineCpuCount AS 'VISIBLE ONLINE CPU #',

   CASE

     WHEN @OnlineCpuCount < @LogicalCpuCount

     THEN 'You are not using all CPU assigned to O/S! If it is VM, review your VM configuration to make sure you are not maxout Socket'

     ELSE 'You are using all CPUs assigned to O/S. GOOD!'

   END as 'CPU Usage Desc'

----------------------------------------------------------------------------------------------------------------

GO

 

 

 

2020-03-03/ Sungwook Kang / http://sungwookkang.com

 

 

 

SQL Server, MS SQL, VM, Virtual Machine, CPU 할당, 가상머신 SQL, SQL on VM, dm_os_schedulers, dm_os_sys_info

반응형