데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

Affinity I/O Mask

jevida(강성욱) 2016.10.11 03:33 Views : 1168

Affinity I/O Mask

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

Windows Server는 멀티태스킹을 수행하기 위해 경우에 따라 여러 프로세서 사이에 프로세스 스레드를 이동하기도 한다. 운영체제 측면에서는 효율적이지만 각 프로세서 캐시에 데이터가 반복적으로 다시 로드되어 시스템 로드가 많은 경우 이로 인해 SQL Server 성능이 저하될 수 있다.

프로세서를 특정 스레드에 할당하면 프로세서가 다시 로드 되지 않으므로 이러한 조건에서도 성능을 향상 시킬 수 있다. 스레드와 프로세서간의 이러한 연결을 프로세스 선호도라고 한다. SQL Server에서는 affinity mask(CPU affinity mask라고도 함) 및 affinity I/O mask의 2가지 옵션으로 선호도를 지원한다.

 

이번 포스트는 CSS SQL Server Engineer 에 게시된 내용으로 필자가 읽고 이해한 내용을 정리하였으며 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. 자세한 내용을 원문을 참고하길 바란다.

 

Affinity I/O Mask는 SQL Server를 최적화 한다. 이것을 32비트 시스템에서 높은 I/O를 필요로 하는 대용량 데이터베이스에 적용한다.

 

다음 예제는 32비트 환경은 제한적인 메모리에서 실행 중인 지연 기록기 프로세스가 대용량 데이터를 스캔하고 버퍼풀을 유지 한다. 이 뜻은 SQL Server는 오래된 버퍼를 플러시하고 새로운 버퍼를 제공하여 쿼리를 지원한다. 64비트 시스템에서는 있어 I/O가 동일한 시나리오에서 더 큰 메모리를 활용할 수 있다.

 

I/O는 SQL Server 프로세스의 완료 처리를 필요로 한다. SQL Server는 완료를 확인해야 할 때(바이트 전송, 운영체제 오류, 올바른 페이지 번호, 페이지 헤더, 체크섬 등) CPU 자원을 사용한다.

 

I/O Affinity는 완료 CPU 자원의 숨겨진 스케줄러를 오프로드 하도록 설계되었다. Affinity I/O가 활성화 되면 숨겨진 스케줄러는 I/O 작업을 수행하는 특수 지연 기록기 스레드를 생성된다.

 

다음 그림은 affinity mask 및 I/O affinity mask 동일한 스케줄러가(부적절한 구성) 동일한 CPU 리소스에 할당되어 경쟁 한다.

 

다음 그림은 affinity mask 및 I/O affinity 의 적절한 설정을 보여준다.

 

적절한 구성의 affinity mask는 SQL Server의 I/O 작업에서 CPU의 자원을 최대한 활용한다.

 

[참고자료]

http://technet.microsoft.com/ko-kr/library/ms189629.aspx

 

 


강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1893 SQL Server 트랜잭션 로그 읽기 jevida(강성욱) 2016.10.12 2101
1892 MaxBCPThreads에 따른 BCP 병렬출력 jevida(강성욱) 2016.10.11 1090
1891 확장이벤트와 dm_os_wait_stats 대기유형 매핑 jevida(강성욱) 2016.10.11 1891
1890 장기 트랜잭션 확인 및 경고 설정 jevida(강성욱) 2016.10.11 1423
1889 SQL 데이터 수집툴 DiagManager 사용법 jevida(강성욱) 2016.10.11 1322
1888 Windows Server 2012 R2 그룹 관리 서비스 계정 및 SQL 서버 jevida(강성욱) 2016.10.11 1833
1887 Kerbros 구성 관리자 툴 jevida(강성욱) 2016.10.11 1161
1886 SQL Server Geography 및 Geometory 데이터 형식 jevida(강성욱) 2016.10.11 2401
1885 SQL Server를 이용한 신용카드 보안 -조직이 PCI DSS 준수를 달성 하기 위한 요건 jevida(강성욱) 2016.10.11 1364
1884 TDE 암호화 사용하기 jevida(강성욱) 2016.10.11 3324
1883 SQL Server 암호화 하기 jevida(강성욱) 2016.10.11 2739
1882 의도하지 않은 분산트랜잭션 사용 jevida(강성욱) 2016.10.11 878
» Affinity I/O Mask jevida(강성욱) 2016.10.11 1168
1880 LPE_BATCH 스핀락 jevida(강성욱) 2016.10.11 882
1879 SQL Server 17953 오류 jevida(강성욱) 2016.10.11 985
1878 SQL 연결 18056 오류 jevida(강성욱) 2016.10.11 1362
1877 SQL 2008 R2 Sp1 적용과 9013 오류 - 포맷 섹터 크기에 따른 오류 jevida(강성욱) 2016.10.11 1816
1876 JDBC 로깅 파일 위치 설정 jevida(강성욱) 2016.10.11 958
1875 NUMA Node 메모리 블록 jevida(강성욱) 2016.10.11 1046
1874 AppDomain unloading 오류 로그 – CLR 오류 jevida(강성욱) 2016.10.11 1188





XE Login