AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi OmniThread Library Prozessorauswahl beschränken
Thema durchsuchen
Ansicht
Themen-Optionen

OmniThread Library Prozessorauswahl beschränken

Ein Thema von BastiFantasti · begonnen am 13. Sep 2023 · letzter Beitrag vom 14. Sep 2023
Antwort Antwort
BastiFantasti

Registriert seit: 5. Nov 2014
Ort: Baden Württemberg
133 Beiträge
 
Delphi 11 Alexandria
 
#1

OmniThread Library Prozessorauswahl beschränken

  Alt 13. Sep 2023, 20:58
Hallo zusammen,

ist es möglich, beim Einsatz der parallel.ForEach Funktion der OmniThreadLibrary die CPU-Kernzuweisung anzupassen?
Ich weiß, dass man über einen Parameter die Anzahl der zu verwendenden Kerne beschränken kann.
Kann man der Funktion aber auch mitteilen, dass z.B. nur die Kerne 2 und 3 oder 3-5 verwendet werden dürfen?

Viele Grüße
Bastian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: OmniThread Library Prozessorauswahl beschränken

  Alt 13. Sep 2023, 21:06
Ob das geht auch in der Lib geht, weiß ich nicht,
aber du kannst zumindestens als einen der ersten Befehle ein MSDN-Library durchsuchenSetProcessAffinityMask in deine Thread-Funktionen einfügen.

Aber ob das so sinnvoll ist?
Mindestens Windows 11 schiebt alle Threads eh so alle 20-30 Sunden reih um, um die Wärmeleistung auf alle Kerne gleichmäßig zu verteilen.

Wenn du Pech hast, bremst du dich damit selbst aus, wenn deine Kerne überhitzen und runtergetaktet werden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (13. Sep 2023 um 21:08 Uhr)
  Mit Zitat antworten Zitat
BastiFantasti

Registriert seit: 5. Nov 2014
Ort: Baden Württemberg
133 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: OmniThread Library Prozessorauswahl beschränken

  Alt 13. Sep 2023, 21:38
Danke für die schnelle Rückmeldung zu so später Stunde.

Ich denke auch nicht, dass es sinnvoll ist.
Ist aber leider eine aktuelle Anforderung vom Kunde.
Scheinbar werden die Kerne 1+2 von deren Software verwendet (exklusiv) und die restlichen 2-3 Kerne dürfen/sollen von Drittanwendungen verwendet werden.

Viele Grüße
Bastian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: OmniThread Library Prozessorauswahl beschränken

  Alt 13. Sep 2023, 22:49
Und auch noch etwas Anderes zum Aufpassen.

Mein i7 im Notebook hat 16 Kerne. (laut Taskmanager)

Aber eigentlich sind es 12 Kerne
* 4 Performance-Core mit Hyperthredding
* 8 Efficiency-Core ohne Hyperthredding
https://www.intel.de/content/www/de/...fications.html

Erstmal kann man da schön sehen, wie die CPU-Belastungen wandern ... jeweils nach der Hälfte der Auslastungengrafiken wandert plötzlich die Auslastung 1-2 Kerne weiter.
Und im Moment seh ich, wie die letzten 8 Kerne komplett schlafen und bei den ersten 8 jeweils zwei bis drei abwechselnd schlafen ("geparkt" sind).
Wird dann sichtbare, bei den 63 Kernen auf dem Server.



Vielleicht wäre es da sinnvoller die Prozessprioritäten zu nutzen. (das ist sogar schon im TThread eingebaut)
Wichtige Prozesse hochstufen und die unwichtigen runter.
Das geht einmal im eigenen Programm, sowie über den Taskmanager, aber es gibt auch Tools, welche das quasi permanent zuweisen, bei Programstarts.


In ARM-CPUs wird das Ganze noch schlimmer.
Bei Intel kann jeder Kern das gleiche machen.
In ARM gibt es Cores mit unterschiedlichem Aufbau und unterschiedlichen Befehlssätzen.
(so als wenn man eine moderne Intel-CPU, eine alte DOS-CPU und eine Gameboy-CPU ein Intel und ARM zusammenklebt ... da brauchst du im Programm unterschiedlich kompilierte Programmcodes, jenachdem auf welchem Kern das laufen soll)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (13. Sep 2023 um 22:56 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: OmniThread Library Prozessorauswahl beschränken

  Alt 14. Sep 2023, 06:42
Hallo,
geht auch von außerhalb mit "Start".

https://bitsum.com/tools/cpu-affinity-calculator/
Heiko
  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 14:59 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