Leistungsbewertung und Profiling
Warum werden bei Leistungsmessungen in Multicore- oder NUMA-Systemen Threads mitunter an bestimmte Kerne gebunden (Affinität gesetzt)?
- AWeil bei Verschiebung der Threads zwischen den Kernen durch das Betriebssystem Cache-Inhalte verloren gehen oder entfernter Speicher genutzt wird und die Ergebnisse streuen
- BWeil sich durch die Bindung die Kernzahl verdoppelt
- CWeil das Programm ohne Bindung nicht ausführbar ist
Antwort und Erläuterung anzeigen
Antwort: A. Weil bei Verschiebung der Threads zwischen den Kernen durch das Betriebssystem Cache-Inhalte verloren gehen oder entfernter Speicher genutzt wird und die Ergebnisse streuen
Das Betriebssystem verschiebt Threads zur Lastverteilung mitunter auf andere Kerne. Im Cache des Zielkerns fehlen die benötigten Daten, und in NUMA-Systemen kann der Thread auf einen Sockel wandern, der vom Speicher mit den Daten weit entfernt ist. Daher ändert sich die Zeit bei demselben Programm je nachdem, auf welchem Kern es lief. Werden Threads an Kerne gebunden und auch die Speicherplatzierung angeglichen, steigt die Reproduzierbarkeit der Messung.