새로운 hotspot, UI 어플리케이션의 시작과 구동 성능 향상, 우분투 8.04와 레드햇 엔터프라이즈 리눅스 5.3 및
윈도우즈7 지원, 357개의 버그 픽스가 이루어진 sun java 6 update 18 가 출시되었습니다.
JavaSE 6 Update Release Note
엔터프라이즈 개발자가 특히 흥미를 가질만한것은 가비지 컬렉션의 성능 향상일듯합니다.
Garbage First(G1) 가비지 컬렉터( 드디어 experimental 딱지를 뗐습니다.)가 신뢰성과 성능에서 괄목할 만한
향상을 이루어 냈다는겁니다. 가비지 대상 수집 처리를 병렬화(Parallel Scavenger)하고 향상된 NUMA
( Non Uniform Memory Access ) 지원이 포함됩니다.
NUMA 아키텍처는 메모리에 액세스하는 방식 중 하나로 프로세스들은 서로 다른 메모리 영역에 엑세스하는데
동일하지 않은 시간을 소비하는 특징이 있습니다.
저도 이 방면으로는 겉핥기식의 지식 밖에 없습니다.
NUMA 모델을 이야기 하자면 UMA(Uniform Memory Accescc)모델을 우선 설명해야합니다.
NUMA, UMA하는 모델들은 컴퓨터의 병렬 프로세싱 관련된 내용으로 멀티 코어 프로세서가 메모리에
접근하는 방식을 설명하고 있습니다.
UMA 모델은 모든 프로세서가 버스를 통하여 주기억장치에 엑세스하며 각 프로세스는 주 기억장치의
어느영역이든 엑세스 할 수 있으며, 엑세스에 소비하는 시간은 동일한 특성을 보이지만 프로세서 수가 늘어날
수록 공유자원에 대한 경합이 높아지므로 프로세서 수를 늘여 성능을 올리는데 한계가 발생합니다.
NUMA는 UMA모델의 한계를 극복하기위한 모델로 다수의 UMA 모델이 전역 BUS를 통해 자원을 공유하게
됩니다. 때문에 메모리 엑세스 시간은 메모리의 위치에 따라 달라지는 특성이 있습니다.
아래는 텀즈 ( http://www.terms.co.kr/NUMA.htm ) 에서 인용한 NUMA의 뜻입니다.
NUMA[누마]는 멀티프로세싱 시스템에서 지역적으로는 메모리를 공유하며, 성능을 향상시키고,
시스템 확장성이 있도록 마이크로프로세서 클러스터를 구성하기 위한 방법이다. NUMA는 SMP 시스템에서
사용된다. SMP 시스템은 서로 밀접하게 결합되어, 모든 것을 공유하는 시스템으로서, 다중 프로세서들이
하나의 단일 운영체계 하에서 공통의 버스를 통해 각자의 메모리를 액세스한다. 보통, SMP의 한계는
마이크로프로세서가 추가됨에 따라, 공유 버스나 데이터 경로가 과중한 부하가 생기게 되어, 성능에
병목현상이 일어나는데 있다. NUMA는 몇 개의 마이크로프로세서들 간에 중간 단계의 공유메모리를
추가함으로써, 모든 데이터 액세스가 주버스 상에서 움직이지 않아도 되도록 한다.NUMA는 하나의 상자
속에 있는 클러스터로 생각할 수 있다. 클러스터는 대체로 마더보드 상의 하나의 공유 메모리 (L3 캐시라고도
부른다)로 향하는 로컬버스에, 서로 연결된 네 개의 마이크로프로세서들로 구성된다. 이 유니트는 모든
클러스터들을 서로 연결하는 공용 버스 내에서 SMP를 구성하기 위하여 비슷한 유니트에 추가될 수 있다.
이러한 시스템은 대체로 16~256개의 마이크로프로세서를 가지고 있다. SMP 시스템에서 실행되는
응용프로그램에게는, 모든 개별 프로세서 메모리들이 하나의 단일 메모리인 것처럼 비쳐진다.프로세서가
어떤 메모리 주소에 있는 데이터를 찾을 때, 그것은 마이크로프로세서 그 자체에 붙어 있는 L1 캐시를 먼저
찾은 다음, 근처에 있는 다소 큰 L2 캐시칩을 찾는다. 그 다음에는 다른 마이크로프로세서 인근에 있는 원격
메모리의 데이터를 찾기 전에, NUMA 구성에 의해 제공되는 제3의 캐시를 찾는다. NUMA에게는, 이러한
클러스터들 각각이 서로 연결된 네트웍 내에 있는 하나의 노드들 처럼 비쳐진다. NUMA는 모든 노드들 상에
있는 데이터를 계층 체계로 유지한다.
NUMA SMP 시스템의 클러스터들 사이에 있는 버스에서는 SCI (scalable coherent interface) 기술을
사용하여 데이터가 움직인다. SCI는 다중 클러스터의 노드에 걸쳐 캐시 일관성이라고 불리는 것과
대등하다.SMP와 NUMA 시스템은 대체로 공통의 데이터베이스 상에 집단적으로 작업하는 많은 수의
프로세서들에게, 작업 처리를 분담시킬 수 있는 데이터 마이닝과 의사결정 시스템 등과 같은 분야에 사용된다.
시퀀트, 데이터제너럴, NCR 등이 NUMA SMP 시스템을 생산하는 회사들이다.
대부분의 현대적인 컴퓨터는 이 NUMA 아키텍처에 기반하고 있습니다. Java HotSpot VM에서는 NUMA 를 이용
할 수 있는 시스템이라면 -XX:+UseNUMA 플래그를 통하여 병렬로 가비지 대상을 수집할 수 있습니다.
이 옵션의 효과는 꽤나 훌륭해서 8코어 옵테론 시스템에서 측정한 SPEC JBB 2005 ( http://www.spec.org/jbb2005/index.html )
벤치마킹에서 32비트에서 30%, 64비트에서 40%성능 향상이 있었습니다.
데스크탑 어플리케이션과 Web Start의 업데이트 주요 항목을 보고있자면 썬은 데스크탑과 RIA 마켓도
무시하지 않고 있음을 엿볼 수 있습니다.
( 개인적으로 java가 이 두 영역에서의 그다지 큰 영향력을 행사하지 못할것 같다는 생각을 하지만요..)
– 클라이언트 서버 양쪽 VM에 새로운 java heap configuration을 적용하여 가비지 컬렉션 성능 향상.
– 빠른 시작을 위한 클래스로딩 최적화.
– Direct 3D를 사용할 경우 시스템에 따라 100-200ms가량 어플리케이션 시작 시간 단축.
– JavaFX 어플리케이션의 warm start 시 15%가량 빠른 구동.
– Web Start와 애플릿의 jar파일의 동시 다운로드
– Java Web Start 스펙 JSR-056 을 6.0.18로 버전업하고 다수의 버그 픽스.
이 외에도 다음과 같은 변화를 포함
– jar 파일 생성시간 20% 단축
– JavaDB 버전 10.5.3으로 업데이트
– VisualVM 버전 1.2.1로 업데이트
– StaX(Streaming API for XML) 마이너 업데이트
이번 버전에 보안관련 버그 픽스 사항은 포함되지 않았습니만 이번 분기에 발표 할 다음번 업데이트에
포함될것으로 예상하고있습니다.
http://blog.sdnkorea.com/blog/504