![]() |
TThread und Prozessorauslastung bei Multicpu Maschinen
Liste der Anhänge anzeigen (Anzahl: 2)
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. |
Re: TThread und Prozessorauslastung bei Multicpu Maschinen
hast du schonmal versucht die prozesspiorität zu erhöhen?
|
Re: TThread und Prozessorauslastung bei Multicpu Maschinen
Auch wenn du 4 Prozessoren hast: die restlichen Reessourcen sind nur einmal da. Ich weiß nicht, ob deine Maschine 4mal geleichzeitig auf Speicher zugreifen kann, wenn nicht, dann hast du hier schon mal den Flaschenhals.
|
Re: TThread und Prozessorauslastung bei Multicpu Maschinen
Verteil die Threads mal explizit mit
![]() |
Re: TThread und Prozessorauslastung bei Multicpu Maschinen
es ist ja richtig verteilt. mich stoert nur die performance...
das programm ist nur 1/5 so schnell wie das im vcl thread. |
Re: TThread und Prozessorauslastung bei Multicpu Maschinen
Vielleicht ist dir ja bei der Änderung irgendetwas "durchgegangen"... Schon mal beide auf einer 1-CPU-Maschine ausprobiert? Vielleicht ist die neue Version dort auch nur 1/5 so schnell.
|
Re: TThread und Prozessorauslastung bei Multicpu Maschinen
ich glaube nicht das man da etwas falsch machen konnte.
das was vorher in einem onClick war hab ich in die execute methode genommen. nur halt die datenmenge (input) hab ich aufgeteilt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz