adsense(728_90)


64bit OS에선 64bit 용 JVM을 사용해야하는가? Programming

요새는 개인사용자들도 64bit OS를 사용하는 시대가 되었다. 메모리가격이 싸졌으니 한번 쯤 사용해보고 싶은 마음에 사용하는 듯하다. 개인pc용 OS마저도 슬슬 64bit가 쓰이는 시대이니 유닉스급 서버는 이미 오래전부터 64bit를 지원하고 있다.
그러다보니 기업 고객으로부터 왜 유닉스 머신은 64bit OS를 쓰는데 자바 미들웨어는 64bit를 쓰지 않느냐면서 극구 64bit 기반 자바 미들웨어를 사용해야겠다는 경우가 종종 있다.
그런데 과연 64bit OS는 무조건 좋은가?
결론은 아니다.

오히려 일반 애플리케이션을 64bitOS에서 실행할 때 기존의 32bit용 애플리케이션이 아닌 64bit용 애플리케이션을 사용하면 필요한 메모리는 32bit용 애플리케이션의 2배가 된다. 과거에 비해 물리적으로 필요한 메모리가 2배인데 그것을 물리적으로 지원하는 머신이 아직 충분하지 못하다.
그래서 64bit OS에서도 32bit 애플리케이션을 실행하는 이유가 그것이다.
그런데 이렇게 반문할 것이다. 메모리를 그만큼 많이 설치하고 있으면 문제가 없지 않은가?
그것이 그럴 것 같지만 또 그렇지 못한 것이,
CPU 프로세서가 사용하는 메모리 캐시의 크기가 실제로 32bit시절에 비해 그렇게 크게 늘어나지 않았다는 것이다. 때문에 성능의 측면에서는 결코 64bit OS가 32bit OS를 따라오기가 쉽지 않다.
물론 대량의 DB 캐시를 필요로 하는 애플리케이션같은 경우에는 32bit OS에 비하여 훨씬 캐시할 수 있는 능력을 많이 가질 수 있으므로 유리하고 때문에 특수한 경우에는 더 좋은 성능을 발휘할 수 있겠지만 보통의 경우는 32bit 애플리케이션에 비해 떨어지는 것이 사실이다.


덧글

  • 조대협 2008/10/13 17:32 # 삭제 답글

    캐쉬 문제들이 문제라기 보다는..
    대용량 Heap Size를 사용했을때 Full GC 시간이 문제가 아닐까요?
    CMS(Concurrent Mark & Sweep)을 사용하더라도 Full GC는 한번씩 발생해야 할것이고...
    32bit에서 지원하는 JVM의 최대 Heap 용량이 2G라면 (2^32 에서 User 영역이 2G를 감안)할때.. 2^64 면 상당히 큰 크기인데.. 좀더 효과적인 Full GC 알고리즘이 나오지 않는 이상 힘들지 않을까요?

  • Yozz 2008/10/13 17:48 # 답글

    안녕하세용~ 흐흐 Full GC문제도 아직 더 해결해야할 '문제' 부분이죵.
    근데 그냥 단순히 벤치마크 테스트에서의 성능 그 자체만을 보았을 때에도 역시나 64Bit OS가 32bit OS에 비해 좋을 수 없는 것을 이 포스트에서는 설명하고 싶었답니다.
    실제로 테스트를 해보면 Full GC없이 해서 테스트해볼 경우 32bit JVM에 비하여.. 아무리 성능을 비슷하게 맞추려고 해도 살짝.. 3-5%정도는 떨어지는 것을 볼 수가 있더군요.
댓글 입력 영역


Google Analytics