D'après ce que j'ai compris, l'ordonnanceur du noyau dispose déjà d'un mécanisme appellé «scheduling domains», qui permet de prendre en compte la répartition des coeurs dans un systèmes : sur une même puce, sur deux puces différentes dans la même machine, sur des puces différentes dans des machines différentes (NUMA). Et en fonction de ça, l'ordonnanceur peut optimiser le placement des threads. Ainsi, au lieu de changer brutalement un thread d'un processeur à un autre, il peut essayer de le conserver dans le même processeur, pour bénéficier des effets de cache communs dans une architecture multi-coeur.
# Scheduler domains
Posté par Thomas Petazzoni (site web personnel) . En réponse au journal Le dual core : faussement nouveau ?. Évalué à 10.
D'après ce que j'ai compris, l'ordonnanceur du noyau dispose déjà d'un mécanisme appellé «scheduling domains», qui permet de prendre en compte la répartition des coeurs dans un systèmes : sur une même puce, sur deux puces différentes dans la même machine, sur des puces différentes dans des machines différentes (NUMA). Et en fonction de ça, l'ordonnanceur peut optimiser le placement des threads. Ainsi, au lieu de changer brutalement un thread d'un processeur à un autre, il peut essayer de le conserver dans le même processeur, pour bénéficier des effets de cache communs dans une architecture multi-coeur.
Voir paragraphe 5.7.2 de http://josh.trancesoftware.com/linux/linux_cpu_scheduler.pdf(...)
Thomas