CPU에 스레드 할당 및 lightweight pooling 옵션 사용
- Version : SQL Server 2005, 2008, 2008R2
기본적으로 SQL Server 인스턴스마다 각 스레드를 시작한다. Affinity를 사용하는 경우에는 운영체제에서 각 스레드를 특정 CPU에 할당 한다. 운영체제에서는 여러 SQL Server 인스턴스의 스레드를 부하에 따라 컴퓨터의 CPU에 균일하게 분산한다.
사용량이 많은 CPU에서 다른 CPU로 스레드를 이동하는 경우도 있다. 반대로 SQL Server 데이터베이스 엔진은 스레드를 CPU에 균일하게 분산하는 스케줄러 작업자 스레드를 할당 한다.
Affinity mask 옵션은 ALTER SERVER CONFIGURATION을 사용하여 설정 한다. Affinity mask를 설정하지 않으면 SQL Server 인스턴스가 제외되지 않은 스케줄러에 균등하게 스케줄러를 할당 한다.
- ALTER SERVER CONFIGURATION :
http://msdn.microsoft.com/ko-kr/library/ee210585(v=sql.105).aspx
[Affinity Mask 옵션 0]
디폴트 상태의 Affinity Mask 옵션 상태로 모든 CPU에 스레드를 할당 한다.
서버 속성에서 프로세서 탭에서 [모든 프로세서에 대해 자동으로 프로세서 선호도 마스크 설정]이 선택되어 있다.
서버에 CPU 사용률을 확인해 보면 모든 CPU에 스레드가 할당되어 사용되는 것을 확인 할 수 있다.
[Affinity Mask 옵션 1]
CPU 0번에 스레드가 할당 되도록 설정 하였다.
Sp_configure 에서도 configure_value의 값이 1로 변경된 것을 확인 할 수 있다.
0번 프로세서만 스레드가 할당되어 CPU를 사용하는 것을 확인 할 수 있다.
[Affinity Mask 옵션 2]
CPU 1번에 스레드가 할당되도록 설정을 변경 하였다.
Sp_configure 에서도 configure_value의 값이 2로 변경된 것을 확인 할 수 있다.
1번 프로세서만 스레드가 할당되어 CPU를 사용하는 것을 확인 할 수 있다.
Lightweight pooling(경량 풀링) 옵션을 사용하여 대칭적 다중 프로세싱(SMP)환경에서 가끔 나타나는 과도한 컨텍스트 스위치의 오버헤드를 줄일 수 있다. 과도한 컨텍스트 스위치가 일어나면 lightweight pooling이 컨텍스트 전환을 인라인으로 수행하여 사용자/커널 링 전환을 줄임으로써 처리량을 향상 시킬 수 있다.
파이버 모드는 UMS작업자의 컨텍스트 전환으로 인해 심각한 성능 병목 상태가 발생하는 특정한 상황을 위한 것이다. 이런 경우는 드물기 때문에 파이버 모드가 일반 시스템의 성능이나 확장성을 향상시키는 경우가 거의 없다.
일상 작업을 예약하는 데에는 파이버 모드를 사용하지 않는 것이 좋다. 파이버 모드를 사용하면 컨텍스트 스위치를 활용하지 못해 성능이 저하될 수 있으며 TLS(스레드 로컬 저장소)또는 스레드 소유 개체(뮤텍스 등)를 사용하는 SQL Server의 일부 구성 요소가 파이버 모드에서 제대로 작동하지 않을 수 있다.
Lightweight pooling 의 기본값은 0이며 1로 변경할 경우 파이버 모드 일정으로 전환 된다. 경량풀링에서는 CLR 실행이 지원되지 않는다. "clr enabled"또는 "lightweight pooling" 옵션 중 하나를 해제 해야 한다. CLR에 의존하며 파이버 모드에서 제대로 작동하지 않는 기능에는 hierarchy 데이터 형식, 복제, 정책 기반 관리 등이 있다.
Lightweight pooling의 설정을 변경할 경우 서버를 재시작 하여 적용해야 한다.
[참고자료]
CPU에 스레드 할당 : http://msdn.microsoft.com/ko-kr/library/ms189059(v=sql.105).aspx
Lightweight pooling 옵션 : http://msdn.microsoft.com/ko-kr/library/ms178074(v=sql.105).aspx
2013-06-17 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
Hot Add CPU (0) | 2015.07.22 |
---|---|
스레드 및 파이버 실행 (0) | 2015.07.22 |
스레드 및 태스크 아키텍처 (0) | 2015.07.22 |
메모리 관리 아키텍처 – NUMA 버퍼 풀 증가 및 축소 (0) | 2015.07.22 |
메모리 관리 아키텍처 – NUMA 지원 방법 (0) | 2015.07.22 |