Was bringt DualCore? - Druckversion
+- FB18.de - Das Informatikforum ( /mybb ) +-- Forum: Off-Topic ( /forumdisplay.php?fid=115 ) +--- Forum: Allgemeines ( /forumdisplay.php?fid=7 ) +--- Thema: Was bringt DualCore? ( /showthread.php?tid=3609 ) |
Was bringt DualCore? - Fred - 27.12.2006 12:25 Bin am überlegen, ob ich mir demnächst ein DualCore-System zulegen soll. Hab zu dem Zweck mal ein kleines Java-Programm geschrieben, welches den Performance-Boost ermittelt. Könnte jemand mit DualCore-CPU und Java6 so lieb sein, das einmal für mich durchzutesten? zum Download Mein Ergebnis:
Zitat:
F:\>java -jar dualcore.jar
sorting 7500000 elements using quicksort one thread: 734 ms two threads: 769 ms performance boost using two threads: -5%
Re: Was bringt DualCore? - DJ-SilVerStaR - 27.12.2006 13:05 System: SONY VGN-FE11h (CoreDuo T2300 [1,66Ghz]) ( http://vaio.sony-europe.com/view/View.action?section=Products_ITE &productcategory=%2FComputing%2FVAIO+Notebooks%2FVN+Previous+Models%2FPM+FE+S eries &productmodel=%2FComputing%2FVAIO+Notebooks%2FVN+Previous+Models%2FPM+FE+Seri es%2FVGN-FE11H &productsku=VGNFE11H.G4&site=ite_de_DE&page=ProductTechnicalFeatures) [edit fal: http://tinyurl.com/yjpp2s -- besser tiny als zerschossenes Layout :)]
Code:
P:\>java -jar dualcore.jar
Re: Was bringt DualCore? - Fred - 27.12.2006 13:30 Hm, das ist ja merkwürdig. Streng genommen lief das Programm sogar mit drei Threads (der Hauptthread hat zwei weitere Threads erstellt und dann auf deren Terminierung gewartet), vielleicht liegt's ja daran? Hab das Programm mal so modifiziert, dass nur ein weiterer Thread gestartet wird und der Hauptthread selber aktiv rechnet. Ändert das was an der Situation? Oder verstehe ich irgendwas was an DualCore nicht?
Zitat:
F:\>java -jar dualcore1326.jar
sorting 7500000 elements using quicksort one thread: 782 ms two threads: 816 ms performance boost using two threads: -5%
Code:
F:\>java -server -Xms128m -Xmx128m -jar dualcore1326.jar
Re: Was bringt DualCore? - Brokkoli - 27.12.2006 18:02
Zitat:
Y:\>java -jar dualcore1326.jar
sorting 7500000 elements using quicksort one thread: 351 ms two threads: 366 ms performance boost using two threads: -5%
Re: Was bringt DualCore? - bono - 27.12.2006 18:19 Meine Erfahrung sagt, dass Dual-Core-Prozessoren vor allem bei Multitasking schneller sind. Inzwischen gibt es aber auch genügend Software, die zwei Kerne ausnutzen kann, beispielsweise Videocodecs wie x264, die man auf threaded stellen kann. Bei Java bin ich mir da nicht so sicher, ob das überhaupt so gut mit mehreren Kernen funktioniert. Bei vielen Anwendungen bringen mehrere Kerne auch Nachteile, gerade bei Spielen sind schnelle Singlecores besser. Re: Was bringt DualCore? - Brokkoli - 27.12.2006 18:35
Zitat:
Meine Erfahrung sagt, dass Dual-Core-Prozessoren vor allem bei Multitasking schneller sind.
Zitat:
Inzwischen gibt es aber auch genügend Software, die zwei Kerne ausnutzen kann, beispielsweise Videocodecs wie x264, die man auf threaded stellen kann. Bei Java bin ich mir da nicht so sicher, ob das überhaupt so gut mit mehreren Kernen funktioniert.
Zitat:
Bei vielen Anwendungen bringen mehrere Kerne auch Nachteile, gerade bei Spielen sind schnelle Singlecores besser.
Re: Was bringt DualCore? - Brokkoli - 27.12.2006 18:41 mal ein (sehr sinnloses) testprogramm von mir:
Code:
public class MPTest extends Thread
Re: Was bringt DualCore? - garou - 27.12.2006 18:44 Ohne mich an Dieter Nuhr zu halten würde ich mal empfehlen, auch in der single-thread-Version einen zweiten thread zu erzeugen, da AFAIK eben diese thread-Erstellung in Java recht teuer ist. Re: Was bringt DualCore? - Brokkoli - 27.12.2006 18:52
Zitat:
Ohne mich an Dieter Nuhr zu halten würde ich mal empfehlen, auch in der single-thread-Version einen zweiten thread zu erzeugen, da AFAIK eben diese thread-Erstellung in Java recht teuer ist.
Code:
public static void main(String[] args)
Re: Was bringt DualCore? - Christoph - 27.12.2006 20:00 Ich als Nicht-Experte trage mal - auch auf die Gefahr hin, mich lächerlich zu machen - bei, dass ich von dual core erwartet hätte, dass die beiden CPUs auf einer sehr hardwarenahen Ebene verschiedene Aufgaben zugeteilt bekommen und die Ebene, auf der Threads laufen, viel zu high-level ist, als dass ein Thread einen Prozessor erhalten würde... Re: Was bringt DualCore? - Faleiro - 27.12.2006 20:22
Zitat:
Ich als Nicht-Experte trage mal - auch auf die Gefahr hin, mich lächerlich zu machen - bei, dass ich von dual core erwartet hätte, dass die beiden CPUs auf einer sehr hardwarenahen Ebene verschiedene Aufgaben zugeteilt bekommen und die Ebene, auf der Threads laufen, viel zu high-level ist, als dass ein Thread einen Prozessor erhalten würde...
Ebenfalls ohne Beachtung des Nuhr-Prinzips moechte ich dem entgegensetzen, dass ich der Meinung bin, zwei Cores seien tatsaechlich auf einem sehr hohen Level unabhaengig; deine Beschreibung wuerde ich eher dem "Hyperthreading" zuordnen. :)
Re: Was bringt DualCore? - garou - 27.12.2006 21:24
Zitat:
Zitat:
Ich als Nicht-Experte
Ebenfalls ohne Beachtung des Nuhr-Prinzips
Re: Was bringt DualCore? - cheek - 27.12.2006 21:49 nein nicht ganz, bei Hyperthreading wird ein 2. Prozessor emuliert und kann so nen vorteil bei multitaksing sowie bei appz mit mehreren prozessen sein (nicht threads). der punkt ist in java werden neu threads immer in der Threadgruppe von dem Main programm gestartet[javadoc:ThreadGroup], d.h. eure eben erstellten Threads haben alle die Gleiche Priotritaet, die Threadsheduler sind in Java noch nicht soo der Hammer, es gibt einige (atm faellt mir nur keiner ein) oss Implementierungen die recht gut sind, muesste ihr mal in den Java3D engine Foren nachguggn da gibs heisse diskussionen darueber ^^ Thread kommunikation ist immer teurer als die KOmmunikation in einem thread bei einzelnen "kleineren" Berechnungen wie ihr sie bisher gemacht hab ist der Aufwand des erzeugens im Verhaeltnis zu dem was ihr bei den Berechnungen einspart fast gleich. Da die VM die zwischen werte der Berehcnung speichert bzw sieht das in dem punkt 2 threads mit den gleichen berechnungen bestartet werden hat der 2. Thread einen Vorteil in der berechnung, sieht man auch in dem Post von Silverstar, warum der dritte Durchgang wieder den Original wert hat weiss ich auch grade net ^^ Da bei den ganzen Betriebsystemen die Threadverwaltung diesem ueberlassen ist, koennt ihr den Threads nur ne Prio zuweisen udnd adurch die Abarbeitung bneeinflussen, dieses Abstraktionskonzept ist bewusst gewaehlt, je mehr Cores oder Physische Prozessorern in dem System ansich sind, kann das Betriebsystem deinem Jva main ThreadGroup einen Physischen Prozi zuweisen, in dieser ThreadGroup uebrnimmt dann die Jva implementierung die Verwaltung der CPU ressourcen fuer die einzelnen Threads. Du musst beim Start 2 ThreadGroups erstellen in denen Jeweils ne Eigenen Thread starten und dann wuerde man dei Verwaltung ein wenig beeinflussen, da man dem OS 2 Prozesse direkt anbietet. Der Untershcied zwischen Hyperthreading und Core2 bzw Multicore Systemen ist der das in echten Multiprozessor Systemen alle Cpus nen eigenen Cache haben, bei Core2 sind es 2 eigenstaendige CPUs die aber auf den gleichen Cache zugreifen, bei Hyperthreading greifen diese beiden Emulierten CPUs nicht nur auf den gleichen Cache zu sondern auch auf die Gleiche ALU, deswegen bringen Hyperthreading CPUs nur etwas wenn 2 seperate Prozesse/Anwendungen ohne grosse mathematische berehcnungen laufen, oder man nutzt das so aus das man einen Thread fuer Berechnungen laufen hat, zb die Logik oder Physik berechnung (in Games zB) und die Grafik in dem anderen Thread (GUI in einen Thread packen ist insofern guter Stil, da sonst evt die Logik auf nen Click mit der Maus warten bzw der User auf ne laengere Berechnung warten muesste) Die Benutzung von ThreadGroups in Java wuerde ich alelrdings nicht empfehlen da man dann wie gesagt selber fuer die Threadverwaltung zustaendig ist, und da eine Faire Variante zu finden die auch noch Performance boost bringt ist nicht immer leicht. gruss Cheek Re: Was bringt DualCore? - Brokkoli - 27.12.2006 22:54 also zumindest was du zu threadgoups geschrieben ahst ist so quatsch. http://java.sun.com/docs/books/jls/first_edition/html/javalang.doc19.html :
Zitat:
Thread groups provide a way to manage threads and to impose security boundaries; for example, a thread may always create a new thread within its own thread group, but creating a thread in another thread group requires the approval of the security manager (§20.17), as does the creation of a new thread group.
Zitat:
Beim Core Duo sind zwei Yonah-Kerne zusammengeschaltet, der L2-Cache ist aber nur einmal für beide Kerne vorhanden (Shared Cache). Bei Intels ersten Dual-Core-Prozessoren Pentium D war der L2-Cache noch für beide Kerne einzeln vorhanden.
Re: Was bringt DualCore? - Marrow - 27.12.2006 23:14
Offtopic:
Bitte bemüht euch um korrekte (alte, neue oder ganz neue) Rechtschreibung, damit eure Texte für andere besser lesbar sind. (bzw. für einige vielleicht überhaupt erst verständlich, z. B. für ausländische Studierende) Re: Was bringt DualCore? - FireTiger - 28.12.2006 02:31
Zitat:
mal ein (sehr sinnloses) testprogramm von mir:
Code:
public class MPTest extends Thread
Re: Was bringt DualCore? - cheek - 28.12.2006 13:00
Zitat:
achja und das mit dem cache stimmt auch nicht...
http://de.wikipedia.org/wiki/Intel_Core :
Zitat:
Beim Core Duo sind zwei Yonah-Kerne zusammengeschaltet, der L2-Cache ist aber nur einmal für beide Kerne vorhanden (Shared Cache). Bei Intels ersten Dual-Core-Prozessoren Pentium D war der L2-Cache noch für beide Kerne einzeln vorhanden.
Re: Was bringt DualCore? - bono - 28.12.2006 18:00 Naja, der L3 wird doch nur aus Kostengründen geshared, schneller wäre sicher ein großer L2 für jeden Kern. Re: Was bringt DualCore? - DeGT - 28.12.2006 20:42
Zitat:
Naja, der L3 wird doch nur aus Kostengründen geshared, schneller wäre sicher ein großer L2 für jeden Kern.
Nein, nicht wenn mehrere Threads auf gleiche Daten zugreifen müssen.
Re: Was bringt DualCore? - Brokkoli - 28.12.2006 22:00 dann sollte man vielleicht gesahrte und ungesharete l2 chaches haben... auf die einen kommt man schnell drauf und bei den anderen bekommt halt auch der andere prozessor was von ab ;) das könnte ich mir in vielen situationen als sehr sinnvoll vorstellen.. Re: Was bringt DualCore? - bono - 28.12.2006 23:36 Wenn ich das richtig in Erinnerung habe, muss der L3 ja verteilt werden. Das kostet normalerweise etwas Zeit, dafür spart man Cache ein, denn man braucht ja nicht so viel. Bei zwei großen L2s könnte man ja einfach die Daten doppelt reinschmeißen... Re: Was bringt DualCore? - Tzwoenn - 30.12.2006 02:02
Zitat:
Allerdings werden dei CPU ressourcen einer ThreadGroup zugeordnet nicht einem Java Thread. Die einzige manipulation dei Java unterstuetzt ist in den neuen Versionen die Priorisierung, und das wird sich auch in Zukunft nicht wirklich aendern, bis auf ein paar exotische Implementierungen.
Re: Was bringt DualCore? - Brokkoli - 30.12.2006 03:06 genau so habe ich es auch verstanden und so siehts auch in den quellcodes zu den betrefenden klassen aus (zum teil native code...) ausser einer max priority und eben einer sicherheitsbeschränkung für threads in der group ist da nicht viel drinn.. Re: Was bringt DualCore? - Fred - 11.02.2007 21:03 Ich bitte darum, alles zu ignorieren, was bisher in diesem Thread (no pun intended!) geschrieben wurde, und meine neue Version zu testen.
Code:
C:\>java -jar dualcore2.jar
Re: Was bringt DualCore? - Anonymer User - 11.02.2007 22:19
Code:
C:\>java -jar dualcore2.jar
Re: Was bringt DualCore? - DJ-SilVerStaR - 11.02.2007 22:21
Zitat:
@ Core Duo T2300 (1,66 Ghz)
Re: Was bringt DualCore? - Fred - 11.02.2007 22:22
Zitat:
speedup: 55,87%
Hm, nicht besonders viel. Laufen Prozesse im Hintergrund? Schalte mal so viele wie möglich aus.
Re: Was bringt DualCore? - DJ-SilVerStaR - 11.02.2007 22:26
Zitat:
Zitat:
speedup: 55,87%
Hm, nicht besonders viel. Laufen Prozesse im Hintergrund? Schalte mal so viele wie möglich aus.
Re: Was bringt DualCore? - Fred - 11.02.2007 22:32 Na dann prognostiziere ich mal einen Speedup von ~90%, wenn Du mit Rendern durch bist. Re: Was bringt DualCore? - DJ-SilVerStaR - 11.02.2007 22:50 Menno Fred, ich wollt den Beitrag von oben editieren, das geht nu nich mehr so wie ich wollte..du bist doof
Code:
C:\>java -jar dualcore2.jar
Wie gesagt: Core Duo T2300 @ 1,66 Ghz (=^= Nootebook von meinem ersten Post)
Re: Was bringt DualCore? - Zidane - 12.02.2007 15:51 Hier mal mein Resultat :
Code:
C:\>java -jar dualcore2.jar
Re: Was bringt DualCore? - Anonymer User - 12.02.2007 16:31 C:\Dokumente und Einstellungen\svelin\Desktop>java -jar dualcore2.jar generating list of 7500000 random integers... firing up the engines... benchmark starts! single threaded: 2089 ms double threaded: 1402 ms single threaded: 2094 ms double threaded: 1432 ms single threaded: 2085 ms double threaded: 1411 ms single threaded: 2343 ms double threaded: 1423 ms single threaded: 2095 ms double threaded: 1403 ms speedup: 51,38% @Pentium 4 mit 3GHz und Hyperthreading Re: Was bringt DualCore? - Anonymer User - 12.02.2007 16:37 Nachtrag zum obigen Test: Laut CPU-Z ein Pentium 4 630 mit 3Ghz und besagten HT Tzwoenn Re: Was bringt DualCore? - Fred - 12.02.2007 17:32 Interessant, dass Hyperthreading trotz SingleCore tatsächlich 50% bringt. Danke für die Tests! Re: Was bringt DualCore? - Fred - 15.02.2007 15:43 Hat jemand nen QuadCore? Dann dürfte die neue Version interessant sein Re: Was bringt DualCore? - Fred - 16.02.2007 22:41 Ich habe den Benchmark heute komplett überarbeitet. Der Umgang mit den Threads ist jetzt sehr viel dynamischer, die Anzahl zu verwendender Threads ist beliebig skalierbar. Neue Version Getestet werden jetzt 1-8 Threads. Bitte vor dem Benchmarken alle rechenintensiven Programme schliessen! Die Ergebnisse des neuen Benchmarks auf MultiCore Prozessoren interessieren mich sehr, da ich nicht einmal sagen kann, ob mein neues Verfahren überhaupt effektiv ist. Also schonmal danke fürs Testen :) Gut wäre auch, wenn ihr das ganze einmal mit eingeschalteten Assertions testen könntet. Re: Was bringt DualCore? - slazZ - 17.02.2007 14:06 Der vorherige Benchmark brachte 92% speedup, der neue ist nicht ganz so fix:
Code:
multicore benchmark 070217-2230
@ dual core 1,66 GHz, Java 6, 2.6.17-11-generic
Re: Was bringt DualCore? - Fred - 17.02.2007 16:36
Zitat:
Der vorherige Benchmark brachte 92% speedup, der neue ist nicht ganz so fix
Wobei ich erwähnen muss, dass die hervorragende Parallelisierung im alten Benchmark nur deswegen möglich war, weil ich ein bischen bei der Wahl des Pivot Elements geschummelt hatte. Anstatt das Element aus der Mitte der Liste zu picken, habe ich den Wert genommen, von dem ich anhand der künstlich erstellen Zufallsliste wusste, dass er nach dem Sortieren in der Mitte landen würde. So waren die resultierenden Teillisten exakt gleich gross.
Zitat:
1 thread -> 2 threads: 83,49%
Das freut mich. Vielen Dank fürs Testen!
Re: Was bringt DualCore? - Farcon - 19.02.2007 22:11 SingleCore vs. DualCore bei Spielen: http://3dcenter.de/artikel/2006/11-20_a.php Re: Was bringt DualCore? - Fred - 19.02.2007 23:09
Zitat:
Die Ausnutzung von QuadCore-Prozessoren unter Spielen steht wirklich erst vor dem Beginn und dürfte demzufolge ähnlich wie bei DualCore mehr oder weniger zwei Jahre benötigen, um auf einen vergleichbaren Stand zu heute bei DualCore-Prozessoren zu kommen.
Glaube ich ehrlich gesagt nicht. Der Schritt von SingleCore zu DualCore erforderte in der Programmierung ja überhaupt erst die ernsthafte Auseinandersetzung mit mehreren Threads. Ob das jetzt 2 oder 4 sind macht dann aber nicht mehr so den grossen Unterschied in der Denkweise.
|