INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Prozessor/Thread Zuweisung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

01.08.2011, 14:44 (Dieser Beitrag wurde zuletzt bearbeitet: 01.08.2011 14:45 von win98.)
Beitrag #1

win98 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Jun 2011

2010 SP1
2010
DE



Prozessor/Thread Zuweisung
Hallo zusammen.

Ich habe zwei Zeitgesteuerte Schleifen. Eine läuft mit 30ms und hoher Priorität und eine mit 0ms (ja es muss so schnell wie möglich sein Tongue ) und niedriger Priorität.

Es ist klar, dass ich bei der zweiten Schleife 100% Auslastung bekomme.

Ich habe eine Core i5 (2 Kerne mit jeweils 2 Threads = 4 Threads).

Momentan habe ich Hyperthreadting aktiv und folgende Einstellung:
Variante A)
Schleife 1 auf Thread 0
Schleife 2 auf Thread 2

Folglich habe ich jetzt immernoch 2 Thread die ich nicht benutze. Gibt es eine Möglichkeit, dass ich die eine Zeitschleife auf mehrere Threads teilen kann, also:
Variante B)
Schleife 1 auf Thread 0
Schleife 2 auf Thread 2 und 3

Oder ist es sinnvoller Hyperthreadting zu deaktvieren und jede Schleife auf einem Kernlaufen zu lassen? Also:
Variante C)
Schleife 1 auf Kern 0
Schleife 2 auf Kern 1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.08.2011, 07:03
Beitrag #2

Rene_B Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: May 2011

2010
2011
DE



RE: Prozessor/Thread Zuweisung
Warum nicht das Betriebssystem entscheiden lassen, welche Schleife auf welchem CPU läuft?
Das OS wäre dann auch in der Lage, auf beispielsweise nen Virenscanner zu reagieren etc...




Und ob die schnelle Schleife noch in mehrere threads aufgeteilt werden kann, musst du sehen, denn entweder es ist alles unteilbar voneinander abhängig, oder nicht. Aber wenn du diese frage stellst, schaue dir am besten erstmal nen paar theoretische Konzepte fürs Multithreading an, Stichwort Semaphoren etc.
MfG
Rene
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.08.2011, 08:17
Beitrag #3

win98 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Jun 2011

2010 SP1
2010
DE



RE: Prozessor/Thread Zuweisung
in der schnellen schleife läuft eine zustandsmachine. da sind die schritte eher weniger teilbar.
Semaphore hab ich auch schon in betracht gezogen, aber die sind doch nur dazu da um doppelten speicherzugriffen vorzubeugen und deadlocks zu vermeiden, wie hilft mir das denn weiter?

Ich wollte halt nur das maximale aus der CPU rausholen, weil nur einer von vier Threads auf 100% steht und der Rest fast nix tut.

Vllt noch eine Frage, ist es dann doch lieber, wenn ich Hyperthreading abschalte? Ein Kern ist bestimmt (bei einer Schleifenabarbeitung) effizienter alls zwei Threads, oder sehe ich das falsch?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.08.2011, 08:44
Beitrag #4

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
RE: Prozessor/Thread Zuweisung
Warum probierst du es nicht einfach aus?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.08.2011, 09:02
Beitrag #5

win98 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Jun 2011

2010 SP1
2010
DE



RE: Prozessor/Thread Zuweisung
Naja, in beiden Fällen bekomm ich entweder 100% Threadauslastung oder 100% Kernauslastung.

Wie kann ich denn herausfinden, ob das eine, oder das andere schneller/besser ist?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.08.2011, 09:13
Beitrag #6

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
RE: Prozessor/Thread Zuweisung
Naja... wenn du nur die CPU auslasten willst, kannst du auch einfach ungebremste Whileschleifen laufen lassen Wink

Was ist denn dein eigentliches Ziel, das du erreichen willst? Ich vermute mal möglichst viele Iterationen pro Sekunde deiner Statemachine. Damit hast du eine mögliche Messgröße, die du mit verschiedenen Konfigurationen beurteilen könntest.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.08.2011, 10:16
Beitrag #7

win98 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Jun 2011

2010 SP1
2010
DE



RE: Prozessor/Thread Zuweisung
ja genau.
Hab auch jetzt die Laufzeite ausgelesen. Mit Hyperthreadting sind die Werte wesentlich besser.

Ich denke, das liegt aber auch daran, dass ich im Bios nicht Hyperthreadting abschalten kann, sondern ich kann "multicore" abschalten. Dabei hab ich nicht wie gedacht meine 2 Kerne zur Verfügung, sondern nur noch einen. Da laufen jetzt beide Schleifen, klar, dass das langsamer ist.

Blödes Notebook Bios Tongue

Danke für eure Hilfen Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.08.2011, 13:43
Beitrag #8

Rene_B Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: May 2011

2010
2011
DE



RE: Prozessor/Thread Zuweisung
(02.08.2011 08:17 )win98 schrieb:  in der schnellen schleife läuft eine zustandsmachine. da sind die schritte eher weniger teilbar.
Semaphore hab ich auch schon in betracht gezogen, aber die sind doch nur dazu da um doppelten speicherzugriffen vorzubeugen und deadlocks zu vermeiden, wie hilft mir das denn weiter?
Wenn du dir die Prinzipien dahinter anschaust, wirst du ganz automatisch auf Probleme und Lösungen im Umgang mit parallelisierbarem Code stoßen, sodass du eine Vorstellung davon bekommst, wie du damit umgehen musst und was überhaupt parallelisierbar ist.

(02.08.2011 08:17 )win98 schrieb:  Ich wollte halt nur das maximale aus der CPU rausholen, weil nur einer von vier Threads auf 100% steht und der Rest fast nix tut.

Vllt noch eine Frage, ist es dann doch lieber, wenn ich Hyperthreading abschalte? Ein Kern ist bestimmt (bei einer Schleifenabarbeitung) effizienter alls zwei Threads, oder sehe ich das falsch?

Lässt sich pauschal nicht sagen, da die Threads dazu da sind, um ungenutzte Einheiten während eines Taktes zu nutzen.
Beispielsweise braucht ein LOAD Befehl nicht die ALU und ein ADD braucht keinen Speicherzugriff (sofern die daten im Register stehen), sodass man die Befehle dekodieren und parallel auf dem gleichen Kern ausführen lassen kann.
Das ist allerdings stark vereinfacht dargestellt ^^ (Es gibt ja noch ne Pipeline etc).

Also theoretisch kann es schneller sein, praktisch laufen aber genausogut andere Programme auf deinem Rechner, die deine Ausführung ohne die threads komplett unterbrechen würden.
Also da hilft eigentlich nur ausprobieren.
Generell kann man sagen:
Kannst du alle virtuellen Kerne auslasten, ist es schneller diese auch zu nutzen. (Auch hier gibts natürlich Ausnahmen)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  RGB Zuweisung INI-Datei simcum 4 3.638 25.03.2020 23:47
Letzter Beitrag: simcum
  "exit vi" - finde den thread nich mehr... gottfried 5 5.308 01.08.2013 08:24
Letzter Beitrag: gottfried
  Word Protokoll (Tabellen) Fehler in Zuweisung akoKE 7 8.062 08.03.2013 11:38
Letzter Beitrag: akoKE
  Wait im UI Thread (?) dimitri84 8 7.297 02.05.2012 07:05
Letzter Beitrag: dimitri84
  SubVI unabhängig ausführen ? * neuer Thread gottfried 14 11.461 10.12.2010 09:25
Letzter Beitrag: gottfried
  String abfrage und zuweisung kcccp 7 5.913 21.08.2009 13:13
Letzter Beitrag: TSC

Gehe zu: