페이지된 주소 풀과 시스템 페이지 테이블 항목의 메모리 영역 구성 방법

기술 자료 번역 기술 자료 번역
기술 자료: 247904 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR247904
중요: 이 문서에서는 레지스트리 편집 방법을 설명합니다. 레지스트리를 편집하려면 문제가 발생한 경우 복원하는 방법을 알고 있어야 합니다. 복원 방법에 대한 자세한 내용은 Regedit.exe의 "레지스트리 복원" 도움말 항목 또는 Regedt32.exe의 "레지스트리 키 복원" 도움말 항목을 참조하십시오.
모두 확대 | 모두 축소

요약

이 문서는 Microsoft Terminal Server 서비스를 실행하는 Windows 2000 기반 컴퓨터에서 페이지된 주소 풀과 시스템 페이지 테이블 항목(SystemPTE)의 메모리 영역 크기를 조정하는 방법에 대해 설명합니다.

추가 정보

경고: 레지스트리 편집기를 잘못 사용하면 심각한 문제가 발생할 수 있으며 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 레지스트리 편집기를 잘못 사용하여 발생하는 문제에 대해 해결을 보증하지 않습니다. 레지스트리 편집기의 사용에 따른 모든 책임은 사용자에게 있습니다.

레지스트리 편집 방법에 대한 자세한 내용은 레지스트리 편집기(Regedit.exe)의 "키 및 값 변경" 도움말 항목 또는 Regedt32.exe의 "레지스트리의 정보 추가 및 삭제" 및 "레지스트리 데이터 편집" 도움말 항목을 참조하십시오. 레지스트리를 편집하기 전에 레지스트리 파일을 백업해야 합니다. 또한 Windows NT나 Windows 2000을 실행하는 경우 ERD(응급 복구 디스크)를 업데이트해야 합니다.

Windows 2000은 설치되어 있는 실제 RAM(Random Access Memory)의 양에 관계 없이 최대 2^32바이트 또는 4기가바이트(GB)의 메모리 주소 공간을 직접 지정할 수 있습니다. 기본적으로 이 주소 공간 중 2GB는 각 프로세스에 할당되고 2GB는 커널에 할당됩니다. 컴퓨터의 각 프로세스에는 2GB의 별도 주소 공간 영역이 사용되는 반면 2GB의 커널 영역 대부분은 전역 영역이며 현재 활성화되어 있는 사용자 모드 프로세스와 동일합니다.

2GB의 커널 영역에는 모든 시스템 데이터 구조와 정보가 포함되어 있습니다. 따라서 2GB의 커널 주소 공간 영역은 설치되어 있는 RAM의 양에 관계 없이 시스템 데이터 구조의 수와 컴퓨터에 저장될 수 있는 커널 정보의 양에 제한을 둘 수 있습니다.

이 2GB의 주소 영역을 공유하는 2 종류의 데이터는 페이지된 풀(Paged Pool) 할당과 커널 스택(kernel stack) 할당입니다. 페이지된 풀 할당은 커널 모드 구성 요소에 의해 이루어진 메모리 할당입니다. 커널 스택 할당은 시스템 호출에 사용할 각 스레드를 위해 커널에 작성된 스택입니다. 페이지된 풀 할당은 페이지된 풀 영역에서 이루어지며 커널 스택 할당은 시스템 페이지 테이블 항목(PTE) 영역에서 이루어집니다.

이와 같이 서로 다른 할당이 동일 영역을 공유하지만 이들 간의 파티션은 시작 시 고정됩니다. 운영 체제에서 이들 영역 중 하나에 공간이 부족하면 다른 영역이 해당 영역에 공간을 줄 수 없으며, 프로그램에 예기치 않은 오류가 발생할 수 있습니다. 따라서 Windows 2000 기반 컴퓨터에서 예기치 않은 오류가 발생하거나 새 로그인을 적용할 수 없고 CPU(Central Processing Unit)와 같은 다른 리소스 제한이나 디스크 병목 현상이 발생하며 , 이는 페이지된 풀 또는 시스템 PTE 영역의 디스크 공간이 부족해지는 현상과 아주 유사합니다. 기본적으로 시스템 PTE 영역의 크기는 터미널 서비스를 사용할 수 있는 컴퓨터에서 최대 크기로 조정되기 때문에 보통 이러한 제한은 페이지된 풀 주소 공간이 부족하기 때문입니다. 다행히 일부 컴퓨터에서 시스템 PTE 영역을 더 작게 구성할 수 있으므로 이러한 현상을 완화하고 컴퓨터에 대한 사용자 액세스를 높일 수 있습니다.

컴퓨터에 이러한 리소스 중 하나 이상이 부족한지 확인하려면
  1. 커널 디버거를 컴퓨터에 연결합니다.
  2. 텍스트 편집기를 사용하여 /DEBUG 매개변수를 Boot.ini 파일에 추가합니다.
  3. 컴퓨터를 다시 시작합니다.
커널 디버거 사용에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
151981 How to Set Up a Remote Debug Session Using a Null Modem Cable
시스템이 한계에 도달했다고 생각되면 다음을 수행하십시오.
  1. 디버거를 실행합니다.
  2. !vm을 입력하고 ENTER 키를 누릅니다.
  3. 디버거 결과에 오류가 표시되면 !reload를 입력하고 ENTER 키를 눌러 정확한 기호를 가질 수 있도록 합니다.
다음은 예제 디버그 세션입니다. 중요한 데이터는 분명하게 볼 수 있도록 굵은 글꼴로 표시되어 있습니다.

*** Virtual Memory Usage ***
Physical Memory: 1032075 ( 4128300 Kb)
Page File: \??\C:\pagefile.sys
Current: 4190208Kb
Mimimum: 4190208Kb
Maximum: 4190208Kb
Available Pages: 599741 ( 2398964 Kb)
ResAvail Pages: 894259 ( 3577036 Kb)
Modified Pages: 757 ( 3028 Kb)
NonPagedPool Usage: 15084 ( 60336 Kb)
NonPagedPool Max: 71586 ( 286344 Kb)
PagedPool 0 Usage: 22953 ( 91812 Kb)
PagedPool 1 Usage: 4324 ( 17296 Kb)
PagedPool 2 Usage: 4315 ( 17260 Kb)
PagedPool 3 Usage: 4360 ( 17440 Kb)
PagedPool 4 Usage: 4366 ( 17464 Kb)
********** Excessive Paged Pool Usage *****
PagedPool Usage: 40318 ( 161272 Kb)
PagedPool Maximum: 40960 ( 163840 Kb)
Shared Commit: 30133 ( 120532 Kb)
Special Pool: 0 ( 0 Kb)
Free System PTEs: 47920 ( 191680 Kb)
Shared Process: 99141 ( 396564 Kb)
PagedPool Commit: 40318 ( 161272 Kb)
Driver Commit: 770 ( 3080 Kb)
Committed pages: 822746 ( 3290984 Kb)
Commit limit: 2037826 ( 8151304 Kb)
Total Private: 545122 ( 2180488 Kb)
이 결과 목록에서 "********** Excessive Paged Pool Usage *****" 항목은 페이지된 풀 리소스가 부족한 컴퓨터를 나타냅니다. 이것은 PagedPool 사용 항목이 PagedPool 최대값 항목에 매우 가깝다는 것을 보면 알 수 있습니다.

Windows 2000을 새로 설치한 컴퓨터에서 시스템 PTE 공간과 페이지된 풀 공간 사이에 파티션을 구성하려면 컴퓨터에 페이지된 풀 리소스가 없어야 하며 사용 가능한 시스템 PTE 공간이 충분히 남아 있어야 합니다. 사용 가능한 시스템 PTE 공간의 양은 40,000K 이상이어야 합니다. 컴퓨터에 사용 가능한 시스템 PTE 공간이 부족하면 Terminal Server에 더 많은 사용자가 로그인할 수 있도록 하기 위한 다음 방법을 사용할 수 없습니다.

페이지된 풀 공간과 시스템 PTE 공간 간의 최적의 균형을 위해 컴퓨터를 조정하려면
  1. 컴퓨터를 다시 시작한 다음 로그인합니다.
  2. 디버거를 실행하여 !vm을 입력한 다음 ENTER 키를 누릅니다.
  3. PagedPool 최대값과 사용된 PagedPool 및 사용 가능한 시스템 PTE의 값을 기록합니다. 기록할 값은 킬로바이트이며 괄호로 둘러싸여 있습니다.
  4. 디버그 호스트 컴퓨터에서 g를 입력한 다음 ENTER 키를 누릅니다.
  5. 대상 컴퓨터에서 10명의 Terminal Server 사용자를 로그인하고 이들을 모두 계속 로그인시킵니다. 이 과정에 필요한 것 외의 다른 작업으로 서버를 방해하지 마십시오.
  6. 10세션 모두에서 사용자들이 동시에 실행할 것으로 예상되는 프로그램을 모두 시작합니다. 이것이 사용자들의 대표 예제가 될 것입니다. 이들 세션에서 실행하는 프로그램은 이 시스템의 모든 사용자들이 정상적인 생산 환경의 어떤 시점에서 실행하게 될 프로그램을 나타냅니다. 최상의 결과를 위해서 원격 사용자들은 그들이 실행하고 있는 프로그램에 대해 정상이라고 생각되는 동작을 수행해야 합니다. 예를 들면 워드 프로세싱 프로그램에서 입력하는 동작이나, 업무 관련 프로그램에서 주문을 입력하는 경우가 있습니다.
  7. 디버거를 실행하여 !vm을 입력한 다음 ENTER 키를 누릅니다.
  8. 사용된 PagedPool과 사용 가능한 시스템 PTE의 값을 기록합니다.
  9. 다음 계산을 수행합니다.

    1. 사용자당 페이지된 풀의 양 =( 마지막으로 사용된 페이지된 풀의 양 - 처음에 사용된 페이지된 풀의 양 )/10

      여기서 사용자당 페이지된 풀의 양은는 사용자 일인당 페이지된 풀의 양을 나타내고 마지막으로 사용된 페이지된 풀의 양은 마지막으로 사용된 페이지된 풀의 양을 나타내며 처음에 사용된 풀의 양은 최초로 사용된 페이지된 풀의 양을 나타냅니다.
    2. 사용자당 시스템 PTE의 양 =( 최초 사용 가능한 시스템 PTE의 양 - 마지막 사용 가능한 시스템 PTE 양 )/10

      여기서 사용자당 시스템 PTE의 양은 사용자당 시스템 PTE 양을 나타내고 최초 사용 가능한 시스템 PTE 양은 처음에 사용 가능한 시스템 PTE 양을 나타내고 마지막 사용 가능한 시스템 PTE 양은 마지막으로 사용 가능한 시스템 PTE 양을 나타냅니다.
  10. 레지스트리를 수정하려면

    1. 사용자당 필요한 가상 공간과 사용 가능한 가상 주소 공간을 다음과 같이 정합니다.

      AvailableVirtualSpace = PagedPoolMaximum + FreeSystemPTEsinitial - PagedPoolUsedinitial

      여기서 AvailableVirtualSpace는 사용 가능한 가상 공간의 양을 나타내고 PagedPoolMaximum은 페이지된 풀의 최대값을 나타내며 FreeSystemPTEsinitial은 최초 사용 가능한 시스템 PTE의 양을 나타내며 PagedPoolUsedinitial은 최초 사용된 페이지된 풀의 양을 나타냅니다.
    2. 다음 수식을 사용하여 사용자당 필요한 가상 공간의 양을 정합니다.

      VirtualSpacePerUser = PagedPoolPerUser + SystemPTEsPerUser

      여기서 VirtualSpacePerUser는 사용자당 필요한 가상 공간의 양을 나타내며 PagedPoolPerUser는 사용자당 페이지된 풀의 양을 나타내며 SystemPTEsPerUser는 사용자당 시스템 PTE의 양을 나타냅니다.
    3. 다음 수식을 사용하여 이 컴퓨터에서 이론상 지원할 수 있는 사용자 수를 정합니다.

      MaxUsers = AvailableVirtualSpace / VirtualSpacePerUser

      여기서 MaxUsers는 최대 사용자 수를 나타내고 AvailableVirtualSpace는 사용 가능한 가상 공간의 양을 나타내며 VirtualSpacePerUser는 사용자당 가상 공간의 양을 나타냅니다.
    4. 다음 수식을 사용하여 시스템 PTE 공간이 필요한 양을 정합니다.

      여기서 PTErequired는 필요한 PTE 양을 나타내며 SystemPTEsPerUser는 사용자당 PTE 수를 나타내며 MaxUsers는 사용자의 최대 수를 나타냅니다.
    5. 다음 수식을 사용하여 초과 PTE 및 SystemPages의 양을 계산합니다.
      PTEexcess = FreeSystemPTEsinitial - PTErequired

      여기서 PTEexcess는 초과 PTE 양을 나타내고 FreeSystemPTEsinitial은 최초 사용 가능한 시스템 PTE 양을 나타내며 PTErequired는 필요한 PTE 양을 나타냅니다.
      경고: 레지스트리 편집기를 잘못 사용하면 심각한 문제가 발생할 수 있으며 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 레지스트리 편집기를 잘못 사용하여 발생하는 문제에 대해 해결을 보증하지 않습니다. 레지스트리 편집기의 사용에 따른 모든 책임은 사용자에게 있습니다.

      레지스트리 편집 방법에 대한 자세한 내용은 레지스트리 편집기(Regedit.exe)의 "키 및 값 변경" 도움말 항목 또는 Regedt32.exe의 "레지스트리의 정보 추가 및 삭제" 및 "레지스트리 데이터 편집" 도움말 항목을 참조하십시오. 레지스트리를 편집하기 전에 레지스트리 파일을 백업해야 합니다. 또한 Windows NT나 Windows 2000을 실행하는 경우 ERD(응급 복구 디스크)를 업데이트해야 합니다.

    6. 명령 프롬프트 상태에서 레지스트리 편집기(Regedit32.exe)를 사용하여 HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management\SystemPages의 SystemPages 값을 다음 수식에서 계산된 값으로 수정하십시오.

      SystemPages = 50,000 - (PTEexcess / 4) (가장 가까운 정수로 반올림)

      여기서 SystemPages는 시스템 페이지의 수이고 PTEexcess는 초과 PTE의 양을 나타냅니다.

      SystemPages의 계산된 값이 3,000보다 작으면 값을 3,000으로 설정하십시오. 계산된 값이 50,000보다 클 경우 주소 공간 경계가 이미 최대 사용자 수에 맞게 구성되어 있는 것입니다.
    7. 컴퓨터를 다시 시작하고 디버거를 실행하여 !vm을 입력한 다음 ENTER 키를 누릅니다.
    8. 페이지된 풀 최대값이 증가되었고 시스템 PTE 공간이 감소되었는지 확인합니다.

속성

기술 자료: 247904 - 마지막 검토: 2004년 3월 22일 월요일 - 수정: 2.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows 2000 Server
키워드:?
kbhowto kbtool kbenv KB247904

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com