Nur halbe CPU-Auslastung. Warum wird nicht alles genutzt?

Mitglied: 81083

81083

06.02.2010, aktualisiert 19:36 Uhr, 13394 Aufrufe, 14 Kommentare

Hallo.

Ich bin Student und schreibe in Java meine Programme.
Es geht experimentell darum, in einem riesigen Array das größte Element zu suchen. Rekursiv.

Wie dem auch sei, ist ja auch egal.

Nach etwa 5 Sekunden macht sich der Lüfter bemerkbar. Gucke ich in den Leistungsmonitor von Vista,
wird mir angezeigt, dass die CPU nur zu 50% ausgelastet ist.

Ich habe ein DualCore 2 Duo T8300 2,4GHz pro Kern.

Wie kriege ich meinen Rechner dazu, dass der Prozessor zu 100% ausgelastet wird, wenn ich es so möchte?
Mitglied: affabanana
06.02.2010 um 19:55 Uhr
Hallo Du

Wenn Du student bist solltest Du das ja eigentlich Wissen

Dein Java Programm kann nur einen Kern auslasten.

2 =100%
1 = 50%

Gruass affabanana

PS: Studenten wissen woll immer weniger woher man Informationen holt


http://www.google.com
Bitte warten ..
Mitglied: LordGurke
06.02.2010 um 20:30 Uhr
Und um beide Kerne auszulasten, müsstest du diese Aufgabe zumindest auf zwei verschiedene Threads aufteilen. Das reicht meines Wissens dazu, um beide Kerne zu nutzen.
Bitte warten ..
Mitglied: 81083
81083 (Level 1)
06.02.2010 um 20:33 Uhr
Mir fallen zwei Möglichkeiten ein:
1.) Vista reserviert sich die Kapazität.
2.) Es wird nur einer von zwei Kernen beansprucht.

oder es liegt an etwas anderem.

Auch unter Java muss möglich sein, die CPU voll zu beanspruchen.
Evtl. liegt es an einer Systemeinstellung unter Vista oder es fehlt was in meinem Programm.
Bitte warten ..
Mitglied: 81083
81083 (Level 1)
06.02.2010 um 20:35 Uhr
Danke, maxi89. Das heißt, ich muss zwei Aufgaben parallel laufen lassen?
Hm, ich könnte das Array halbieren.
Aber wie lasse ich zwei Methoden gleichzeitig laufen??
Bitte warten ..
Mitglied: LordGurke
06.02.2010 um 20:38 Uhr
Sorry, bei Java bin ich lediglich bis zu dem Stand vorgedrungen, dass ich eine Datei auf- und wieder zumachen kann. Von Threading habe ich leider nichtmal den Hauch einer Ahnung, wie und ob das unter Java geht ;-) face-wink
Bitte warten ..
Mitglied: LordGurke
06.02.2010 um 20:41 Uhr
Punkt zwei stimmt.
Wenn du im Tassenmanager im Reiter "Leistung" nur einen Kurvenverlauf siehst, musst du möglicherweise erst noch unter Ansicht -> CPU-Verlauf die Option "Ein Diagramm pro CPU" aktivieren.
Dann siehst du ganz genau welcher Kern gerade wie viel zu tun hat.

Bei Punkt 1 muss ich widersprechen:
Vista reserviert sich keine Kapazität, es ist unter jedem Betriebssystem so, dass ein Prozess auf nur einem Prozessor ausgeführt werden kann. Und da ein Multicore-Prozessor im Grunde ja einzelne Prozessoren darstellt, wird das OS ein Programm nur auf einem Kern ausführen.
Ob jetzt mehrere Threads reichen, um sich auf alle Kerne zu verteilen, oder ob es wirklich eigenständige Prozesse sein müssen, weiß ich jetzt nicht aus dem Kopf - eigentlich müssten die Threads reichen.
Zumindest kann der Apache mit nur einem Prozess und 20 Threads alle 16 Kerne eines Servers beanspruchen :-) face-smile
Bitte warten ..
Mitglied: StefanKittel
06.02.2010 um 20:57 Uhr
Hallo,

du kannst das ganz einfach ausprobieren und mit calc n! einer großen Zahl berechnen lassen.
Nutze mal einen calc und einmal 2xcalc.

Stefan
Bitte warten ..
Mitglied: 81083
81083 (Level 1)
06.02.2010 um 21:14 Uhr
Hallo Stefan,

was ist calc? In der API ist das nicht zu finden.
Oder meinst Du, ich sollte mir eine Methode schreiben, die das macht?
Iterativ oder rekursiv?
Bitte warten ..
Mitglied: Pjordorf
06.02.2010 um 21:19 Uhr
Hallo baldrianforte,

Ich bin Student und schreibe in Java meine Programme.
Es geht experimentell darum, in einem riesigen Array das größte Element zu suchen. Rekursiv.

Wie dem auch sei, ist ja auch egal.

Nach etwa 5 Sekunden macht sich der Lüfter bemerkbar. Gucke ich in den Leistungsmonitor von Vista,
wird mir angezeigt, dass die CPU nur zu 50% ausgelastet ist.
1 Kern wird verwendet

Ich habe ein DualCore 2 Duo T8300 2,4GHz pro Kern.
2 kerne vorhanden

Wie kriege ich meinen Rechner dazu, dass der Prozessor zu 100% ausgelastet wird, wenn ich es so möchte? baldrianforte
Als java Entwickler (und dann noch als Student) solltest du vom Multithread Applikation schon mal was gehört haben. Schau doch mal hier Writing multithreaded Java applications oder hier http://java.sun.com/docs/books/tutorial/essential/concurrency/ wie so etwas geht. Dann kannst du auch ohne probleme deine 2 Kerne zu je 100% auslasten.

Peter
Bitte warten ..
Mitglied: LordGurke
06.02.2010 um 21:26 Uhr
Mit calc meint er vermutlich den Windows-Taschenrechner ;)
Bitte warten ..
Mitglied: StefanKittel
06.02.2010 um 22:49 Uhr
in der tat. nichts ist einfacher um cpu last zu erzeugen...
Bitte warten ..
Mitglied: 81083
81083 (Level 1)
06.02.2010 um 23:02 Uhr
Der WindowsRechner ist wohl auch nicht auf Multiprozessorbetrieb ausgerichtet. Auch nur 50% Auslastung.
Bitte warten ..
Mitglied: 81083
81083 (Level 1)
06.02.2010 um 23:03 Uhr
Danke, Peter. Werde mir das genauer angucken.
Bitte warten ..
Mitglied: StefanKittel
06.02.2010 um 23:24 Uhr
1 x calc laufen lassen = 1 Thread/Process = 50% Last
2 x calc laufen lassen = 2 Thread/Process = 100% Last

1000000000 und dann n! in der wissenschaftlichen Ansicht
Bitte warten ..
Heiß diskutierte Inhalte
Exchange Server
Exchange Zero Day Hack - Wie entfernen?
gelöst mtaiitVor 1 TagFrageExchange Server64 Kommentare

Hallo, bei mir hat es einige Kundenserver getroffen Weiß einer wie ich diese WebShells wieder loswerde? Das löschen der betroffenen .aspx Dateien wird wohl ...

E-Mail
Kann man mit SPF Mails für eine Domäne vollständig verbieten?
gelöst StefanKittelVor 1 TagFrageE-Mail17 Kommentare

Hallo, viele Firmen haben ja zusätzliche Domänen. Als Web- und oder Mail-weiterleitung. Es werden also niemals Emails damit gesendet werden. kann man mit einem ...

Exchange Server
Wie grundsätzlich verfahren mit Exchange Zero-Day-Exploit?
StefanKittelVor 15 StundenFrageExchange Server12 Kommentare

Hallo, ich habe auf einem Server mit den Tool von Microsoft Zugriffsversuche am 26. und 27.02.21 gefunden. Das führt mich zu der Vermutung, dass ...

Exchange Server
Exchange-Hack (2021-03) war Angriff erfolgreich? Was dann?
FrM222Vor 4 StundenFrageExchange Server15 Kommentare

Hallo Zusammen, ich bin ganz neu hier im Forum, daher entschuldige ich mich schon mal im Voraus, falls ich beim Einstellen etwas falsch gemacht ...

Python
Könnt ihr bugs finden ?
adriaanVor 18 StundenAllgemeinPython10 Kommentare

Guten Tag liebe Forenmitglieder, Ich schreibe heute diesen Beitrag, weil ich einen Python Zähler entwickelt habe. Diesen würde ich gerne härten und entsprechend gerne ...

Off Topic
So funktioniert das Internet! - Danke, Maus
em-pieVor 1 TagInformationOff Topic2 Kommentare

Anlässlich des Geburtstages unserer orangenen Freundin: So funktioniert das Internet: Alles Gute, liebe Maus :-)

Ausbildung
Projektantrag abgelehnt (IHK)
StrowayerVor 5 StundenFrageAusbildung9 Kommentare

Guten Tag, mein Projektantrag für die IHK wurde leider abgelehnt mit der Begründung: "Bitte überarbeiten Sie Ihren Zeitplan. Die Projektdokumentation sollte nicht 25% der ...

Netzwerke
Cisco IOS: grep?
gelöst PeterGygerVor 21 StundenFrageNetzwerke11 Kommentare

Hallo Falls jemand die Antwort aus dem Ärmel schütteln kann , danke ich im Voraus. In einem Vortrag wurde die Cisco IOS (Catalyst / ...