리눅스 커널에서 4GB 이상의 메모리를 인식시키기 위해서
HIGH MEMORY option 을 쓰는 것으로 알고 있습니다.
근데 이것을 ON 시키면 성능이 저하되나요?
예를 들어 대용량의 트래픽 처리나 데이터 처리 등등...
구글링 해보니 성능이 저하된다고 말하는데,
왜 성능저하가 일어나는지 모르겠습니다.
고수님들의 많은 조언 부탁드립니다.
32비트 시스템에서
32비트 어드레싱 -> 32비트 변수 한개로 어드레싱 가능
36비트 어드레싱 -> 32비트 + 4비트 두개 변수로 어드레싱 가능
쉽게는 머 이런식이에요...
엄밀히 얘기하면 PAE 라고 해서 CPU 의 연산기능을 이용해서 주소를 확장하여 사용하는 기능인데요,
역시 CPU 자원을 4기가 이후의 메모리 계산에 할당해줘야 하기때문에 발생 할 수 있는 성능이슈이고,
아무리 4기가 이상 메모리확장을 한다고 해도 커널 자체에서 사용 할 수 있는 Lowmemory 는 1기가 이내 (839M정도)
에서 해결이 되야하므로 PTE 등의 영역이 중요한 커널 영역을 많이 차지하게 되며, slab 이나 파일 핸들링에 들어가는
영역이 늘어나게 되므로 결국엔 Low memory 의 부족을 야기시켜 잦은 kswap 과 overcommit 이 발생될 확률이
높아지니까, 당연히 시스템 장애나 성능저하를 일으킬 수 있는 확률도 증가하겠지요...
16기가 이상을 사용하게 될 경우 64비트가 진리임....
PAE 기능을 사용해도 결국엔 커널에서 locate,reserve 되는 메모리는 딱 1기가영역뿐임. (32비트 아키텍쳐)
내 마음속의 악마가 자꾸만 나를 부추겨. 늘 해왔던 것에 만족하지 말고 뭔가 불가능해 보이는 것을 하라고 말야.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
....
32비트 시스템에서
32비트 어드레싱 -> 32비트 변수 한개로 어드레싱 가능
36비트 어드레싱 -> 32비트 + 4비트 두개 변수로 어드레싱 가능
쉽게는 머 이런식이에요...
엄밀히 얘기하면 PAE 라고 해서 CPU 의
엄밀히 얘기하면 PAE 라고 해서 CPU 의 연산기능을 이용해서 주소를 확장하여 사용하는 기능인데요,
역시 CPU 자원을 4기가 이후의 메모리 계산에 할당해줘야 하기때문에 발생 할 수 있는 성능이슈이고,
아무리 4기가 이상 메모리확장을 한다고 해도 커널 자체에서 사용 할 수 있는 Lowmemory 는 1기가 이내 (839M정도)
에서 해결이 되야하므로 PTE 등의 영역이 중요한 커널 영역을 많이 차지하게 되며, slab 이나 파일 핸들링에 들어가는
영역이 늘어나게 되므로 결국엔 Low memory 의 부족을 야기시켜 잦은 kswap 과 overcommit 이 발생될 확률이
높아지니까, 당연히 시스템 장애나 성능저하를 일으킬 수 있는 확률도 증가하겠지요...
16기가 이상을 사용하게 될 경우 64비트가 진리임....
PAE 기능을 사용해도 결국엔 커널에서 locate,reserve 되는 메모리는 딱 1기가영역뿐임. (32비트 아키텍쳐)
내 마음속의 악마가 자꾸만 나를 부추겨.
늘 해왔던 것에 만족하지 말고 뭔가 불가능해 보이는 것을 하라고 말야.
댓글 달기