SQL Server/SQL Server Tip

PAE, 4GT, AWE 정리

SungWookKang 2015. 7. 17. 08:27
반응형

SQL Server DBA

(SQL Server Technical Assistance Group)

 

작성일자(2011년, 09월, 13일)

문서등급(일반)

 

 

문서 정보

문서 정보

SQL TAG 에서 발간하는 Microsoft SQL Server DBA를 위한 책이다. 우리는 완벽하지 않기 때문에 내용 중 일부는 틀릴 수 있고, 그런 내용은 SQLTAG.ORG를 통해 피드백 주길 바란다. 해당하는 내용은 리서치와 검증을 통해 빠르게 수정 될 수 있도록 하겠다.

 

연락처

SQLTAG (SQL Server Technical Assistance Group) http://www.sqltag.org

 

문서 히스토리

버전

일자

이력사항

작성자

승인자

1.0

2012.01.31

최초작성

강성욱

 

.

.

.

.

.

 

 

저작권

Copyright 2011 SQLTAG All Rights Reserved.

 

이 문서는 SQLTAG의 지적 자산이므로 SQLTAG의 승인 없이 이 문서를 다른 용도로 임의 변경하여 사용할 수 없습니다.

SQLTAG는 이 문서의 내용을 예고 없이 변경할 수 있습니다.

 

 

목차

1.    PAE / 4GT / AWE    5

1.1    소개    6

1.2    PAE(Physical Address Extension)    7

1.2.1    PAE에 대한 시스템 지원.    7

1.2.2    PAE x86 시나리오.    7

1.2.3    X86 PAE 기술.    7

1.2.4    PAE 활성화.    9

1.3    4GT(4-Gigabyte Tuning)    11

1.3.1    4GT 요구 사항 / 제한 사항    11

1.3.2    4GT 아키텍처    11

1.3.3    4GT 프로세스와 상호 작용    12

1.3.4    4GT 설정    13

1.4    AWE(Adress Windowing Extensions)    15

1.4.1    AWE 특징    15

1.4.2    AWE 설정    15

1.5    참고 자료    17

 

  1. PAE / 4GT / AWE

이 글을 작성하는데 도움을 주신 SQLTAG 이상현님 감사합니다.

 

32bit 환경에서는 4GB이상의 메모리를 영원히 사용 할 수 없는가? 다양한 옵션을 통하여 숨어있는 메모리를 활용하여 보자.

  1. 소개

    우리가 운영중인 32bit 환경에서는 4GB 이상의 메모리를 사용 할 수 없다.

    실제 우리가 사용하고 있는 윈도우를 보더라도 32bit환경에서는 3.24GB만 인식 된 것을 확인 할 수 있다.

     

     

    그렇다면 32bit 환경에서 물리적인 메모리가 4GB 이상 설치 되어 있다면 영원히 사용하지 못하는 것인가?

     

    PAE(Physical Address Extension) 와 4GT(4-Gigabyte Tuning) 옵션을 통하여 숨어있는 메모리를 찾아 보자. 그리고 4GT 옵션을 사용하여 16GB까지 사용 할 수 있는 이유와 PAE 옵션을 사용하여 64GB 최대 128GB까지 사용 할 수 있는 이유를 알아 보자.

     

    참고로 64bit 플랫폼에서는 4GB이상을 액세스 할 수 있으므로 PAE옵션을 제공하지 않는다.

     

    [PAE, 4GT, AWE 비교.] – 서로 독립적으로 사용 가능.

PAE

운영체제가 실제 메모리 4GB 이상을 액세스 하여 사용.

4GT

2GB에서 최대 3GB를 사용하는 프로세스에 사용할 수 있는 가상 주소 공간의 부분을 증가.

AWE

프로세스가 실제 메모리를 비페이징 할당하고 동적으로 프로세스의 가상 주소 공간에 액세스 할 수 있도록 매핑하는 API 집합.

 

우리가 흔히 사용하는 3GB용어는 4GT로 대체하여 사용 한다.

 

  1. PAE(Physical Address Extension)

    PAE(Physical Address Extension) 기능은 x86 32bit 플랫폼 환경에서 실제 메모리 4GB 이상 액세스 할 수 있는 기능이다. 이는 실제 또는 가상 메모리의 양을 증가 시키는 기술이다.

     

    기본적으로 Windows Server 2003, ENT, DC(Data Center) 에디션의 32bit 버전을 실행하는 서버 주소는 32비트 메모리를 지원하므로 실제 메모리4GB를 액세스 할 수 있다. 이렇게 하려면 PAE는 운영체제와 각 종 드라이버 및 응용 프로그램들이 실제 메모리에 액세스 할 수 있도록(MMIO) 32bit 주소 지정 모드에서 64bit 주소 지정 모드로 메모리를 변경 한다. 응용 프로그램 또한 AEW API를 사용하여 물리적 메모리에 직접 액세스 할 수 있다.

  2. PAE에 대한 시스템 지원.

  • Windows7 32bit
  • Windows Server 2008 32bit
  • Windows Vista 32bit
  • Windows Server 2003 32bit
  • Windows XP 32bit
  1. PAE x86 시나리오.

    PAE x86 커널은 기존의 4GB를 포함하여 64GB 최대 128GB까지 지원 한다. 이렇게 메모리를 확장하여 사용하면 페이징 작업의 감소가 발생하여 시스템의 성능 향상을 가져 온다. 또한 응용 프로그램들은 AWE API를 통하여 Windows의 4GB 를 포함한 64GB(최대 128GB)를 사용할 수 있도록 매핑 된다.

  2. X86 PAE 기술.

    1. 메모리 관리자.

    메모리 관리자는 운영 체제와 실제 물리적 메모리 위치에 응용 프로그램에서 사용하는 가상 메모리 주소를 변환한다. 가상 메모리의 영역은 물리적 메모리에서 응용 프로그램 영역에 투명 하다.( The translation of virtual memory to physical memory is transparent to the application) 사용자 프로세스는 직접 메모리에 액세스가 가능하며 메모리 블록을 요청하여 쓸 수 있다. 데이터는 실제 메모리나 페이징 파일에 기록 된다. 메모리 관리자는 필요에 따라 새로운 데이터를 위한 공간을 마련하기 위해 메모리에서 페이징 파일로 데이터를 이동한다.

     

    Windows의 32bit 버전은 기본적으로 232바이트(4GB)의 주소를 가지고 있다. PAE x86은 32bit의 주소를 64bit 로 변경 한다. 실제 응용 프로그램이 물리적 메모리를 초과하면 PAE 메모리 관리자에 의해 물리적 메모리 한계를 극복 한다. 페이징 프로세스는 운영체제가 실제 물리적 메모리를 극복 할 수 있도록 한다. 이는 디스크에서 데이터를 쓰거나 검색하는 데 필요한 시간 등 성능에 직접적인 영향을 미친다.

     

  • 32bit 환경에서는 2의 32승 (4294967296bit)인 4GB메모리를 사용 할 수 있다.
  • PAE를 사용하여 36bit를 할당. 2의 36승(68719476736bit)인 64GB 메모리를 사용 할 수 있다.
  1. 페이지 테이블 항목

메모리 관리자는 실제 메모리의 어느 위치에 페이지 파일 또는 데이터가 있는지 인덱스 해야 한다. 응용프로그램이 데이터를 요청하면 메모리 관리자는 데이터가 실제로 있는 위치를 결정하는 인덱스를 참조하고 응용 프로그램에 제공한다.

 

 

커널의 할당된 메모리 공간은 (기본 2GB 사용, 4GT사용시 1GB 사용) 페이지 풀 영역 및 페이지 테이블 영역으로 나누어져 있다.

 

 

 

 

4GT가 활성화된 경우 Windows Server 2003 제품군의 구성원을 실행하는 컴퓨터에서 페이지 테이블 항목 (PTE)을 포함하는 페이지 테이블 공간은 기본적으로 64 MB 이다. The Paged Pool space is approximately 256 MB. 페이지된 풀 공간은 약256MB 이다. While these different allocations share the same memory area, the partition between them is fixed at startup. 같은 메모리 영역을 공유하는 페이지 테이블, 페이지 풀은 시스템 시작시 파티션이 고정 된다.This becomes important when PAE X86 is enabled because the access to additional physical memory that PAE X86 allows requires additional PTEs for tracking and translation. X86 PAE는 물리적 메모리에 대한 액세스 추적 및 번역 추가 PTE를 필요하기 때문에 이러한 문제가 매우 중요하다.If the operating system runs out of space in either the PTE area or the Paged Pool area, the other area cannot donate space to it, and programs may not receive requested resources, which can lead to unexpected errors for the application. 운영 체제가 PTE 영역 또는 페이지된 풀 영역 중 하나라도 공간이 부족하면 다른 위치에 공간을 할당 할 수 없다. 따라서 응용 프로그램은 요청된 리소스를 받지 못하여 예기치 않은 오류가 발생할 수 있다.By editing the registry, it is possible to limit the size of the Paged Pool space, which will then free additional memory for system PTEs. 레지스트리를 편집하여 PTE에 대한 추가 메모리를 설정하여 페이지 된 풀 공간의 크기를 제한 할 수 있다.

  1. PAE 활성화.

    하드웨어 기반의 DEP를지원하는 컴퓨터가 활성화 되어 있거나 4GB이상의 메모리에 대해 Hot Add 장치가 구성된 경우에는 Windows가 자동으로 PAE 할 수 있다.

     

    1. PAE활성화 명령.

    Bcdedit /세트{ID} PAE ForceEnable

    1. PAE 비활성화 명령

    Bcdedit /세트{ID} NX AwalysOff

    Bcdedit /세트{ID} PAE ForceDisable

    1. PAE 설정.

    2. 커맨드 창을 실행 한다. [시작] – [실행] –[CMD]

       

    3. 명령어를 입력 한다.

     

     

 

  1. 만약 PAE 항목이 ForceEnable 가 아니라면 bcdedit /set nx alwaysOff 를 입력 후 다시 설정 한다.

 

 

  1. 4GT(4-Gigabyte Tuning)

    4GT는 PAE여부와 상관없이 사용 가능 하다. Windows 일부 버전에서는 4GT를 사용하는 경우 실제 메모리의 최대 크기를 제한한다. 4GT 활성화 상태에서 시스템을 시작하면 운영 체제가 한계를 초과하는 메모리는 무시한다. 따라서 4GB이상을 할당 할 때에는 PAE옵션과 함께 사용하여 극대화 할 수 있다.

     

    일반적으로 어플리케이션이 직접 접근 할 수 있는 공간 2GB와 커널만 액세스 할 수 있는 주소 공간 2GB로 분할 된다.Because of this 2 GB virtual memory limit, applications that are memory intensive and that manage their memory directly through their own caching methods, such as database management systems (DBMS), can experience reduced performance.

     

    4GT can make more of the computer's virtual memory available to applications by making less virtual memory available to the operating system. 4GT는 운영 체제에서 응용 프로그램에 사용할 수 있는 컴퓨터의 가상 메모리를 더 많이 만들 수 있다. With 4GT enabled, applications that are designed to be aware of this larger address space are able to address 3 GB of virtual memory instead of the 2 GB normally allocated for user mode processes. 4GT를 활성화 하면 더 큰 주소 공간을 인식하여 사용자 모드 프로세스에 할당된 2GB대신 3GB의 공간을 사용하게 된다. 이것은 더 많은 데이터가 캐시에 저장되고 잠재적으로는 성능 향상을 가져 온다.

     

  2. 4GT 요구 사항 / 제한 사항

    1. 요구 사항

  • X86 기반 프로세서.
  • 2GB 이상 RAM
  • Windows Server 2003 ENT, Data Center, STD
  1. 제한 사항

  • 실제 메모리 16GB이상 사용가능 하며 PAE 활성화.
  • 어플리케이션이 1GB이상의 커널을 필요로 할 때..

 

  1. 4GT 아키텍처

    사용자 모드 응용 프로그램 또는 커널에 의해 가상 메모리 공간을 요청하면 메모리 관리자가 물리적으로 위치를 지정한다. 물리적 주소 변환 정보에 대한 가상 주소는 커널의 가상 주소 공간의 일부 페이지 테이블에 유지됩니다.

     

     

    [4GT 아키텍처 구성 요소]

구성요소

설명

Kernel or User Application

The user mode application or kernel process that requests data at a specific virtual address space.

Memory Manager

Operating system component that allocates, organizes, and tracks memory assignments.

4GB Virtual Address Space

Virtual addresses representing the 4 GB of RAM that is recognized by default by the operating system. Using 4GT, this 4 GB is divided to give user mode applications 3 GB of virtual address space and the kernel 1 GB of virtual address space. The kernel's 1 GB is further allocated into many other specific sections, including the page table area.

Page Table

A portion of the kernel's virtual address space that indexes virtual memory addresses to physical addresses

Paging File

The files on a hard disk where data is stored instead of storing that data in RAM.

RAM

The physical RAM where data is stored.

 

  1. 4GT 프로세스와 상호 작용

    4GT는 기본적으로 활성화 되어 있지 않다. 4GT를 활성화 하기 위해서는 /3GB 옵션이 Boot.ini파일에 추가 되어야 한다. 이 옵션은 운영체제가 응용 프로그램과 커널에 대한 기본 가상 주소의 할당을 변경 한다.

    1. 가상 메모리 할당

    운영체제는 응용프로그램 시작 시 응용프로그램의 대한 헤더 파일을 검사한다. 응용프로그램은 "IMAGE_FILE_LARGE_ADDRESS_AWARE' 플래그를 포함하고 /3GB 스위치는 4GT 활성화 되어 있다면 응용프로그램이 큰 가상 공간에 액세스 하는데 사용 된다.

     

     

    1. /USERVA 매개 변수

    어떤 경우에는 커널의 메모리를 1GB로 제한하는 것을 바람직 하지 않을 수도 있지만 커널이 2GB를 필요로 하지 않을 때도 있다. 추가로 메모리 관리 옵션을 수정하기 위해 매개 변수를 사용한다.

    Ex) 3GB / USERVA = 2900

    추가 커널 주소 공간은 사용 되지 않은 PTE 공간이 부족할 경우에만 추가적인 주소공간으로 사용 된다. 시스템의 PTE 공간이 부족 할 때 까지 이 주소 공간은 할당 되지 않는다.

    1. 페이지 파일

    페이지 파일은 메모리에 저장 할 수 없는 데이터를 저장한다. 기본 페이지 파일 크기는 시스템의 물리적 메모리의 1.5배를 할당 한다. 4GB의 시스템에서는 페이징 파일이 4GB이상 발생 할 수 있다. 따라서 시스템의 사용량에 따라 페이지 파일의 기본 크기를 변경하는 것이 좋다. 4GB이상의 X86 시스템에서는 커널 메모리 덤프를 캡처하기 위해 2050MB 용량의 큰 페이지 파일이 있다. 여러 응용 프로그램을 사용하는 시스템의 경우 페이지 파일이 (물리적 메모리의 3배 까지) 훨씬 클 수 있다.

    1. 페이지 테이블 항목

    페이지 테이블(PTE)은 페이지 파일의 실제 위치를 추적하기 위해 메모리 관리자에 의해 사용 된다. 4GT를 사용하는 경우 작은 가상 메모리가 커널에 할당되어 페이지 테이블의 메모리 관리자게 의해 기록 될 수 있는 페이지 테이블 항목(PTE)의 숫자도 줄어 든다.

    4GT를 사용하지 않는 표준 구성에서는 일반적으로 80,000~ 140,000 PTE를 사용할 수 있다.This is reduced to only 40,000 PTEs when using 4GT. 4GT를 사용하는 경우에는 40,000 PTE의로 줄어 든다. This can lead to problems when the amount of physical memory increases and the kernel is required to keep track of larger and larger amounts of PTEs.실제 메모리가 증가하고 커널이 요구하는 양이 PTE보다 더 크다면 문제가 발생 할 수 있다.

  2. 4GT 설정

    1. 커맨드 창을 실행 한다. [시작] – [실행] –[CMD]

       

    2. 명령어를 입력 한다.

 

    

 

  1. AWE(Adress Windowing Extensions)

    SQL Server는 메모리를 필요에 따라 동적으로 확보하고 해제 한다. SQL Server는 32bit 버전의 운영체제에서 4GB 이상의 물리적인 메모리를 사용 할 수 있다면 AWE 옵션을 사용하여 SQL Server에 정적 메모리를 할당 할 수 있다. 또한 AWE는 기본적으로 Lock Page를 할당 받기 때문에 Windows에 의해서 SQL Server의 메모리가 강제로 Page Out 되는 현상을 방지 할 수 있다..

     

  2. AWE 특징

    1. AWE에 할당된 주소는 다른 프로세스와 공유 되지 않는다.

    AWE에 할당된 가상 주소 범위가 다른 프로세스와는 공유 되지 않는다. 따라서 상속되지 않는다. 같은 프로세스내의 다른 AEW 가상 주소는 동일한 물리적 페이지를 매핑 할 수 없다. 이러한 제한으로 인하여 해제 및 빠른 매핑을 제공한다.

    1. AWE 지역에 할당 할 수 있는 페이지 수는 물리적 페이지의 숫자로 제한

    주어진 프로세스에 할당된 물리적 페이지는 동일한 프로세스 내의 AWE 가상영역으로 매핑 할 수 있다. 따라서 무리한 할당으로 스레드 생성을 방해하지 않도록 해야 한다. .

    1. AWE 가상 주소는 보호 받을 수 없다.

    2. AWE 주소 범위는 그래픽 또는 비디오 데이터 버퍼로 사용 할 수 없다.

    3. AWE는 메모리 범위를 분할 할 수 없으며 삭제는 가능 하다

    삭제가 필요한 경우에는 전체 가상 주소 범위로 삭제 해야 한다. (MEM_RELEASE)

    1. 응용 프로그램이 동시에 여러 영역 매핑 가능 하다.

    여러 영역이 매핑 되지만 중복 되지는 않는다.

  3. AWE 설정

    1. PAE 옵션이 활성 화 되어 있는지 확인 한다.

    2. SQL Server AWE를 활성화

    3. AWE enabled

sp_configure 'show advanced options', 1

RECONFIGURE

GO

 

sp_configure 'awe enabled', 1

RECONFIGURE

GO

 

  1. SQL Server 재시작 한다. 오류로그에 "Address Windowing Extensions" 설정 기록을 확인 할 수 있다.

 

  1. 메모리 구성,

 

  1. 참고 자료

    http://msdn.microsoft.com/en-us/library/aa366796(VS.85).aspx

    http://msdn.microsoft.com/en-us/library/bb613473(v=vs.85).aspx

    http://msdn.microsoft.com/en-us/library/aa366527(v=vs.85).aspx

    http://msdn.microsoft.com/en-us/library/aa366720(v=vs.85).aspx

반응형

'SQL Server > SQL Server Tip' 카테고리의 다른 글

SQL Server User Connection  (0) 2015.07.17
SQL Server 32bit Memory limit on Windows Server 2008R2 64bit  (0) 2015.07.17
Max worker threads  (0) 2015.07.17
DMV를 이용한 CPU 소켓 및 코어 수 확인  (0) 2015.07.17
NUMA 정리  (0) 2015.07.17