SQL Server 2016 향상된 업데이트 스케줄링 알고리즘
- Version : SQL Server 2016, Azure SQL Server
SQL Server 2016에서는 업데이트 스케줄링에 대한 알고리즘이 향상되었다. 기존에는 큰 CPU 퀀텀 작업자(Large CPU Quantum)와 작은 작업자(Short CPU Quantum) 사이에서 스케줄링에 의해 자원 액세스에 대한 불균형이 발생할 수 있었다. 이 테스트는 SQL Server 2012 및 2014에서 백분위(percentile) 스케줄링 기반의 알고리즘에서 발견되었다.
다음 예제를 보면 작업자1(W1)은 읽기 및 인메모리 데이터베이스 페이지의 미리 읽기 등의 큰 작업을 하고 작업자2(W2)는 짧은 작업을 한다. 예를 들어 작업자1은 버퍼풀에서 이미 정보를 찾아 I/O 작업을 위해 양보할 필요가 없다. 작업자1은 전체 CPU Quantum을 소모할 수 있다. 한편 작업자2는 스케줄링을 배당받기 위한 작업을 수행한다. 리소스거버너 및 기타 활동에 대한 스케줄링 패턴을 그림으로 표현하면 다음과 같다.
작업자1은 작업자2보다 5배 더 많은 CPU 사이클을 받고 있다. 테스트에서는 다양한 워크로드 및 시스템 작업에서 문제를 발견했다. 작업자2가 로그쓰기(Log write)인 경우 차단 및 잠금을 보유하고 로그를 기록하는 이슈에 대해서 더 오래 걸리는 문제가 발생한다.
SQL Server 2016 및 Windows Azure SQL Database(WASD)는 모든 작업자가 공정한 스케줄링을 받을 수 있도록 Quantum 패턴을 모니터링 한다. SQL Server 2016에서는 스케줄링 패턴이 아래 그림과 같이 나타난다. 이 단순한 예제에서 작업자2는 비우호적인 작업자1의 독점적인 반복 quantum 작업을 방지할 수 있다.
참고 : 스케줄러 변경 사항은 2014년 3월 Windows Azure SQL Server 데이터베이스에 배포되었다.
[참고자료]
2016-09-28 / 강성욱 / http://sqlmvp.kr
SQL Server, MS SQL, SQL 2016, update scheduling algorithms, CPU scheduling, quantum process, 퀀텀 프로세스, 업데이트 알고리즘,
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server 2016 Multiple Log Writer Workers (0) | 2016.10.08 |
---|---|
SQL Server 2016 Larger Data File Writes (0) | 2016.10.06 |
SSMS에서 유효하지 않은 소유자로 데이터베이스 정보가 보이지 않는 증상 (0) | 2016.09.10 |
SQL Server 2016 Automatic Soft NUMA (0) | 2016.09.07 |
NUMA Architecture (0) | 2016.09.07 |