Analyse des performances
Pourquoi, lors de mesures de performances sur un système multicœur ou NUMA, fixe-t-on parfois les threads sur des cœurs spécifiques (réglage de l'affinité) ?
- ALorsque l'OS déplace les threads entre cœurs, le contenu des caches est perdu ou une mémoire distante est utilisée, ce qui disperse les résultats
- BLa fixation double le nombre de cœurs
- CSans fixation, le programme ne peut pas s'exécuter
Afficher la réponse et l'explication
Réponse : A. Lorsque l'OS déplace les threads entre cœurs, le contenu des caches est perdu ou une mémoire distante est utilisée, ce qui disperse les résultats
Pour répartir la charge, l'OS peut déplacer un thread vers un autre cœur. Le cache du cœur de destination ne contient pas les données nécessaires et, sur un système NUMA, le thread peut se retrouver sur un socket éloigné de la mémoire où résident ses données. Le temps d'un même programme varie alors selon le cœur utilisé. Fixer les threads sur des cœurs et harmoniser l'emplacement de la mémoire améliore la reproductibilité des mesures.