AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Hyperthreading Problem

Ein Thema von Manfred D2009 · begonnen am 19. Jan 2010 · letzter Beitrag vom 22. Jan 2010
Antwort Antwort
Manfred D2009

Registriert seit: 2. Jun 2009
25 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Hyperthreading Problem

  Alt 19. Jan 2010, 08:48
Hallo,

ich habe aktuell das Problem, dass mein Programm, das schon sehr lange ohne Probleme auf verschiedensten Rechnern (Single-, Dual-, Quad-Core) sehr stabil läuft, auf einem i7 mit HT häufig stehenbleibt.

Ich verwende Delphi2009 und im Programm werden aufwändige Berechnungen auf alle vorhandenen Prozessoren verteilt...

Beim i7 mit HT werden mir 8 Prozessoren "gemeldet". Ich verteile die Berechnung mit Hilfe von Threads auf alle vorhandenen "Prozessoren", also 8 Threads, die zeitgleich rechnen. Vier Threads wären beim i7 HT wahrscheinlich besser, da ja nur 4 echte Kerne da sind, aber - abgesehen vom Verwaltungsaufwand - tut es auch nicht besonders weh. Könnte ich das Hyperthreading für meine Anwendung deaktivieren?

Gibt es Sachen, die in Verbindung mit HT nicht gemacht werden dürfen? In meinen Threads verwende ich z.B. synchronisierte Abschnitte, da ich die Berechnungsergebnisse gleich darstellen muss...

Kann mir jemand einen Tipp geben, wie ich mit diesem Problem weiterkomme?
  Mit Zitat antworten Zitat
tkone

Registriert seit: 2. Okt 2009
Ort: Sachsen
63 Beiträge
 
Delphi 7 Professional
 
#2

Re: Hyperthreading Problem

  Alt 19. Jan 2010, 08:53
normalerweise kann man es im bios abstellen, oder schau mal unter:

msconfig -> start ->erweiterte opitonen und dann kann man die anzahl der kerne aussuchen
  Mit Zitat antworten Zitat
Manfred D2009

Registriert seit: 2. Jun 2009
25 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Hyperthreading Problem

  Alt 19. Jan 2010, 09:49
Danke für den Tipp! Das habe ich bei meinen Tests ja auch so gemacht...

...und es wäre ja für meine Anwendung auch nicht so schlecht. Allerdings würde ich so den Rechner für andere Anwendungen "kastrieren", oder? Und außerdem müsste ich jedem Benutzer mitteilen, dass mein Programm nicht mit Hyperthreading kann und dass er es ausschalten muss...
  Mit Zitat antworten Zitat
tkone

Registriert seit: 2. Okt 2009
Ort: Sachsen
63 Beiträge
 
Delphi 7 Professional
 
#4

Re: Hyperthreading Problem

  Alt 19. Jan 2010, 09:58
das stimmt natürlich.
kenne mich leider mit verteilen auf mehrere kerne nicht aus.
tritt das problem nur mit den 4kernen(8 simuliert) auf?
dann wäre es evtl möglich deine aufteilung auf max. 4 zu beschränken.
  Mit Zitat antworten Zitat
Manfred D2009

Registriert seit: 2. Jun 2009
25 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Hyperthreading Problem

  Alt 19. Jan 2010, 10:43
...das habe ich gerade nochmals probiert:

Ich habe im Test für die Berechnung jetzt nur 4 Threads gestartet und dann ebenfalls Deadlocks bekommen. Ich denke, das kommt daher, dass mein Programm auch andere Threads nutzt und nicht ich die Berechnungsthreads den Prozessoren zuteile. Da werden die Threads (egal wieviele und egal woher) durch das Betriebssystem einfach auf alle 8 Prozessoren aufgeteilt.

Wenn Hyperthreading an ist, dann habe ich da aktuell keine Möglichkeit...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Hyperthreading Problem

  Alt 19. Jan 2010, 10:57
Deadlocks haben aber nichts mit Hyperthreading oder mehreren CPUs zu tun. Ein Deadlock entsteht dann, wenn sich mehrere Thread gegenseitig blockiern, weil sie zum Beispiel darauf warten, dass CriticalSections oder ähnliches freigegeben oder verlassen werden. Oder meist du mit Deadlock hier was anderes?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Hyperthreading Problem

  Alt 19. Jan 2010, 11:05
Wenn dein Programm stehen bleibt, dann solltest du dies zuerst auf deinen Code und nicht die Hardware zurückführen - "Deadlocks", die das "Stehenbleiben" der Anwendung als Symptom haben, treten unter Umständen nur sporadisch auf.

Das Abstellen von HT ist keine Lösung, zumal das Problem - nach längeren Tests - garantiert auch auf anderen Rechnern zu Tage tritt.

Zum Beispiel hatte ich mal ein Programm, das unter Windows XP einwandfrei lief, unter Windows 7 jedoch einen "Deadlock" produziert hat, da sich der interne Aufbau von Critical Sections geändert hat - ich hatte ausversehen zu oft "TCriticalSection.Leave" aufgerufen.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#8

Re: Hyperthreading Problem

  Alt 19. Jan 2010, 11:50
Zudem sei hier gesagt, dass diese HT-Technik absolute nichts mit einem auszuführenden Programm zu tun hat. Wäre ja noch schöner, wenn es an sowas liegen würde. Diese Technik ist ja nur eine von der CPU gegebenen Optimierung und hat nichts mit der später darauf laufenden Software zu tun.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Manfred D2009

Registriert seit: 2. Jun 2009
25 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Hyperthreading Problem

  Alt 19. Jan 2010, 12:18
Danke für die Info´s! Es war auch meine erste Vermutung, dass im Programm etwas nicht passen könnte und deshalb diese Deadlocks auftauchten.

Allerdings machte es mich stutzig, dass bei ausgeschaltetem HT auf dem gleichen Rechner mit der gleichen Anzahl von Threads das Ganze funktioniert. Und da ich keine Erfahrungen mit HT-Rechnern habe, wollte ich mich hier vergewissern, ob es da irgendwo eine "offene Baustelle" gibt, zumal das Programm bisher eigentlich sehr stabil funktioniert.

Ich werde jetzt wohl ein paar Debug-Geschichten einbauen müssen...
  Mit Zitat antworten Zitat
Manfred D2009

Registriert seit: 2. Jun 2009
25 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: Hyperthreading Problem

  Alt 22. Jan 2010, 11:56
Hallo zusammen,

es ist so, wie ihr vermutet habt! Es lag nicht am Hyperthreading sondern an den Routinen der einzelnen Threads! Und wie es immer so ist: nur auf diesem einen Rechner war eine Debug-Option aktiv, die eigentlich nicht aktiv sein sollte, die aber dafür sorgte, dass unsynchronisiert Einträge in ein Grid gemacht wurden...

Außerdem kamen noch eine Reihe UpdateActions dazu, die das Ganze schwer nachvollziehbar machten...

Trotzem Danke für eure Bemühungen!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:06 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