Bonjour
Petite question assez pointue sur le fonctionnement du noyau linux 2.6.24, en fonctionnement multiprocesseur.
Au démarrage, chaque processeur crée un processus 0. Lors de la création d'un nouveau processus, sur quel processeur l'ordonnanceur va créer ce processus ? Est-ce en fonction de la charge de ces derniers ?
Merci
Pierre
# Processus != processeur
Posté par Obsidian . Évalué à 4.
Un processeur n'a pas à proprement parler de notion de processus. C'est une structure organisationnelle qui n'a de sens que du point de vue du système d'exploitation.
Autant que je sache, sur les machines SMP, le premier processeur démarre tout seul et le système se charge de réveiller les autres ensuite. L'ordonnanceur, par contre, fait l'objet d'études poussées que je serais incapable de te décrire en détails dans ce post, mais qui sont en tous points comparables à la planification de l'exécution des différents processus par un processeur seul.
On retiendra quand même la notion d'affinité processeur, qui consiste à exécuter un processus sur un même processeur le plus longtemps possible, car la rotation a un coût, ne serait-ce qu'au niveau des lignes de cache qu'il faut recharger à chaque fois. Ça donne même parfois lieu à des situations cocasses : certains processeurs d'entrée de gamme s'avèrent plus performants que leurs homologues plus évolués car il partagent une même ligne de cache. Dans la plupart des cas de figure, c'est désastreux, mais avec des opérations vectorisées et bien distribuées, ça peut être autant de données en moins à recharger, et autant d'accès bus évités, également.
# présentation d'Alan Cox sur SMP aux RMLL 2007
Posté par BAud (site web personnel) . Évalué à 3.
http://2007.rmll.info/article118.html
je n'ai pas retrouvé le document en revanche :/
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.