2014-11-10 6 views
1

에 내가 코드 조각은 다음과 같습니다대규모 성능 손실 AIX 7

 List<Long> array = new ArrayList<>(); 
     for (int i = 0; i < 30000; i++) 
     { 
      array.add(Long.valueOf(i)); 
     } 
     for (int j = 0; j < 30000; j++) 
     { 
      for (int i = 0; i < 30000 - j; i++) 
      { 
       array.set(i, array.get(i) + j); 
      } 
     } 

나는 그것을 컴파일하고 (내 로컬 컴퓨터에 오라클 JVM에서 JRE 1.7_0_71를 실행, 윈도우 7 64 비트, 4 코어, 8GB RAM), 3,5 초 정도 실행됩니다.

1.run: 3446ms 
2.run: 3485ms 
3.run: 3546ms 
4.run: 3721ms 
5.run: 3573ms 

내가 IBM JVM과 (POWER7 +, 16 개 코어, 64기가바이트 RAM) AIX 시스템에서 실행

(pap6470_27sr2-20141101_01를 구축, J9, 자바 7 (SR2))는, 내가 실행 당 거의 9S에서 결과를 얻을 수 있습니다.

1.run: 8518ms 
2.run: 8548ms 
3.run: 8499ms 
4.run: 8486ms 
5.run: 9235ms 

어디에서 잡을 수 있습니까?

+0

다른 컴퓨터에서 사용해 보셨나요? 당신은 격리 모드로 시도 했습니까? –

+0

여러 대의 aix 기계에서 시험해 보았는데 모든 결과가 매우 좋지 않았습니다. 또한 C로 작성된 코드로 유사한 테스트를 수행했으며 AIX에서 더 빠릅니다. 일부 JVM 옵션 일 수 있습니까? 또는 일부 AIX 설정? 격리 모드를 얼마나 정확하게 의미합니까? 거의 모든 것이 실행시 서버에서 실행 중이었습니다. – Uhla

+0

developers.ibm.com 및 해당 버그 목록에 게시 할 수 있습니까? 어쩌면 그들은이 문제를 해결했거나 동일한 문제가있을 수 있습니다. 우리는 dev에있는 우리의 제품에 IBM JVM java7을 사용하기 때문에. 그래서 저는 앞으로이 문제를 피하고 싶습니다. 미리 감사드립니다 :) –

답변

1

3 가지 문제가 있습니다.

  1. 귀하의 프로세서 아키텍처
  2. 운영 체제 선택
  3. 귀하의 JVM 제공이의

,이 경우에 가장 큰 영향 루프 정말 저조한 실적을 가지고있는 IBM JRE 될 것입니다. 파일 작업을하고 있었습니까? 운영 체제로 인해 속도가 느린 것을 알 수 있습니다. 이 조합에는 속도 저하의 원인이 많이 있습니다. 가장 좋은 방법은 x86, Linux 및 Oracle로 이동하는 것입니다.

0

우리는 Dynatrace를 사용하여 매우 자세한 분석을 수행했으며 Windows의 IBM JDK가 AIX에서 동일한 IBM JDK 릴리스보다 성능이 월등히 뛰어남을 확인했습니다.

는 일부 현실 세계에
  • 20 ~ 30 %는 JDK에서 이동하여 다른 사람에
  • 50 % ~ 100 % 몇 가지 벤치 마크

우리는 AIX에 상당한 개선을 얻었 는가에

  • 5-6x을 테스트 1.6 내지 1.7. 연구는 V8이 약간의 속도를 늦추고 있음을 나타냅니다.

    소요 된 시간은 실제 CPU 시간 인 것 같습니다. AIX의 IBM JDK는 같은 양의 작업을 수행하기 위해 더 열심히 노력하는 것처럼 보입니다.