AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Langsames Multithreading

Ein Thema von BLin4ik · begonnen am 27. Mai 2015 · letzter Beitrag vom 27. Mai 2015
 
BLin4ik

Registriert seit: 23. Nov 2011
40 Beiträge
 
Delphi 5 Enterprise
 
#1

Langsames Multithreading

  Alt 27. Mai 2015, 12:16
Hallo,

ich möchte gerne eine Verarbeitung über mehrer Threads laufen, das hat soweit funktioniert.
Aber jetzt kommt der haken, ich habe bemerkt, dass 2 Threads genauso schnell wie ein Thread arbeiten
und mir leuchtet bis jetzt noch nicht ein warum das so ist.
Ich habe ein Intel Xeon E3-1225 V2 und habe dementsprechend 4 physische Kerne.

Jeder Thread liest seine eigene CSV-Datei aus und verarbeitet diese Zeile für Zeile in einer Schleife.
Durch "SetThreadAffinityMask" werden die Threads dem jeweiligen Kern zugewiesen.
Jetzt könnte man darauf kommen, dass es was mit dem Dateizugriff zu tun hat,
aber in diesem Fall verwende ich eine SSD und das sollte eher weniger ein Problem sein.

Anhand des Ressourcen-Managers habe ich festgestellt, dass wenn die 2 Threads parallel laufen,
die zwei jeweiligen Kerne nur 50% ihrer Leistung verwenden.
Sobald einer der zwei Threads bereits fertig ist, schießt der andere sofort mit der vollen Leistung,
als ob die Arbeit auf die Kerne zerteilt wird.

Wenn ich jedoch die Verarbeitung sequenziell durchführe, kriege ich immer die volle Leistung.
Das hat zur Auswirkung, dass es keinen Unterschied macht ob ich parallel oder sequenziell
verarbeite, da beide Varianten auf fast genau die gleiche Zeit kommen.

Kann es sein, dass die Threads Prozessabhängig sind?
Ich habe nämlich einen Versuch gestartet und das Programm 2x ausgeführt
und habe sie sequenziell verarbeiten lassen. (2 PIDs)
Das hat mich schon sehr gewundert, dass ich so auf mein gewünschtes Ergebnis komme,
da beide Prozesse in ihrem Kern diesmal die volle Leistung erhalten haben und
die Zeit sich dadurch nahe zu halbiert hat.
Das ist aber nicht die gewünschte Lösung, ich möchte die
Anwendung nur einmal starten und trotzdem die volle Leistung der
Kerne ausschöpfen können.
  Mit Zitat antworten Zitat
 


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 10:14 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 by Thomas Breitkreuz