싱글코어에서 실행이 되던 자바 프로그램이 멀티코어에서 에러가 발생합니다.

phonon의 이미지

어디에 올려야 할지 분류가 애매해서 자게에 올려 봅니다.

RMI를 이용해서 WebSphere(IBM AIX 5상에서 운영)에서
데이터를 받아와서 CSV화일로 저장하는 자바applet이 있습니다.

시스템이 개발된지 오래 된 것도 있지만 MS Java VM를
클라이언트인 Windows xp Sp2에 설치해서 운영 중 입니다.

현재는 멀티코어의 PC나 노트북을 싱글커널로 설정해서 사용하고 있습니다.
MS Java VM를 Java 1.6.20으로 전환도 필요하지만,
멀티 코어에서 에러가 발생하는 원인이 무엇인지에 대해서 여러분들의 의견과 도움을 구합니다.

PS)
MS Java VM를 설치한 PC를 옆에 두고 비교하면서
테스트를 Java 1.6.20의 듀얼코어 PC에서 해 보았습니다.

1998년에 VisualAge for Java로 개발되었으며,
아래의 것들을 import에서 사용하고 있습니다.
com.ibm.webrunner.widget.*;
com.ibm.webrunner.widget.event.*;

지리즈의 이미지

참고로...
C/C++ 프로그램이 Hyperthread에서 오동작(오류는 아님)하는 것은 봤습니다.

There is no spoon. Neo from the Matrix 1999.

There is no spoon. Neo from the Matrix 1999.

phonon의 이미지

의심이 가는 부분은 Applet의 버튼을 클릭하면,
내부에서 event를 받나서 RMI로 서버에 데이터를 요청해서 받는 부분인 것 같습니다.
CallBack이 이루는 부분에서 single-core에서는 기다리고 받기만 하는 부분이,
multi-core에서는 무슨 이유인지 어긋나는 것 같습니다.

버튼은 com.ibm.webrunner.widget에 존재하는 class입니다.
그리고, event class는 com.ibm.webrunner.widget.evnet에 존재합니다.

상당히 난감한 상황입니다만, 오래된 프로젝트인 관계로 소스와 레퍼런스가 없습니다.
이쪽에 경험이 있으신 분들은 계신가요?

siabard의 이미지

MSJVM이 Dual Core나 Quad Core에서 문제를 일으킬 수도 있습니다. Sun의 JRE나 다른 JVM으로 교체해서 이용해보십시오.

JVM버전이 너무 낮은 경우에 다중코어 관련해서 문제가 생길 수 있습니다. 쓰레드나 이벤트 배정에 대해서 JVM에서 정리한 방식을 OS에서 Cpu Core에 할당하는 과정에서 오류가 발생할 수 있다고 합니다.

자바 관련된 제품을 써보면서 느낀 점은, 돌아가던 플랫폼을 그대로 유지하는게 최선이다라는 것이었습니다. 오래전 제품은 현재 하드웨어와 충돌나는 일이 있어서, 그냥 연식(?)맞춰서 운영하는게 편합니다.

--
새로움을 느끼기에 삶은 즐겁다..
모험가 아돌 크리스틴을 꿈꾸며..
Sia..

새로움을 느끼기에 삶은 즐겁다..
모험가 아돌 크리스틴을 꿈꾸며..
Sia..

phonon의 이미지

양쪽 모두 multi-core상에서 동일한 에러를 발생시키고 있습니다.
그리고, MSJVM쪽이 SunJRE보다 메모리 점유가 적어 보이는군요.
(GC의 동작이 다른 것은 알지만...)

일단은 UI관련 class가 오래 전에 개발이 되어서 문제가 발생하는 것 같습니다.
선이나 글자의 위치등이 조금 어긋나 보이는 것도 있는 듯해서,
JDK1.6에서 수정해서 재컴파일을 해야 될 것 같습니다.

이 정도의 수정으로 문제가 없어지는가 의문이 듭니다.
더구나, com.ibm.webrunner.widget의 소스는 없습니다.
Decompile를 해도 될까요?