Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  64Bit SQL Server 2005에서 Paging out 으로 인한 성능 저하가 발생할 때 
작성일시 : 2009. 3. 24. 10:17 | 분류 : SQL Server/Administration

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.

  1. Click Start, click Run, type gpedit.msc, and then click OK. The Group Policy dialog box appears.
  2. Expand Computer Configuration, and then expand Windows Settings.
  3. Expand Security Settings, and then expand Local Policies.
  4. Click User Rights Assignment, and then double-click Lock pages in memory.
  5. In the Local Security Policy Setting dialog box, click Add User or Group.
  6. In the Select Users or Groups dialog box, add the account that has permission to run the Sqlservr.exe file, and then click OK.
  7. Close the Group Policy dialog box.
  8. 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의 서비스 계정을 추가합니다.

|