Avatar billede europe Nybegynder
30. september 2003 - 08:55 Der er 11 kommentarer og
1 løsning

Hyperthreading på P4

Hejsa alle Java hajer

Vi har et program som egentlig kører fint på de "gamle" P4 processer fra Intel - men efter at have testet på en af de nye processore fra Intel, som kører hyperthreading, er programmet blevet langsom når der kommer cpu krævende dele i java'en...

Er der nogen der har en ide til hva' man kan gøre??
Avatar billede arne_v Ekspert
30. september 2003 - 09:56 #1
Tja - det er jo ikke ligefrem formålet med hyperthreading.

Spørgsmål:
  - er det kun Java programmer eller gælder det også f.eks. C++ programmer ?
  - gælder det alle Java programmer eller kun nogen ?
  - er programmet single elle rmulti threaded ?
Avatar billede europe Nybegynder
30. september 2003 - 10:12 #2
Svar
1. Har ikke lige nogle c++ programer som vi kan teste - eller det vil sige vi ved ikke af at vi har nogen....
2. Det gælder alle Java programmer når de skal lave noget der kræve en del cpu tid...
3. Programmet kører som en single thread.
Avatar billede arne_v Ekspert
30. september 2003 - 10:51 #3
Hvilken JVM ?

(ja undskyld de mange spørgsmål - men løsningen er ikke umiddelbar)
Avatar billede europe Nybegynder
30. september 2003 - 10:54 #4
Det er helt iorden - alt for at finde en løsning på problemet...

Vi bruger java 1.4.1
Avatar billede arne_v Ekspert
30. september 2003 - 11:05 #5
Når din app er singlethreaded så er det klart at den ikke kan
performe bedre. Men den burde jo sådan set heller
ikke performe dårligere.

Men der er en interessant artikel her:
http://www.sys-con.com/java/article.cfm?id=2163

Specielt i kommentarerne til sidst hvor der bl.a står følgende
(kun uddrag - læs selv det hele):

I've been working on my own benchmark for Java and C# for few months. The first version was for Java only. When I developed the second (portable) version for Java and C#, then ran it on W2k and Linux, I found the strange thing: Java was twice slower than C# in one of the tests. It took me a while to realize that the problem was with HT. I had HT switched on on my Xeon-powered server. My benchmark is SINGLE-threaded.

True, HT is not always good. Given the nature of SMT, it is anticipated that compute intensive single threaded applications will see some potential performance degredation. A 2x change seems suspect however -- where all other test parameters invariant?

My guess is that the OS was scheduling the idle task on the 2nd logical CPU blowing the L1 cache out from under the benchmark running on the other logical processor. And the benchmark was compact and fit completely within L1 cache. The difference in speed between L1 --> L2 --> (possible L3) --> main memory is easily a factor of 2 or more.
Avatar billede europe Nybegynder
30. september 2003 - 11:53 #6
Det står i artiklen at - der er en bedre performance med IBM's jvm, det er godt tale om en linux maskine, men det kunne vel ikke skade at prøve det på W2K. Jeg har nu prøvet at lede efter den på nettet men uden held. Du skulle vel ikke lige vide hvor man kan finde den ?

Ellers vil jeg sige man tak for indsatsen - det lader til at man må slå HT fra når man kører en java application - sådan at den kun kører på den en processor...
Avatar billede arne_v Ekspert
30. september 2003 - 11:58 #7
Eller skriv din applikation om til at være multithreaded og udnyt HT !
Avatar billede arne_v Ekspert
30. september 2003 - 11:59 #8
Avatar billede europe Nybegynder
01. oktober 2003 - 08:32 #9
arne_v hvis du lige smider et svar kan jeg få spørgsmålet lukket...
Der er hvis ikke nogen nem løsning udover at vi må kigge lidt på koden, som du foreslog.
Da det viser sig at den jdk der ligger i IBM's er en 1.3 og den kan vi ikke bruge da vi udnytter nogle af de nye ting i jdk 1.4.1...
Avatar billede arne_v Ekspert
01. oktober 2003 - 08:35 #10
svar
Avatar billede arne_v Ekspert
01. oktober 2003 - 08:38 #11
1.4.1 må også være der et eller andet sted.
Avatar billede europe Nybegynder
01. oktober 2003 - 10:29 #12
Har hentet 1.4.2 fra Sun og det ser ud til, at de har optimeret denne jdk version til at kører med hyperthreading... Så det er jo helt fjong...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester