Est-il possible d'influencer la manière dont les processeurs sont énumérés sous Linux?

32

J'ai un HP DL380 G7 avec 2 processeurs incompatibles. L'un est un processeur quadricœur avec des cœurs plus rapides et l'autre, un processeur à 6 cœurs avec des cœurs plus lents.

Sur cette boîte, je lance une application qui, pour des raisons de licence, utilisera uniquement CPU0-CPU3.

Pour moi, il serait souhaitable que les cœurs les plus rapides du processeur quad core soient énumérés dans CPU0-CPU3 du système d'exploitation, ce qui me donne un bonus de performance pour a) l'utilisation de cœurs cadencés plus rapides et b) le maintien de tous les threads sur le même processeur physique. .

Existe-t-il un moyen de rendre cela possible, soit dans le BIOS, soit dans un fichier de configuration ou une option de démarrage sous Linux?

Les modèles de CPU spécifiques sont:

CPU E5649 Intel (R) Xeon (R) à 2,53 GHz (noyau hexagonal)

Processeur E5640 @ 2,67 GHz (quad core) Intel (X) Xeon (MD)

paulos
la source
Veuillez publier les modèles de CPU spécifiques à partir de cat /proc/cpuinfo.
ewwhite
24
Upvoting parce que je ne savais même pas que des processeurs inégaux étaient possibles, toujours quelque chose de nouveau à apprendre ...
Kyle Brandt
2
@kyle c'est possible, mais pas pris en charge ni approuvé par HP.
ewwhite
1
@kasperd Sous HP-land, si vous chargez deux processeurs de différentes étapes, vous obtenez une CPU mismatch detectederreur lors du POST. Cela pourrait arriver dans une génération de CPU. par exemple, un Intel 5606 et 5690 dans le même châssis.
ewwhite
3
Si quelqu'un est intéressé par ce que nous avons réellement fait ici, nous avons effectué un voyage en voiture jusqu'au centre de données et retiré physiquement le processeur quad core des serveurs
paulos

Réponses:

27

Wut?!?

C'est fou , tu sais? C'est non supporté et probablement pas bon pour votre matériel. Vous devriez utiliser des processeurs identiques sur votre serveur.

Je suppose que vous exécutez simplement votre application dans un groupe de contrôle ou un bouclier (ou via taskset) ne contenant que les cœurs de processeur que vous souhaitez utiliser. Vous pouvez également épingler l'accès mémoire à ce processeur avec numactl. Mais vraiment, pourquoi ne supprimeriez-vous pas entièrement le processeur le plus lent ou ne paieriez-vous ce qu'il faut pour que le système soit conforme aux spécifications?

Peut-être que la chose la plus évidente, si votre application est codée en dur pour utiliser CPU0-CPU3, est d’échanger physiquement les sockets ... mais en réalité, utilisez simplement un processeur ici.

Si vous vous référez au matériel ProLiant DL380 G7, votre processeur "plus rapide" est probablement un processeur Nehalem série 5500, le processeur à noyau hexagonal plus lent étant un Westmere. Avez-vous comparé du tout? Quels processeurs spécifiques sont installés?

Modifier:

Bon, ce sont donc au moins des processeurs de la même génération / pas à pas. Mais c’est quand même une mauvaise idée… La différence de spécifications de processeur n’est même pas si grande (par rapport à quelque chose comme un Intel X5690 à 3,47 GHz).

ewwhite
la source
4
Tout le monde a la même réaction! Je sais qu'idéalement, le processeur serait le même, mais c'est ce que HP nous a redonné dans la journée. C’est la main qui m’a été distribuée, donc je dois en tirer le meilleur parti jusqu’à la prochaine actualisation du matériel. Les processeurs sont Xeon E5649 à 2,53 GHz (noyau hexagonal) et E5640 à 2,67 GHz (quad core). Supprimer complètement le processeur à 6 cœurs est l’une des options proposées. Il serait plus judicieux de pouvoir désactiver entièrement le socket dans le BIOS, mais cela ne semble pas possible.
Paulos
@paulos Quelle est cette application?
ewwhite
Il fonctionne réellement comme un pare
paulos
3
@paulos Alors pourquoi est-ce que 2,67 GHz par rapport à 2,53 GHz importent? Il suffit de mettre le processeur à 6 cœurs dans le serveur et à retirer le 4 cœurs.
ewwhite
re: spécification du processeur, oui je pense que ce n'est que d'environ 5% plus rapide ou quelque chose comme ça. Je m'attends à ce que le gain de performances soit attribué au fait que tous les threads de travail, et en particulier la tempête d'irq des cartes réseau, se trouvent sur le même processeur physique. edit: Oui, utiliser uniquement le processeur 6 cœurs est également une possibilité.
paulos