Anzahl der CPUs / Kerne herausfinden
-
Geht das?
Ich habe bei Google keine vernünftige Antwort gefunden... manche behaupten, es sei überhaupt nicht möglich, andere sagen, es geht nicht plattformunabhängig.
Das Java Native Interface hat vielleicht eine passende Funktion, aber ich hätte es gerne plattformunabhängig.
-
Hallo,
also ich kenne nur:
http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#availableProcessors()
MfG,
Probe-Nutzer
-
Also ich brauhe irgend ne Möglichkeit um herauszufinde wie viele Threads echt parallel auf dem jeweiligen System laufen können. Je nach dem ob man ein Single-, Dual- oder Quadcore processor hat, können dan entsprechend viele Threads gleichzeitig ablaufen, oder sehe ich das falsch? Von daher die frage, kann ich mit diese Methode der Runtime Klasse wirklich rausfinden wie fiele kerne der Processor hat? Und woher bekomme ich so ein Runtime Objekt? Einfach mit new Runtime()?
-
Was genau da zurückkommt musst du glaube ich googeln, aber an ein Runtime-Objekt kommst du via http://download.oracle.com/javase/6/docs/api/java/lang/Runtime.html#getRuntime()
MfG SideWinder
-
SideWinder schrieb:
Was genau da zurückkommt musst du glaube ich googeln, aber an ein Runtime-Objekt kommst du via http://download.oracle.com/javase/6/docs/api/java/lang/Runtime.html#getRuntime()
MfG SideWinder
Ja ich wies, mit dieser Singelton Methode getRuntime() kriegt man ein Runtime Objekt. Hab sogar das ganze auf einem singelcore Rechner ausprobiert und es kommt 1 heraus, probiere das jetzt auch noch auf dem Dualcore Rechner da müsste eigentlich ne 2 kommen. Troz dem bleibt die Frage ob diese Zahl dan auch der Anzahl der echt parallel ausführbaren Threads entspricht. Also auf meinem Dualcore Rechner scheinen 2 Threads echt parallel laufen zu können, aber das muss nich heißen das es imer so ist, oder?
-
Es gab mal http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5048379 aber ansonsten sollte die "Anzeige" psasen.
Sollte aber immer die für dich beste Version zurückgeben, angeblich (laut http://www.velocityreviews.com/forums/showpost.php?p=564601&postcount=9 ) könnte es auch eine andere Anzahl zurückgeben, bspw. weil ein Prozessor für einen anderen Prozess exklusiv reserviert ist. Aber genau das möchtest du dann ja auch, weil sonst laufen erst wieder zwei deiner Threads in einem Core, weil ein anderer reserviert ist, oder?
MfG SideWinder
-
sollte dir das nicht ohnehin egal sein? denk doch nicht im ernst, dass deine beiden threads wirklich parallel auf einem dualcore ausgeführt werden
das os hat da noch ein wörtchen mitzureden und schließlich gibts noch andere threads als deine..
abgesehen davon maße ich mir mal ganz dreißt an zu vermuten, dass du eh nicht wirklich wissen musst, wie viele du theoretisch verwenden könntest wenn du das nichtmal selbst herausbekommst mit ein bisschen googlen..
-
Hab jetzt mal das ganze auf verschiedenen dual core rechnern ausprobiert, wobei es nur cor 2 duo und pentium D rechner waren, und die Threads laufen meistens echt parallel, klar hat mir 1 oder 2 mal das Betriebssystem dazwischen gefunkt, aber an sonsten lief alles gut. Hab aber nicht das Programm auf den i3, i5 oder i7 Prozessoren getestet, da könnten fieleicht Probleme auftretten wegen de HT Technologie, hab ich i wo gelesen, werde mir aber das demnext selbst anschauen.
-
Hab nun ausprobiert auf den rechnern mit HT Technologie mir die Anzahl der Prozessoren zurückgeben zu lasen, und zwar auf einem Intel Atom und dualcore i5 Przessor und es wurden doppel so fiele Prozessoren ausgegeben wie es eigentlich sind. Liegt aber nicht am Java sondern an BS, den es erkännt auch doppel so fiele Prozessoren.