MS-SQL Server

SQL Server x64에서의 paged out현상에 대해서

송혁 - HyokSong 2008. 10. 7. 17:08

요즘 출시되는 인텔의 제온, AMD의 옵테론 프로세스는 64bit(x64)를 기본적으로 지원되고 있고 있으며SQL Server 2005부터는 x64 를 지원하고 있습니다.(IA64 SQL Server 2000도 지원함)

 

기존 x86 AWE메모리의 한계와 IA64 도입에 대한 높은 도입 비용으로 인해 x64 환경이 점차 늘어나고 있는 상황입니다.

32bit에서 4GB이상의 메모리를 사용하기 위해서는 AWE 옵션을 Enable해서 64GB까지 사용할 수 있지만,


AWE
로 확장된 메모리 영역은 데이터&인덱스 페이지로만 구성되기에 다른 영역의 메모리는 기존처럼 2GB(/3GB 추가시 3GB) 공간만을 사용할 수 밖에 없습니다.

AWE에서 확장된 메모리를 map, unmap을 하기 위한 Window도 이 2GB에 포함되기에 잠금, 플랜 캐쉬, 연결, 쓰레드 스택에 대해 메모리 부족현상이 발생할 수 있습니다.


이러한 x86의 한계를 근본적으로 해결해 줄 수 있는 것이 64bit 시스템입니다.

또한 x64의 경우는 IA64보다 현저히 저렴하게 구성할 수 있기에 적은 투자비용으로 위와 같은 문제를 해결 할 수 있습니다.

 

기존의 여러 개의 SQL Server 2000으로 구성된 DB를 메모리 제한이 없는 SQL server 2005 x64 standard edition으로 Scale-up을 계획하시거나 사용 중이시라면 주의하게 살펴봐야 할 것 중에 하나는 바로 “Lock pages in memory” 정책의 활성화 여부입니다.

 

Standard edition(x64) 은 “Lock pages in memory” 정책을 지원하지 않습니다.(x86 Standard는 “Lock pages in memory” 정책 지원함)

 

이 정책이 뭐길래~ edition에 따라 지원 여부가 달라질까요?

BOL에서는 Lock pages in memory 정책을 아래와 같이 설명 하고 있습니다.

정책은 데이터를 실제 메모리에 유지하는 프로세스를 사용하여 시스템이 디스크의 가상 메모리로 데이터를 페이징하지 않도록 방지할 있는 계정을 결정합니다. SQL Server에서는 Lock Pages in Memory 옵션이 기본적으로 OFF 설정됩니다. 시스템 관리자 권한이 있으면 Windows 그룹 정책 도구(gpedit.msc) 사용하여 수동으로 옵션을 설정하고 SQL Server 실행 중인 계정에 사용 권한을 할당할 있습니다.

Lock Pages in Memory 옵션 설정하는 방법은 방법: Lock Pages in Memory 옵션 설정(Windows) 참조하십시오.

반드시 필요한 것은 아니지만 64비트 운영 체제를 사용하는 경우 메모리의 페이지를 잠그는 것이 좋습니다. 32비트 운영 체제의 경우 SQL Server 맞게 AWE 구성하기 전에 Lock pages in memory 권한을 얻어야 합니다.

 

x64환경에서 제공하는 거의 무한대의 VAS영역으로 인해서 프로세스의 Working Set paged out될 가능성이 x86환경보다 높습니다.

그리고 이러한 paged out SQL Server서비스가 올라가 있는 장비에서 발생한다면 SQL Server는 아래와 같은 메시지와 함께 성능적인 문제가 발생할 것입니다.

 

Enterprise edition이라면 이 정책을 사용하여 문제를 해결 할 수 있지만, Standard edition에서는 이러한 문제가 발생할 경우 이 정책을 사용할 수 없게 되어서 문제가 될 수 있습니다.

이러한 문제가 발생 할 가능성이 있다면 도입 전 테스트 등의 확인 작업이 필요할 것으로 보입니다.

 

2008-08-08 13:53:56.240 spid1s       A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 337 seconds. Working set (KB): 2393904, committed (KB): 6292600, memory utilization: 38%.

2008-08-08 13:58:23.660 spid1s       A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 604 seconds. Working set (KB): 2844740, committed (KB): 6292344, memory utilization: 45%.


송 혁, SQL Server MVP
sqler.pe.kr // sqlleader.com
hyoksong.tistory.com // nexondbteam.tistory.com