Exchange 2003 시스템에서 메모리관리는 상당히 중요한 부분을 차지 한다.

 

Exchange 2003에 속도 저하 이슈 혹은 메모리 부족에 관련된 이슈가 있을 경우 아래 2가지를 체크

해보시길 바랍니다.

 

  1. /3GB  옵션을 사용해라

     관련 KB : /userva 스위치를 /3GB 스위치와 함께 사용해서 사용자 모드 공간을 2GB에서 3GB 사이의 값으로 조정하는 방법

     

  2. 가상메모리 단편화에 따른 메모리 단편화 레지스트리 수정

    관련 KB : The "HeapDecommitFreeBlockThreshold" registry key

       기억속을 날다님의 글 : 골치 아픈 Memory Fragmentation

 

 요약

This article describes the HeapDecommitFreeBlockThreshold registry key.

When memory is freed at a given address, the heap manager checks how many contiguous bytes are free around that address. After that check is complete, the heap manager can do one of two things:

  • Keep the contiguous memory block committed.
  • Decommit the contiguous memory block and mark it as reserved only.

The HeapDecommitFreeBlockThreshold registry key specifies the number of contiguous bytes above which the memory is decomitted (the second option) rather than retained for reuse (the first option).

Note On computers that have one gigabyte or more of RAM, apply the following setting for maximum performance:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager HeapDeCommitFreeBlockThreshold = REG_DWORD 0x00040000

On computers that have less than one gigabyte of RAM, do not use the HeapDecommitFreeBlockThreshold registry key unless intense memory fragmentation is occurring.

 

 추가 정보

 

Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:

322756  (http://support.microsoft.com/kb/322756/ ) How to back up and restore the registry in Windows


By default, the heap manager does not necessarily combine all free blocks or make new allocations; therefore, blocks may be de-committed and become useless holes in the virtual address space. The HeapDecommitFreeBlockThreshold registry key provides better control of how the memory is handled as it is freed. To add this key, you need to edit the registry.

To add the HeapDecommitFreeBlockThreshold registry key:

Start Registry Editor (Regedt32.exe).
Locate and click the following key in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
On the Edit menu, click Add Value, and then add the following registry value:
Value name: HeapDecommitFreeBlockThreshold
Data type: REG_DWORD
Radix: Decimal
Value Data: The number of bytes

This value specifies the number of freed bytes above which the heap manager decommits the memory (instead of retaining and reusing the memory). If you set this registry key to a high value (for example, 262144), the heap manager is more effective when making sure that no bytes are decommitted. Therefore, virtual address fragmentation is lessened or even avoided.


Note This value is the number of bytes in decimal. The recommended value is 262144 which corresponds with a hex value of 0x00040000.
Quit Registry Editor.
Restart your computer.

 

단 해당 조정 후 서버 Restart는 필수 사항 입니다.

 

 

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/05/29 07:47 2009/05/29 07:47

 

요약

Windows Server 2003 제품군에서 /userva=xxxx 스위치를 사용하면 사용자 및 커널 가상 메모리 공간을 보다 정밀하게 조정할 수 있습니다. Boot.ini 파일에서 이 새 스위치를 /3GB 스위치와 함께 사용하면 3,072와 이보다 작은 xxxx의 차이를 다시 커널 모드로 되돌려서 사용자 모드 공간을 2-3 GB 사이의 값으로 조정할 수 있습니다. 여기서 xxxx는 MB 값입니다.

다음의 예제 Boot.ini 파일은 새 스위치로 컴퓨터를 조정해서 2,900 MB의 사용자 모드 가상 메모리와 1,196 MB의 커널 모드 가상 메모리를 할당하는 방법을 보여 줍니다. 이렇게 하면 사용 가능한 커널 공간이 172 MB 증가합니다.
[Boot Loader]
Timeout=30
Default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows.NET Server" /fastdetect /3GB /Userva=2900

추가 정보

/userva=xxxx 스위치는 2 GB 이상의 사용자 모드 공간이 필요하지만 /3GB 조정 스위치에서 제공하는 공간을 모두 필요로 하지 않는 프로그램 제조업체들을 고려하여 사용자 모드 주소 공간을 보다 정밀하게 조정할 수 있도록 디자인한 것입니다. (단지 /3GB 스위치만 사용하면 커널에 1 GB 사용자 모드 공간에 3 GB가 할당됩니다.) /3GB 스위치에의해 일반적으로 할당되는 사용자 모드 공간을 줄여줌으로서 Windows는 사용 가능한 커널 메모리 주소 공간을 늘립니다. 이렇게 추가된 커널 모드 주소 공간은 예약되어 시스템의 자유 PTE 공간이 부족한 경우에 Page Table Entry(PTE)를 위한 추가 주소 공간으로 사용됩니다. 시스템의 PTE 공간이 부족해지기 전까지는 이 주소 공간이 PTE에 할당되지 않습니다.

프로그램 안정성과 Windows 안정성을 보장하기 위해 프로그램 제조업체는 앞에서 설명한 조정 기술을 사용하여 철저히 자사 프로그램을 테스트해야 하고 자사 프로그램에 /userva=xxxx 숫자를 제공해야 합니다. 이러한 테스트 작업에 도움이 되기 위해 제조업체에서는 시스템 모니터 도구를 사용하여 가상 주소 사용량을 모니터링할 수 있습니다. 가상 주소 사용량을 모니터링하려면 가상 공간을 정확히 읽을 수 있도록 프로그램 프로세스를 위한 Virtual Bytes 카운터를 추가합니다.

참고: Microsoft 고객 기술지원부(PSS)에서는 임의의 /userva 설정을 지원하지 않으므로 고객은 제조업체의 권고에 따라서만 Boot.ini 파일에 이 설정을 추가해야 합니다.

/3GB 스위치에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
171793 응용 프로그램의 4GT RAM 조정 기능 사용에 대한 정보
189293 Windows NT Server Enterprise Editiond을 사용할 경우에 4GT RAM 조정 설정
Windows Server 2003에서는 대용량 메모리를 가진 컴퓨터에서 더 이상 시스템 페이징 풀을 160 MB로 제한하지 않습니다. 페이징 풀이 제한되지 않으므로 /3GB 스위치 설정으로 컴퓨터를 실행할 경우 시스템 페이징 풀의 크기를 제한하여 PTE 공간으로 사용할 추가 커널 모드 주소 공간을 확보할 수 있습니다.
 

요약

1GB 이상 크기의 실제 RAM이 설치되어 있고 사서함이나 공용 폴더의 홈에 해당하는 Microsoft Windows Server 2003 기반 컴퓨터에서 Exchange Server 2003을 설치할 경우 정보 저장소 서비스의 가상 메모리 사용을 최적화하도록 Boot.ini 파일을 편집해야 합니다. 메일 게이트웨이와 같이 서버에 사서함이나 공용 폴더가 없는 경우에는 /3GB 스위치를 사용하지 마십시오.

일반적인 상황에서는 각 프로세스에 대해 사용자 모드 프로세스에 2GB의 가상 주소 공간이 할당되고 운영 체제에 다른 2GB의 가상 주소 공간이 할당됩니다. Windows Server 2003에서 /3GB 스위치를 사용하면 사용자 모드 프로세스에 3GB의 가상 주소 공간이 할당되고 운영 체제에는 1GB의 가상 주소 공간만 할당됩니다. 1GB의 주소 공간을 추가로 재할당하면 Store.exe 가상 주소 공간에서 메모리 조각화 문제를 해결하는 데 도움이 됩니다. Store.exe에 할당되는 주소 공간이 클수록 큰 메모리 블록을 모두 사용하기 전에 메모리를 쉽게 결합해서 사용할 수 있습니다.

추가 정보

기본적으로 Windows Server 2003은 커널용으로 2GB의 가상 주소 공간을 예약하며 Exchange 2003 정보 저장소 프로세스(Store.exe) 같은 사용자 모드 프로세스에 2GB의 가상 주소 공간을 허용합니다. 특정 프로세스의 가상 주소 공간은 시작할 때 할당되며 실행하는 동안 메모리 사용량이 늘면서 증가합니다. 일반적으로 프로세스의 실제 메모리 사용량(작업 집합)은 해당 프로세스에 할당된 주소 공간보다 훨씬 적습니다. 1GB보다 큰 메모리를 가진 Exchange 2003 서버에서는 사용자 모드 응용 프로그램에 3GB의 메모리를 사용할 수 있도록 Windows Server 2003을 수정해야 합니다.

참고 Store.exe 프로세스를 실행할 때 가상 주소 공간이 부족하지 않도록 해야 합니다. 이 프로세스의 가상 주소 공간이 부족하면 실제 RAM이 충분히 남아 있어도 메모리 할당에 실패하고 Microsoft Exchange 정보 저장소 서비스를 다시 시작해야 합니다.

예를 들어, 실제 RAM이 2GB이고 Boot.ini 파일에서 /3GB 스위치를 사용하지 않는 서버는 Store.exe 가상 주소 공간이 2GB에 도달할 경우 메모리를 모두 소모합니다. 이 시나리오에서 Windows 작업 관리자에는 실제로 약 1.5GB만 사용 중인 것으로 나타나지만 서버에서는 메모리 부족이 발생합니다.

/USERVA 스위치는 Windows Server 2003의 새로운 기능으로 이를 사용하면 사용자 모드와 커널 모드 간에 보다 정밀하게 메모리 할당을 분할할 수 있습니다. /USERVA=3030을 사용하면 PTE(Page Table Entry)에 대해 커널에 40MB의 메모리가 추가로 할당됩니다. 이렇게 하면 시스템 리소스가 소모될 위험 없이 더 많은 수의 사용자에 서버를 확대할 수 있습니다.

또한 성능 모니터를 사용하여 가상 주소 사용량을 모니터링할 수도 있습니다. 가상 공간을 정확히 읽을 수 있도록 Store.exe 프로세스에 대한 Virtual Bytes 카운터를 추가하십시오. Exchange 2003 프로세스 중 Store.exe 프로세스만 모니터링하면 됩니다. 그 밖의 다른 Exchange 2003 프로세스는 문제를 일으킬만큼 커지지 않습니다.
 

요약

이 문서에서는 Windows Server 2003 기반 컴퓨터에서 Boot.ini 파일의 운영 체제 관련 행에 추가할 수 있는 새로운 /Userva 스위치 매개 변수의 사용 방법을 설명합니다.

이 스위치를 사용하면 /3GB 스위치를 사용할 때 프로세스에 할당되는 메모리의 양을 사용자 지정할 수 있습니다. 이렇게 하면 보다 많은 PTE(Page Table Entry) 커널 메모리가 허용되며 거의 3GB의 프로세스 메모리 공간이 유지됩니다.

추가 정보

기본적으로 Windows 2003 Server, Enterprise Edition은 커널용으로 2GB의 가상 주소 공간을 예약하며 Exchange 정보 저장소 프로세스(Store.exe) 같은 사용자 모드 프로세스에서 2GB의 가상 주소 공간을 사용하도록 허용합니다. 특정 프로세스의 가상 주소 공간은 시작할 때 할당되는데 실행하는 동안 메모리 사용량이 늘면서 증가합니다. 일반적으로 프로세스의 실제 메모리 사용량(작업 집합)은 프로세스에 할당된 주소 공간보다 훨씬 적습니다. 1GB보다 큰 메모리를 가진 Microsoft Exchange 서버에서는 사용자 모드 응용 프로그램에 3GB의 주소 공간을 사용할 수 있도록 Windows Server 2003을 수정해야 합니다. 이 설정에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
171793 응용 프로그램의 4GT RAM 조정 기능 사용에 대한 정보
189293 XADM: Windows NT Server Enterprise Edition을 사용할 경우에 4GT RAM 조정 설정
Store.exe 프로세스가 가상 주소 공간을 모두 소모하지 않도록 해야 합니다. 이러한 경우에는 충분한 실제 RAM이 있어도 메모리 할당이 성공하지 못하므로 Microsoft Exchange 정보 저장소 서비스를 다시 시작해야 합니다.

예를 들어, 실제 RAM이 2GB이고 Boot.ini 파일에서 /3GB 스위치를 사용하지 않는 Exchange 서버는 Store.exe 가상 주소 공간이 2GB에 도달할 경우 메모리를 모두 소모합니다. Windows 작업 관리자에는 실제로 약 1.5GB만 사용 중인 것으로 나타나지만 서버에서는 메모리 부족이 발생합니다. 성능 모니터링을 통해 가상 주소 사용량을 모니터링할 수 있습니다. 가상 공간을 정확히 읽을 수 있도록 Store.exe 프로세스에 대한 Virtual Bytes 카운터를 추가하십시오. Exchange 2000 프로세스 중 Store.exe 프로세스만 모니터링하면 됩니다. 다른 Exchange 2000 프로세스는 문제를 일으킬 정도로 커지지 않습니다.

/Userva 스위치 사용

/Userva 스위치를 사용하면 /3GB 스위치를 사용할 때 메모리 할당 방법을 사용자 지정할 수 있습니다. /Userva= 다음의 숫자는 각 프로세스에 할당되는 메모리의 양을 메가바이트(MB)로 나타냅니다. /3gb /Userva=3030을 설정하면 /3GB 스위치 하나만 사용할 때 3,072MB가 할당되는 것에 비해 프로세스 공간용으로 3,030MB의 메모리가 예약됩니다. /Userva=3030을 설정하는 경우 절약되는 42MB는 커널 메모리 공간, 사용 가능한 시스템 PTE(Page Table Entry)를 늘리는 데 사용됩니다. /3GB 스위치가 지정하는 3GB와 /Userva 스위치에 할당되는 값의 차이만큼 PTE 메모리 풀이 늘어납니다.

모든 Windows Server 2003 기반 서버를 Exchange Server를 실행하고 /3GB 스위치와 함께 /Userva=3030를 사용하도록 구성하는 것이 좋습니다. Windows Server 2003, Enterprise Edition이나 Windows Server 2003, Datacenter Edition을 설치한 후에는 Boot.ini 파일을 수정하여 시작 행에 /3GB 매개 변수와 /Userva=3030 매개 변수를 추가해야 합니다. 예를 들면 다음과 같습니다.

본 문서의 정보는 다음의 제품에 적용됩니다.
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Datacenter Edition
Microsoft Windows Server 2003, Standard Edition

 

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/05/29 06:44 2009/05/29 06:44