SQL Server/SQL Server Tip

SQL Server 2016 향상된 업데이트 스케줄링 알고리즘

SungWookKang 2016. 9. 29. 03:37
반응형

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 데이터베이스에 배포되었다.

 

[참고자료]

https://blogs.msdn.microsoft.com/psssql/2016/04/01/sql-2016-it-just-runs-faster-updated-scheduling-algorithms/

 

2016-09-28 / 강성욱 / http://sqlmvp.kr

 

 

SQL Server, MS SQL, SQL 2016, update scheduling algorithms, CPU scheduling, quantum process, 퀀텀 프로세스, 업데이트 알고리즘,

반응형