Leistungsbewertung und Profiling

Warum werden bei Leistungsmessungen in Multicore- oder NUMA-Systemen Threads mitunter an bestimmte Kerne gebunden (Affinität gesetzt)?

  1. AWeil bei Verschiebung der Threads zwischen den Kernen durch das Betriebssystem Cache-Inhalte verloren gehen oder entfernter Speicher genutzt wird und die Ergebnisse streuen
  2. BWeil sich durch die Bindung die Kernzahl verdoppelt
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Leistungsbewertung und Profiling

  1. Was ist bei der Leistungsanalyse von GPU-Programmen zuerst zu prüfen?
  2. Welcher Gesichtspunkt gehört nicht zu dem, was bei der Auswahl von Servern im Rechenzentrum zusätzlich zur Spitzenleistung zu beachten ist?
  3. Was ist beim Bewerten der Behauptung „mit der neuen Methode 100-mal schneller“ am zutreffendsten zu prüfen?
  4. Warum wird die Leistung von SSDs oft nicht nur mit der sequenziellen Lesebandbreite (MB/s), sondern auch mit IOPS (Ein-/Ausgabeoperationen pro Sekunde) beim zufälligen 4-KB-Lesen angegeben?
  5. Misst man die Zeit je Element beim wiederholten Lesen eines Arrays bei schrittweise wachsender Arraygröße, steigt die Zeit bei bestimmten Größen stufenweise an. Welche Begründung ist richtig?