-
- Downloads
Improve affinity integration.
- Setup node affinity per task_team - Polish push task to push on the i-th numa node of the team for clause 'affinity(node: i)' - Remove_my_task: basic hierarchical remove of task from local queues (core/NUMA) - Steal_task: basic hierarchical steal by first visiting local queues (core/NUMA) then random numa queue It remains to implement: - strict affinity clause-> using private queue per ressources - having queue selection based on real ressource where thread is currently running (sched_getcpu)
-
Philippe, J'ai poussé une version basic de la hiérarchie (remove_my_task + steal_task). Il faudrait être capable de garantir que les structures dans task_team ne sont initialisées qu'une seule fois (les queues). Les queues NUMA devraient être allouées par team non pas partagées - idem queue / core A bien définir: sémantique de affinity(core: i) (ou thread ?) et affinity(node: i) == qu'elle est le sens du i. Ressource physique i ou la i-ème dans la team. Actuellement ce que j'ai poussé -> i-ème dans la team (pour les nœuds).
Reste à utiliser sched_getcpu dans remove_my_task et steal_task...
-
Argh j'ai fait toute les modifs dont tu parles, mon push sur hws ça préparait justement ça... J'ai poussé mon implem ici, je suis un peu fatigué pour faire le merge/rebase maintenant.
Faut aussi que je regarde en détails les perfs, parce que ça marche mais c'est vraiment pas terrible pour l'instant.