Einzelnen Beitrag anzeigen

generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#1

TThread und Prozessorauslastung bei Multicpu Maschinen

  Alt 24. Jun 2005, 16:44
moin moin,

hab eine interesante beobachtung gemacht.
wenn ich mein delphi programm (welches ein langwierige berechnung durchführt) auf einer 4 cpu maschine starte, läuft dieses nur in einer cpu. klar - weil es gibt ja nur den haupt-vcl-thread des programms.

das programm belegt dann die eine cpu mit 100%. -> finde ich gut.

nun bin ich auf die idee gekommen die berechnung, besser gesagt die datenmenge die als eingabe dient, in 4 gleich gross stücke zu teilen und 4 threads zu starten. diese arbeiten alle 1/4 der gesamt menge ab.
(die thread müssen nicht untereinandere syncronisiert werden).

ich hatte jetzt erwartet das meine 4 threads auf den 4 cpu's jeweils 100% cpu last erzeugen.
das programm sollte auch dann faktor "4" schneller laufen.

allerdings liefen die 4 threads nur mit ca. 20% cpu last je cpu.
das programm war auch ca. nur 1/5 so schnell wie das 1 thread programm.

nun meine frage (vieleicht für dich luckie?):
wieso wird nicht bei den 4 threads 100% je cpu belegt obwohl das der selbe programmteil ist wie bei dem single-vcl-thread programm?
wie bekomme ich 4x 100% cpu last hin, so das mein programm auch "4x" schneller läuft.

mir ist klar das das nicht 4x schneller wird wegen dem höheren verwaltungsaufwand.
Miniaturansicht angehängter Grafiken
4cpu_162.jpg   1cpu_650.jpg  
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat