Prestatiemeting en profiling
Waarom worden bij het meten van prestaties op multicore- en NUMA-systemen threads soms aan een bepaalde core vastgezet (affiniteit instellen)?
- AOmdat wanneer het besturingssysteem threads tussen cores verplaatst, de inhoud van de cache verloren gaat of ver geheugen wordt gebruikt, waardoor de resultaten variëren
- BOmdat het vastzetten het aantal cores verdubbelt
- COmdat het programma zonder vastzetten niet kan worden uitgevoerd
Antwoord en toelichting tonen
Antwoord: A. Omdat wanneer het besturingssysteem threads tussen cores verplaatst, de inhoud van de cache verloren gaat of ver geheugen wordt gebruikt, waardoor de resultaten variëren
Het besturingssysteem kan threads naar een andere core verplaatsen om de belasting te verdelen. De cache van de nieuwe core bevat de benodigde gegevens niet, en in een NUMA-systeem kan de thread zelfs naar een socket ver van het geheugen waar de gegevens staan worden verplaatst. Daardoor verandert de tijd van hetzelfde programma al naargelang de core waarop het draaide. Door threads aan cores vast te zetten en ook de plaatsing in het geheugen gelijk te trekken, wordt de reproduceerbaarheid van de meting groter.