Je suis intéressé par l'équilibrage de charge pour les systèmes CPU multicœurs. Si vous utilisez 1 CPU avec plusieurs cœurs, est-il plus économe en énergie pour équilibrer la charge sur plusieurs cœurs, ou essayez de remplir des cœurs uniques et de laisser les autres inactifs.
L'hypothèse de base est que la quantité de travail effectuée dans les deux cas est exactement la même, en même temps. Donc, est-il plus efficace d'utiliser 4 cœurs dans le même processeur avec 25% de charge chacun ou 1 cœur avec 100% de charge.
Je suppose qu'un cœur avec une charge de 100% devrait être plus efficace, mais comme je me trompe peut-être, je cherchais des réponses sérieuses à ce problème (pas de suppositions).
cpu-usage
power-consumption
private_meta
la source
la source
Réponses:
OMI, cette question est simplement sans réponse dans le cas général.
Sur mon bureau, j'ai l'un de ces nouveaux processeurs compatibles Core i7-980x à 6 cœurs TurboBoost. Si vous chargez un seul cœur sur cette machine, cela augmentera la vitesse d'horloge de ce cœur, augmentant ainsi la consommation d'énergie du processeur, ce qui fera une énorme différence. Ce processeur ainsi que d'autres processeurs plus modernes peuvent partiellement mettre hors tension les cœurs inactifs, ce qui augmente les économies d'énergie. Ce n'est pas aussi vrai sur les anciens modèles de CPU.
Gardez à l'esprit que le travail que vous avez à faire avec un cœur sera nécessairement différent de celui que vous faites avec plusieurs cœurs. S'il est vrai que vous pouvez répartir la charge sur plusieurs cœurs, vous constaterez que beaucoup de temps supplémentaire sera consacré au seul cœur à effectuer des changements de contexte coûteux, et vos performances en souffriront.
Quoi qu'il en soit, le problème a trop de variables pour vraiment répondre. On pourrait continuer encore et encore sur les différents types de charges, et quiconque essaie de comparer pour obtenir une réponse finira (probablement par inadvertance) par faire des comparaisons pommes-oranges qui ne s'appliquent pas dans d'autres cas d'utilisation.
Oh, et encore une chose. La plupart des gens citeront probablement l'efficacité en termes de puissance . Vous ne voulez pas tomber dans ce piège. Étant donné que le temps de traitement des charges sera nécessairement différent selon la façon dont les charges sont équilibrées, vous devez intégrer le résultat au fil du temps pour trouver la quantité nette d' énergie utilisée pour terminer les travaux afin d'arriver à un résultat crédible.
la source
J'ai fait quelques tests aujourd'hui en utilisant cet ordinateur (Intel C2D T8100) et en utilisant des applications SETI @ Home optimisées de l'installateur lunatique 0.36. J'ai utilisé M $ Joulmeter pour calculer la consommation d'énergie. J'ai mesuré les temps de l'arbre de consommation. Tout d'abord, j'ai laissé BOINC prendre 100% de cœurs et 100% de temps CPU et le laisser fonctionner pendant une heure. Le processeur consommait 20 W et les graphiques de temps CPU du gestionnaire de tâches étaient plats à 100%. La consommation électrique moyenne de mon ordinateur était de 45,05 W et augmentait et au moment où j'ai arrêté la consommation d'énergie de test était de 46,18 W.
Dans le deuxième test, j'ai configuré BOINC pour prendre 50% des cœurs disponibles et 100% du temps CPU et le laisser fonctionner pendant une heure. La consommation d'énergie du processeur variait entre 12W et 13W. La consommation moyenne était de 42,72 W et en hausse. Au moment où j'ai arrêté le test, la consommation était de 44W. Afin que le graphique du temps CPU pour le cœur cible soit plat, j'ai défini l'affinité du programme sur un cœur et la priorité sur élevée. Le graphique pour les autres cœurs a montré une utilisation du temps CPU légèrement supérieure à la normale.
Pour le troisième test, j'ai défini BOINC pour utiliser 100% des cœurs disponibles et 50% du temps CPU. La consommation électrique variait en grands sauts entre 5W et 17W. La consommation électrique moyenne après une heure de test était de 39,96 W et en baisse. Graphiques de temps CPU looled comme
/\/\/\/\/\/\/\/\/\/\/\/\/\
. Des pics étaient attendus en raison de la taille des unités de temps utilisées par BOINC.Je pense donc qu'il est plus efficace d'utiliser deux cœurs fonctionnant à demi-charge que d'exécuter un cœur à pleine charge.
Et oui, je sais que pour une étude appropriée, il faut beaucoup plus d'échantillons, mais à l'époque je n'ai pas assez d'ordinateurs ni de temps pour faire des statistiques adéquates.
la source
La réponse à votre question est double: si vous exécutez du code parallèle hautement vectorisable, l'équilibrage de la charge sur plusieurs cœurs est toujours plus efficace. Les noyaux fonctionneront à des charges plus faibles, libérant moins de chaleur qu'un seul noyau poussé à sa limite. En revanche, si votre code n'est pas parallélisable, son exécution sur plusieurs cœurs est moins efficace en raison du nombre d'échecs de cache qui se produiront en raison de dépendances à travers le code. Cela peut encore générer moins de chaleur, mais cela prendra certainement plus de temps pour terminer votre tâche que de l'exécuter sur un seul cœur.
la source
Votre question telle qu'elle a été posée comporte trop d'inconnues. Vous posez des questions sur l'efficacité en termes de temps ou d'efficacité énergétique? Code non parallèle ou code parallèle? Travail unique ou multitâche de bureau moyen? Si vous avez une facture d'énergie de plus de 1000 $ / mois pour vos ordinateurs, cela POURRAIT valoir la peine de s'inquiéter. Sinon, vous ne pouvez pas économiser suffisamment pour que le problème mérite d'être résolu. Amusant de parler - mais si vous avez un problème grave, la meilleure réponse est: essayez différentes choses et voyez ce qui fonctionne.
la source