# CPU-Auslastung erhöhen?



## basti85 (19. Okt 2007)

Hallo zusammen,

ich habe ein programm geschrieben, das mit sehr vielen schleifen berechnungen durchführt. deswegen dauert die ausführung auch sehr lange. 
beim blick in den windows task-manager ist mir aufgefallen, dass die javaw.exe nur relativ konstant 50% cpu-auslastung verwendet (speicherauslastung ca. 13000K). 
gibt es parameter für die VM, die mir eine maximale oder zumindest 90%ige auslastung ermöglichen? dann müsste das programm doch ca. in der halben zeit terminieren, oder?
ich verwende eclipse und jre1.5.0_06.

vielen dank im voraus!
grüße,
Basti


----------



## The_S (19. Okt 2007)

Du hast nicht zufällig in deinem Prozessor zwei Kerne oder einen mit HT-Technologie?


----------



## maki (19. Okt 2007)

Oder einen pseudo 2 Prozessor Pentium 4 mit Hyperthreading?


----------



## basti85 (19. Okt 2007)

intel centrino duo steht auf dem aufkleber. hab mich damit nie befasst, aber das klingt nach zwei (pseudo) kernen 
gibs da eine lösung für mein problem?
sollte ich die berechnungen vielleicht auf 2 threads aufteilen und die nutzen dann beide kerne aus?
danke!
Basti


----------



## maki (19. Okt 2007)

> hab mich damit nie befasst, aber das klingt nach zwei (pseudo) kernen icon_smile.gif
> gibs da eine lösung für mein problem?


Das sind 2 "echte" Prozessoren, Dualcore eben...



> sollte ich die berechnungen vielleicht auf 2 threads aufteilen und die nutzen dann beide kerne aus?


Klar, wenn das geht.


----------



## basti85 (19. Okt 2007)

oki doki vielen dank!

habe zwar gehofft, dass es einen simplen parameter für die VM gibt, wie "useBothCores"  aber dann probier ichs mal über die threads.


----------



## Wildcard (19. Okt 2007)

basti85 hat gesagt.:
			
		

> habe zwar gehofft, dass es einen simplen parameter für die VM gibt, wie "useBothCores"  aber dann probier ichs mal über die threads.


Ein einziger Thread lässt sich aber derzeit nicht 'mal eben so automatisch' parallelisieren   :wink:


----------



## basti85 (19. Okt 2007)

na ja, wenn mir nix anderes übrig bleibt, muss ich das wohl mal probieren. wenn das programm danach langsamer läuft oder fehler produziert, dann nehm ich wieder die alte revision und muss halt mit 50% leben


----------



## maki (19. Okt 2007)

Oft bringt es mehr, die Flaschenhälse im Programm zu optimieren.


----------



## The_S (22. Okt 2007)

Und oft läuft dein Programm dann auf einem Rechner ohne Dualcore langsamer.

Und oft hast du auch wieder nur 50% Auslastung bei einem Quadcore.

Probleme über Probleme ...


----------



## Sanix (22. Okt 2007)

Bei einem Quadcore sollten es dann nicht 25% sein? Oder wird das problemlos vom OS gemanaged?


----------



## The_S (22. Okt 2007)

Quadcore = 4 Prozessoren
Dual Core = 2 Prozessoren
Dual Core = 50% von Quad Core Prozessoren
100% Dual Core Auslastung = 50% Quad Core Auslastung

alles klar  ?


----------



## Guest (13. Nov 2007)

Allerdings kann man die Anzahl der Prozessoren herausfinden, die auch dem System bekannt sind und danach entsprechend viele Threads starten:

```
int processorsNum = Runtime.getRuntime().availableProcessors();
```


----------



## pocketom (3. Jan 2008)

@basti85: Hast du das hinbekommen bei dir? Ich hab so ein ähnliches Problem, nur andersrum. Ich kann ohne Probleme 100% Auslastung mit mehr Kernen erzeugen, jedoch bekomm ich das Ergebnis nicht wie gewünscht schneller. Kuck mal hier, du kannst ja mal probieren auf die Art mit deinem Programm Vollauslastung zu erreichen (www.java-forum.org/.../threads-skalieren-unterschiedlich-gut...) Würde mich interessieren ob dus mit deinem Programm hinbekommst.

Gruß Tom


----------

