여기 저기 자료를 찾아보면 레지스트리 최적화 캐쉬메모리 IoPageLockLimit 셋팅이 틀리다.. 과연 어떤말이 맞는 말인가? 크게 다음 2가지로 요약되는데 그 차이는 어마어마 하다. 시스템속도에 엄청난 영향을 미치는 부분인데 어느것이 맞는지 확실히 해둘필요가 있겠다.

가장기본적으로는 아래 마이크로소프트의 아래부분이 기본이 되어야 겠다.

http://www.microsoft.com/windows2000/techinfo/reskit/en-us/default.asp?url=/windows2000/techinfo/reskit/en-us/regentry/29932.asp

참고 해서 판단해 보세요.

512메가를 기준으로 생각해보면
1의방법은 16진수로 40,000===> 10진수로 환산하면 262,144
2의방법은 10진수로 67,108,864 이다. 300배의 차이가 발생한다. 어느것이 맞는 말일까?

여러분의 생각을 들어보고 싶어서 글을 올립니다. 답변 부탁드립니다.


1.

레지스트리 편집기를 보니깐 마치 윈도우탐색기 처럼 생겼네요
윈도우탐색기에서 폴더사이를 왔다갔다하고 폴더안에 들어있는 파일을보는것이라고
생각하시면 쉽게 하실수 있습니다
레지스트리편집기의 좌측에는 폴더가 우측에는 선택된폴더안에 들어있는 파일과 폴더들이 표시됩니다
(이해를 돕기위해서 파일과 폴더라는 용어를 사용하였습니다)
그럼 레지스트리 편집을 해봅시다
1.좌측의 폴더트리에서 아래의 순서대로 하위폴더로 이동하십시요

HKEY_LOCAL_MACHINE
↓↓↓↓↓↓↓↓
SYSTEM
↓↓↓↓↓↓↓↓
CurrentControlSet
↓↓↓↓↓↓↓↓
Control
↓↓↓↓↓↓↓↓
Session Manager
↓↓↓↓↓↓↓↓
Memory Management

2.Memory Management를 클릭하면 우측에 몇개의 파일들이 보일것입니다.
그럼 파일이 없는 빈공간흰곳 아무대나 마우스커서를 올려놓고 오른쪽클릭을 합니다.
오른쪽클릭을하면 하위메뉴가 나옵니다 하위메뉴에서
새로만들기 -> DWORD값을 선택합니다
마우스 오른쪽 버튼 클릭하여 새로만들기->DWORD값을 선택한다.
그럼 파일이름을 입력하게됩니다
파일이름은 : IoPageLockLimit 라고 입력합니다
(반드시!!!반드시!!!대소문자를 정확히!! 구분해야합니다)

3.키값입력하기
파일이름을 IoPageLockLimit 라고 지정해줬으면
아까 만든 그파일 IoPageLockLimit 을 더블클릭합니다
오른쪽의 옵션버튼은 `16진수`를 선택합니다
그리고 왼쪽의 택스트박스에는 아래와 같이 입력합니다

램이 64MB 일때는 : 1000
램이 128MB 일때는 : 4000
램이 256MB 일때는 : 10000 (램이 256MB이니 10000 이라고 입력하세요)
램이 384MB 일때는 : 22000
램이 512M 이거나 그보다 높을때는 : 40000


=======================================================================================

2.
● "IoPageLockLimit" 총정리
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management \IoPageLockLimit 값이 디스크 캐쉬 용도? 과연 그럴까요?

1)
IoPageLockLimit 값의 단위는?
우선 마이크로소프트사 사이트에서 "IoPageLockLimit"를 검색해보면 분명 단위가 "bytes" 라고 되어 있다.

2)
IoPageLockLimit 값의 최대 설정 크기는?
- 64MB 미만일 경우엔 “Memory Size = -7MB”
- 64MB ~ 500MB 일 경우엔 “Memory Size = -16MB”
- 500MB 이상일 경우엔 “Memory Size = -64MB”
그러므로, RAM용량이 256MB 인 경우엔 240MB까지 설정가능

3)
IoPageLockLimit 값은 무엇에 쓰이는가?
코리아인터넷닷컴의 게시물을 인용해보면 이 값은 "특정시간에 물리적인 메모리에서 잠금이 될 수 있는 응용 프로그램메모리의 최대량을 나타낸다"라고 나와 있다. (http://korea.internet.com/channel/content.asp?kid=10&nid=17000&cid=112)
이 말은 프로그램에서 파일을 저장 시 하드디스크에 읽고 쓸 데이터에 Lock을 걸 수 있는 최대 크기라는 것이다. (플로피디스크의 경우도 그렇고 랜카드, 프린터 등 모든 하드웨어 장치에 입출력 할 때 사용되는 값이다.)


예를 들어, 메모장에 "abcdefg....z" 라고 쓰여 있을 때 저장하기를 누르게 되면 하드디스크에 저장이 되는데 저장 도중(매우 짧은 시간이지만)에 다른 프로그램에서 데이터를 바꿀 수도 있다. 만약 데이터를 바꿀 수 있다면 어떻게 될까? 메모리의 같은 공간에 읽기와 쓰기가 동시에 일어난다. 데이터가 엉망이 될 것이다. 또한 이 경우 메모리에 있는 데이터를 읽는 데에도 시간이 더 걸린다. 그래서 Lock을 거는 것이다.


그런데 만약 이 값이 너무 작게 설정되어 있다면 어떨까?
16384(16KB)로 설정되어 있는 경우 한번에 16KB까지 락을 건다.
그런데 메모리에 저장되어 있는 10MB짜리 데이터를 하드에 쓸 경우 우선 맨 앞쪽의 16KB에 Lock을 한 후, 해당 데이터를 하드에 저장한 후 UnLock을 한다. 이 과정을 계속해서 반복하게 되는데 무려 640번을 반복해야 한다. 반면 16777216(16MB)로 설정된 경우 1번만 반복하면 된다.

4)
디스크 캐쉬는 어떤 값으로 설정할까?
디스크 캐쉬는 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ Memory Management 아래에 있는 "LargeSystemCache"라는 값이 담당하고 있다.


값을 보면 Windows XP, Windows 2000 Pro의 경우 0, Windows 2000 Server의 경우 1로 설정되어 있다.
▶ 0의 경우 RAM용량 -8MB까지 캐쉬로 사용하고 1000개의 파일까지 캐쉬한다.
▶ 1은 RAM용량 -4MB까지 캐쉬로 사용하고 250개의 파일까지 캐쉬한다.
이 설정은 웬만하면 바꾸지 않는 것이 낳을 듯 싶다. Server의 경우 개인적인 용도로 사용한다면 0으로 고치는 것도 괜찮을 듯 싶다.

5)
IoPageLockLimit 값의 최상 값은?
다시 IoPageLockLimit 값으로 돌아가서 실제 적용할 수 있는 크기는 RAM용량/8로 설정하면 된다. 즉, 다음과 같이 10진수 값으로 설정하면 된다.

32MB= 4194304
64MB= 8388608
128MB= 16777216
192MB= 25165824
256MB= 33554432
384MB= 50331648
512MB= 67108864


참고)
DisablePagingExecutive 값은 1로 하는 것이 좋은가?
우선 이 값은 널리 알려진 대로 "Drivers and the kernel 을 실제 메모리상에만 존재하게 하느냐, 아니면 가상메모리상에 Paging 하느냐"를 설정하는 값인데 0으로 할 경우에는 Paging 되고, 1로 하면 실제 메모리상에만 존재하게 된다. 빠른 속도를 위해선 1로 설정하는 것이 좋다.

2006/05/13 17:16 2006/05/13 17:16

덧글을 달아 주세요