0 Daumen
360 Aufrufe

Was ist "Soft Affinity" und warum sollte der Scheduler sie berücksichtigen?

Avatar von

1 Antwort

0 Daumen
 
Beste Antwort
Was ist "Soft Affinity"

Im Vergleich zur Hard Affinity kann bei der Wahl von Soft Affinity ein Thread auf jeder CPU laufen. Das System merkt sich, auf welcher CPU ein Thread zuletzt gelaufen ist (die sogenannte „Soft Affinity CPU“). Der Thread soll bevorzugt auf der CPU laufen, auf der er zuletzt lief (wegen möglichen Restbeständen in den Caches). Zugunsten der Soft Affinity kann der Scheduler die Reihenfolge der Threads in der Ready-Queue manipulieren. Die Thread-Priorität hat aber Vorrang vor der Soft Affinity! Wenn es mehrere (idle) CPUs gibt, auf denen ein Thread laufen kann, sollte der Scheduler die „Soft Affinity CPU“ wählen. 

warum sollte der Scheduler sie berücksichtigen

Es ist wahrscheinlich, dass der Cache der CPU noch einige Daten von dem Thread enthält, der zuvor auf dieser CPU lief (Teile des CPU-Kontextes sind möglicherweise noch vorhanden). Bei einem Context-Switch können so Ressourcen eingespart werden. Um z. B. die Neuberechnung von Variablenwerten zu vermeiden, kann der Scheduler den Thread der Soft Affinity CPU zuweisen, um auf die Ergebnisse im Cache zurückzugreifen.

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community