본문 바로가기

Windows Platform

프로세스가 사용 가능한 메모리 설정 /3gb /userva

32bit Windows OS에서 실행 중인 프로세스가 사용 할 수 있는 최대 메모리는 2G입니다.그러나 간혹 /3gb나 /userva 옵션을 사용하여 프로스세가 사용 할 수 있는 메모리를 2~3G까지 설정하는데 실제 프로세스가 그런 옵션들을 설정 했을 경우 정상적으로 OS로부터 메모리를 할당 받는지 확인 해 보았습니다.

1년전에 고갱님들께 전달 했던 내용인데 오늘 다른 곳에서 문의가 있어서 다시 정리 해 봅니다.

/3GB 매개 변수 란?
32비트 버전의 Windows에서 /3GB 매개 변수는 사용자 모드 가상 주소 공간을 3GB로 확장하고 커널 모드 구성 요소를 나머지 1GB로 제한하는 4GB(기가바이트) RAM 조정 기능을 활성화합니다.

Windows 32비트 운영 체제의 가상 메모리
4GB RAM(Random Access Memory) 조정 기능과 PAE(Physical Address Extension) 매개 변수가 메모리 할당을 변경하는 방식을 이해하기 전에 먼저 Windows 32비트 운영 체제에서 가상 메모리가 작동하는 방식을 살펴 보는 것이 도움이 됩니다. Windows 32비트 운영 체제에서 가상 메모리가 작동하는 방식에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
메모리 관리 101
http://blogs.technet.com/askperf/archive/2007/02/23/memory-management-101.aspx

[/3GB 옵션이 없는 경우]
아래 포스팅을 보면 boot.ini에서 3gb옵션을 설정하지 않을 경우 프로세스가 사용할 수 있는 메모리는 최대 2G이며 확인 할 수 있는 방법을 설명해 놓았습니다.

우선 3GB 옵션이 없는 경우 process 가 사용 가능한 최대 메모리는 2G 이며 testlimit이라는 프로세스에 2G 이상의 메모리를 할당 할 경우 사용 가능한 저장소가 부족하다는 메시지와 함께 정상적으로 프로그램이 실행 안됨을 확인 하였습니다.

최대 2028MB 까지 메모리를 사용 할 수 있습니다.

프로세스의 사용 가능한 최대 메모리 확인 방법
http://ryuchan.kr/277

/3bg가 없을 경우 위 포스팅에서 소개한 스크립트나 wmic 커멘드를 이용하면 프로세스가 사용할 수 있는 최대 메모리를 확인 할 수 있으며

 

sysinternals에서 제공하는 testlimit 이라는 유틸을 이용해서 해당 프로세스가 2G 넘는 메모리를 사용 하도록 설정 하면 "사용 가능한 저장소가 부족하여 이 명령을 처리 할 수 없다" 라는 메시지가 뜬다.

 

 

 

 

  

[/3GB, /USERVA=2500 설정 시]

boot.ini에  /3GB /Userva 옵션 할 당 후 tastlimit을 실행 할 경우 아래와 같이 2.2G 이상에서도 프로그램이 정상적으로 실행 중임을 확인 할 수 있습니다.


 

 

 

 

[참고 자료]
4GB RAM 조정 기능 및 실제 주소 확장(PAE) 매개 변수에 대한 설명
http://support.microsoft.com/kb/291988

/userva 스위치를 /3GB 스위치와 함께 사용해서 사용자 모드 공간을 2GB에서 3GB 사이의 값으로 조정하는 방법http://support.microsoft.com/kb/316739/ko

프로세스의 사용 가능한 최대 메모리 확인 방법
http://ryuchan.kr/277

감사합니다.

태그