I’m already metioned about SQL Server Buffer pool memory paging (http://maystyle.tistory.com/403).
But today i got a e-mail about this situation.
It would be occur that your sql server runnig account is not a local system.
Local System already has a Lock pages in memory privileage.
[Cause]
OS(Windows) has a first privilege of using physical memory.
So SQL Server’s memory also would be paging when ths OS request more memorys.
It would be happend this situation.
[SYMPTOMS]
Resource Monitor (0x165c) Worker 0x000000008000C1C0 appears to be non-yielding on Node 0. Memory freed: 40 KB. Approx CPU Used: kernel 0 ms, user 0 ms, Interval: 60026
spid1s A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 1086400, committed (KB): 2160928, memory utilization: 50%.
[Work Around]
I suppose that concerned about buffer pool paging.
So i suggest the this work around.
Most of all SQL Server’s memory limitation would be “all physical memorys – 3G”
This 3G is for OS.
(I think almost normal Windows Server doesn’t using 3G memory… I think it is enough memory for OS.)
EX) Your Windows has 8G physical memory.
SQL Server memory limitation = 5G ( 8G – 3G )
And then configure this Work Around.
- Click Start, click Run, type gpedit.msc, and then click OK. The Group Policy dialog box appears.
- Expand Computer Configuration, and then expand Windows Settings.
- Expand Security Settings, and then expand Local Policies.
- Click User Rights Assignment, and then double-click Lock pages in memory.
- In the Local Security Policy Setting dialog box, click Add User or Group.
- In the Select Users or Groups dialog box, add the account that has permission to run the Sqlservr.exe file, and then click OK.
- Close the Group Policy dialog box.
- Restart the SQL Server service.
[Source]
http://support.microsoft.com/kb/918483
- 한국어 버전…
x64버전의 SQL Server에서 발생하는 Workingset Paging으로 인해 발생하는 현상으로 추정 됩니다.
이미 메모리는 SQL Server가 선점하고 있는 상태에서 Windows 가 메모리를 요구하면 당연히 SQL Server의 메모리는 페이징이 될 수 밖에 없습니다.
일반적으로 로컬 시스템 계정은 Locks pages in memory 권한을 가지고 있습니다.
[Work Around]
해당 설정하기에 앞서 SQL Server 메모리의 최대값을 설정해 주는 것이 좋습니다.
일반적으로 총 메모리 – 3G 수준으로 설정하는 것이 경험 상 좋은 거 같습니다.
Locks pages in memory는 아래와 같이 설정합니다.
1. 시작 > 실행 > gpedit.msc를 실행합니다.
2. Computer Configuration 에서 Windows Settings을 확장합니다.
3. Security Settings 및 하위의 Local Policies를 확장합니다.
4. User Rights Assignment 를 클릭하고 Lock pages in memory를 더블 클릭합니다.
5. Local Security Policy 대화상자에서 Add user or Group를 클릭합니다.
6. Select Users or Groups 대화상자에서 SQL Server의 서비스 계정을 추가합니다.