/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Trådning og synkronisering: 1.4.2
Fra : Kasper G. Christense~


Dato : 10-03-05 07:48

Hej

Jeg har siddet og eksperimenteret lidt med at se på overhead forbundet
med at benytte flere (mange) tråde.

Jeg har skrevet et lille testprogram, der udfører nogle beregninger et
fastsat antal gange vha. et fastsat antal tråde, således at når en tråd
er færdig med en beregning, tæller den en tæller op, og går i gang med
den næste beregning, hvis ikke det givne antal beregninger er nået.
Programmet tager tid på hvor længe det tager ialt at udføre f.eks. 1000
beregninger. Jeg kører så testprogrammet med forskelligt antal tråde
(p.t. 1 - 100).

Under Suns jdk 1.4.2 fik jeg en tilsyneladende linært voksende
sammenhæng mellem tidsforbrug og antal tråde - altså et udtryk for at
overheaded vokser lineært med antal tråde. Det lyder vel ikke helt
urimeligt? Nu er jeg så "kommet til" at installere jdk 1.5, og nu er der
pludselig ikke længere nogen entydig tendens. For antal tråde 1 til ca.
75 tager omtrentligt lige lang tid (tiden svinger lidt fra kørsel til
kørsel, men det kan jo skyldes så meget - der er ikke en entydig
tidsforøgelse), derpå er der et spring opad, og resten af kørslerne op
til 100 tråde er igen omtrentligt ækvivalente i tidsforbrug.

Er der nogen af jer der har et godt bud på hvad denne forskel kan
skyldes? Er der lavet nogle ændringer fra 1.4.2 til 1.5 mht.
threadperformance, f.eks. ændringer i skeduleringsalgoritmen eller
ændringer der gør synkronisering "billigere"? Jeg har ikke ændret kode,
blot kompileret og kørt under de to forskellige versioner.

Jeg kører under Linux RedHat 9, men overvejer at komme i nærheden af en
Windowsmaskine og gentage eksperimentet.

Mvh. Kasper

 
 
Ian Johannesen (10-03-2005)
Kommentar
Fra : Ian Johannesen


Dato : 10-03-05 19:36

Hej,

Kasper G. Christensen wrote:
[snip]
> Er der nogen af jer der har et godt bud på hvad denne forskel kan
> skyldes? Er der lavet nogle ændringer fra 1.4.2 til 1.5 mht.
> threadperformance, f.eks. ændringer i skeduleringsalgoritmen eller
> ændringer der gør synkronisering "billigere"? Jeg har ikke ændret kode,
> blot kompileret og kørt under de to forskellige versioner.

I 1.4.2 JVM'en var der en mulighed for at definere om man ville bruge T1
libthreads eller T2 libthreads (grundet Solaris 9 fik en ny
implementation, som man valgte at kalde "T2"). Udover dette har de i 5.0
omskrevet en stor del af dette, som begyndte med version 1.4.2 af
JVM'en. Så hvis du benytter bestemte prioriteter kan dette betyde at
dine threads køres anderledes end de gjorde på 1.4.2.

Du kan eventuelt læse om det på URL'en:
http://java.sun.com/j2se/1.5.0/docs/guide/vm/thread-priorities.html

Det er ihvertfald mit gæt at du på en eller anden måde mærker denne
ændring i form af mindre kostpris på nogle af dine kald.

--
Ian Johannesen
http://perlpimp.dk

Kasper G. Christense~ (14-03-2005)
Kommentar
Fra : Kasper G. Christense~


Dato : 14-03-05 07:45

Tak for input

> I 1.4.2 JVM'en var der en mulighed for at definere om man ville bruge
> T1 libthreads eller T2 libthreads (grundet Solaris 9 fik en ny
> implementation, som man valgte at kalde "T2").

Men nu kører jeg ikke på Solaris, så det er vel næppe relevant i min
situation?

> Udover dette har de i 5.0 omskrevet en stor del af dette, som
> begyndte med version 1.4.2 af JVM'en. Så hvis du benytter bestemte
> prioriteter kan dette betyde at dine threads køres anderledes end de
> gjorde på 1.4.2.

Jeg benytter ikke prioriteter (eller dvs. jeg ændrer ikke selv
prioriteten, så den er "NORMAL").

> Det er ihvertfald mit gæt at du på en eller anden måde mærker denne
> ændring i form af mindre kostpris på nogle af dine kald.

Tja, en eller anden ændring, der betyder at trådningen bliver
"billigere" mærker jeg i hvert fald. Findes der en "changelog" for
jdk/jvm et eller andet sted?

Mvh. Kasper

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409075
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste