Cela signifie-t-il le nombre de processeurs virtuels dans un processeur physique?
Si le nombre de frères et sœurs est égal au nombre de cœurs, vous avez des processeurs qui ne sont pas hyperthreading ou hyperthreading est désactivé, si le nombre de frères et sœurs est 2x le nombre de cœurs, alors vous avez un processeur hyperthreading avec hyperthreading activé. Il y a un bon article ici .
Le nombre de frères et sœurs sur un processeur est le nombre total d'unités d'exécution au sein de ce processeur. Cela comprendra à la fois des cœurs supplémentaires et l'hyperthreading.
Par exemple,
siblings : 2
. Dual core, pas d'hyperthreading.siblings : 4
. Dual core, avec hyperthreading.siblings : 2
. Monocœur, avec hyperthreading.Tout d'abord, comprenez les termes ci-dessous et leur contexte d'utilisation.
Les PC modernes sont généralement livrés avec des processeurs hyperthreadés multicœurs. Par exemple, Linux s'exécutant sur un PC équipé d'un processeur Intel hyperthread à quatre cœurs, verra 8 CPU (4 cœurs x 2 hyperthreads).
Les serveurs modernes sont généralement des systèmes multicœurs et multiprocesseurs. Un serveur typique aura deux sockets, chacun ayant 24 cœurs hyperthreadés. Donc, Linux fonctionnant sur ce système verra 96 CPU (2 sockets x 24 cœurs x 2 hyperthreads)
Pour en revenir à la question réelle, les processeurs partageant le cache seront appelés frères et sœurs. L'organisation du cache sera similaire (bien qu'elle varie en fonction de l'architecture),
Considérez un système multicœur-multi-processeur avec 2 sockets. Chaque sockets ayant 24 cœurs avec hyperthreading. Dans ce cas, Linux verra un total de 96 processeurs numérotés de 0 à 95. Le socket 1 aura des processeurs 0-47 et le socket 2 en aura 48-95 (contrairement à cela, généralement les nombres seront entrelacés). Pour ce système avec l'organisation de cache mentionnée ci-dessus,
Le noyau utilise le nombre de frères et sœurs pour équilibrer la charge par exemple;
Quatre tâches s'exécutent sur un système ayant deux packages physiques, chacun ayant deux cœurs (partageant le cache de dernier niveau) et chaque cœur ayant deux threads logiques. L'équilibrage de charge entre en jeu dans le domaine multicœur pour le premier package, ce qui entraîne une répartition de charge égale entre tous les cœurs.