AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TThread und Prozessorauslastung bei Multicpu Maschinen
Thema durchsuchen
Ansicht
Themen-Optionen

TThread und Prozessorauslastung bei Multicpu Maschinen

Offene Frage von "generic"
Ein Thema von generic · begonnen am 24. Jun 2005 · letzter Beitrag vom 26. Jun 2005
Antwort Antwort
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
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TThread und Prozessorauslastung bei Multicpu Maschinen

  Alt 24. Jun 2005, 16:55
hast du schonmal versucht die prozesspiorität zu erhöhen?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: TThread und Prozessorauslastung bei Multicpu Maschinen

  Alt 24. Jun 2005, 17:03
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: TThread und Prozessorauslastung bei Multicpu Maschinen

  Alt 24. Jun 2005, 18:27
Verteil die Threads mal explizit mit MSDN-Library durchsuchenSetThreadAffinityMask auf die Prozessoren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
generic

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

Re: TThread und Prozessorauslastung bei Multicpu Maschinen

  Alt 25. Jun 2005, 02:45
es ist ja richtig verteilt. mich stoert nur die performance...
das programm ist nur 1/5 so schnell wie das im vcl thread.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: TThread und Prozessorauslastung bei Multicpu Maschinen

  Alt 25. Jun 2005, 11:52
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.
Volker
  Mit Zitat antworten Zitat
generic

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

Re: TThread und Prozessorauslastung bei Multicpu Maschinen

  Alt 26. Jun 2005, 16:44
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.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz