La gestion de l'alimentation du processeur affecte-t-elle les performances du serveur?

44

Je faisais quelques analyses simples sur notre serveur de base de données (en direct) en dehors des heures de pointe, et j’ai remarqué que les requêtes donnaient des résultats quelque peu erratiques .

J'avais activé le plan d'économie d'énergie "équilibré" sur tous nos serveurs il y a quelque temps, car je pensais que leur taux d'utilisation était très élevé et que nous pouvions ainsi économiser de l'énergie.

J'avais supposé que cela n'aurait aucun impact significatif et mesurable sur la performance. Toutefois, si les fonctionnalités d'économie d'énergie du processeur ont un impact sur les performances typiques , en particulier sur le serveur de base de données partagé, je ne suis pas sûr que cela en vaut la peine!

J'ai été un peu surpris de constater que notre niveau Web, même avec une charge de 35 à 40%, passe de 2,8 Ghz à 1,25 V à 2,0 Ghz à 1,15 V.

Je m'attends totalement à ce que le down-clock économise de l'énergie, mais ce niveau de charge me semble suffisamment élevé pour qu'il soit réglé à la vitesse maximale.

Notre serveur de base de données de 8 cpu a une tonne de trafic, mais une utilisation du processeur extrêmement faible (à cause de la nature de nos requêtes SQL - beaucoup d'entre elles, mais de simples requêtes). Il est généralement assis à 10% ou moins. Je suppose donc que le downclocking était encore plus important que la capture d'écran ci-dessus. Quoi qu’il en soit, lorsque je suis passé à la gestion de l’alimentation en «hautes performances», j’ai vu mon benchmark de requête SQL s’améliorer d’environ 20% et devenir très cohérent d’une exécution à l’autre .

J'imaginais que je pensais que la gestion de l'alimentation sur des serveurs peu chargés était une solution gagnante, sans perte de performances ni d'économies d'énergie significatives, car le processeur est généralement le consommateur n ° 1 ou n ° 2 de la plupart des serveurs. Cela ne pas semble être le cas; vous perdrez des performances avec la gestion de l'alimentation du processeur activée, à moins que votre serveur ne soit toujours soumis à une charge telle que la gestion de l'alimentation se soit réellement éteinte. Ce résultat m'a surpris.

Quelqu'un a-t-il une autre expérience ou des recommandations à partager sur la gestion de l'alimentation du processeur pour les serveurs? Est-ce quelque chose que vous allumez ou éteignez sur vos serveurs? Avez-vous mesuré beaucoup de puissance économisez-vous? Avez-vous comparé avec elle de temps en temps?

Jeff Atwood
la source
2
Je déteste dire cela, mais vous avez fourni votre propre réponse. Voir les trois bulles en regard de "Performance" pour le mode équilibré et six pour le mode haute performance? Il y a la différence :) L'économie d'énergie est mise en œuvre en grande partie par le downclocking du processeur. Vous allez voir une performance frapper de cela, même si cela peut la ramener sous charge.
Bill Weiss
oui, mais "équilibré" est activé par défaut dans Windows Server 2008 R2. Cela implique, pour moi, qu'il ne devrait pas y avoir de perte de performances significative dans une utilisation typique, par exemple un serveur peu chargé.
Jeff Atwood
4
Trois bulles contre six! Cela ressemble à une énorme différence! :)
Bill Weiss
1
Windows: Détruire les humains depuis 1985.
Michael Graff Le

Réponses:

16

Je ne suis pas sûr des serveurs, mais l’idée actuelle en matière de périphériques embarqués n’est pas de s’inquiéter des étapes entre faible consommation et inconditionnelle, car le temps supplémentaire que cela prend absorbera vos économies d’énergie. quantité réelle de processeur à laquelle ils basculent au plus rapide possible pour pouvoir terminer le travail et revenir au ralenti à faible consommation.

pjz
la source
1
Je suis d'accord que c'est la façon dont cela devrait fonctionner sur un serveur.
Jeff Atwood le
11

J'ai toujours désactivé tout type de gestion de l'alimentation sur les serveurs. Je suis curieux de voir ce que d’autres ont pu expérimenter, mais j’ai toujours supposé que si le serveur n’était pas à l’horloge, il y aurait toujours un délai pour «accélérer» le processeur à 100%, et dans un centre de données, tout retard comme celui-ci est inacceptable.

Les données que vous avez fournies semblent corroborer cette hypothèse. Donc, je n'ai pas fait de tests spécifiques, mais il semblerait que vous ne devriez utiliser aucune technologie d'économie d'énergie dans Windows ou le BIOS. J'éteins même les paramètres de réseau et de carte PCI désactivés pour être ultra conservateur.

Dave Drager
la source
8

Combien Power Save ce fait vous :
Si vous décidez que cette fonctionnalité pourrait mettre la stabilité de vos serveurs à risque (je l'expérience à ce sujet ), alors vous pourriez chercher ailleurs les économies d'énergie.

Je voudrais essayer de savoir combien d'énergie cela pourrait économiser pour la quantité de serveurs que vous avez (Bien que peut-être vous avez déjà fait cela). Dans la mesure où le graphique que vous avez affiché dans votre réponse correspond à des pourcentages, les économies réalisées par votre entreprise pourraient en réalité être très faibles. Si vous n'avez pas beaucoup de serveurs, il est possible que le nombre de serveurs activés par le mouvement ou quelque chose de ce genre dans votre bureau ne soit pas aussi important, mais vous économiserez plus d'énergie (même si cela n'est pas aussi commercialisable).

Je me souviens avoir lu, il y a quelques années, qu'une des plus grandes entreprises automobiles américaines (oubliées de celles-là) subissait des pressions pour modifier les émissions de gaz d'échappement de ses voitures. Au lieu de cela, la société a montré que si elle plafonnait certaines de ses usines, cela leur coûterait beaucoup moins cher et entraînerait des économies d'émissions beaucoup plus importantes.

N'oubliez pas les disques:
vous pouvez également vérifier que cette fonctionnalité d'économie d'énergie ne ralentit pas le ou les disques s'ils ne sont pas utilisés. Peut-être que pendant un moment, tous les résultats de la requête SQL seraient en RAM, le disque serait utilisé et s'endormir (vous ne savez pas si cela fonctionne comme ça)? Si cela pouvait arriver, il y aurait une grosse pénalité de performance pendant que tout redémarrerait.

Kyle Brandt
la source
4
oh oui, le ralentissement du disque est assez risqué sur les serveurs. Notre NAS était activé et Brent Ozar (notre expert en SQL / DBA) nous a dit que c'était une très mauvaise idée. Chaque spin-up est comme une loterie pour voir si le lecteur réussira à revenir :)
Jeff Atwood
Le mode "équilibré" me permet d'économiser 10 watts au ralenti par rapport au mode "haute performance" (~ 15,5 W contre environ 25,5 W sur un Core i7 4790). Cependant, le mode équilibré sur le serveur Windows 2012 ne semble pas atteindre la vitesse d'horloge maximale du processeur, ce qui nuit gravement aux performances des requêtes de base de données.
Ryan Anderson
8

vous perdrez des performances avec la gestion de l'alimentation du processeur activée, à moins que votre serveur ne soit toujours soumis à une charge telle que la gestion de l'alimentation se soit réellement éteinte. Ce résultat m'a surpris.

Préface: Je fais quelques bonds / généralisations à propos d’Intel Xeons et de leurs performances en matière d’économie d’énergie avec SpeedStep. En lisant à propos des processeurs 45nm Intel Xeon " Yorkfield ", les technologies EIST (Enhanced Intel SpeedStep Technology) et C1E (Enhanced Halt State) semblent être le véritable coupable de la situation. Je suis d’accord avec votre affirmation de croire que le fait d’activer de telles fonctions de gestion de l’énergie aiderait à économiser l’énergie, mais lorsque les processeurs ont besoin de l’énergie sous charge, le système revient à une vitesse d’horloge normale. Il semble que EIST et C1E aient des effets secondaires qui ne sont pas intuitivement impliqués lorsque vous utilisez l'une ou l'autre des options du BIOS. Après avoir parcouru de nombreux sites Web d’overclocking, il apparaît que ces deux paramètres dans le BIOS sont assez frustrants.

De http://www.overclock.net/intel-cpus/376099-speedstep-guide-why-does-my-processor.html :

C1E (Enhanced Halt State) : C1E est le plus simple des deux composants. Il peut être activé ou désactivé dans le BIOS et fonctionne indépendamment du système d'exploitation. C1E a deux configurations - inactif et charge. Lorsque l'utilisation du processeur est relativement faible, cette fonction abaisse le multiplicateur de votre processeur à son réglage le plus bas (généralement 6x) et abaisse légèrement son vCore. Lors d'une application gourmande en ressources processeur, le multiplicateur sera porté à sa valeur maximale et fournira une légère augmentation de vCore pour compenser. Dans notre exemple, C1E fera fonctionner votre processeur à 6x ou 9x le FSB .

EIST (technologie Intel SpeedStep améliorée) : il s’agit d’une fonctionnalité très robuste qui offre une grande variété de capacités d’économie d’énergie. Comme son cousin plus simple, EIST peut affecter à la fois la tension de votre CPU et son multiplicateur. Cependant, il a beaucoup plus de niveaux de configuration. Au lieu d'un simple paramètre "lent ou rapide", SpeedStep peut utiliser tous les multiplicateurs disponibles. Dans notre exemple, EIST permettra à votre processeur de fonctionner avec un multiplicateur de 6, 7, 8 ou 9 , et choisira celui qui sera utilisé en fonction de la demande de votre processeur. EIST est contrôlé par Windows et utilise les différents «schémas d'alimentation» que vous avez peut-être vus dans votre panneau de configuration.

Bien que l’ajustement de vos paramètres de performance pour «hautes performances» soit probablement le meilleur paramètre pour un serveur de base de données, je suis à peu près certain que ce sont EIST et / ou C1E qui ont provoqué une sous- exécution des processeurs même s’ils auraient dû revenir à des paramètres normaux lors de la charge. considérablement augmenté. La grosse mise en garde qui m’apparaît semble être «qu’est une charge substantielle? Selon le site overclockers.net, ils affirment que EIST utilise ces paramètres de "schémas d'alimentation" pour manipuler les paramètres de votre CPU. Mais rien n’indique le pourcentage de charge ou la durée pendant laquelle le processeur revient à une tension normale.

Encore une fois, je ne suis nullement un expert en la matière pour les processeurs Intel , mais je parie que l' ajustement de ces deux paramètres pourrait vous obtenir les économies d'énergie que vous voulez et les performances que vous devriez obtenir, mais coller avec le réglage « performance maximale » est tout aussi efficace sans qu'il soit nécessaire de redémarrer.

osij2is
la source
5

La réponse rapide est: bien sûr, l'économie d'énergie affectera les performances.

La réponse longue n'est pas amusante. Essentiellement, essayez un réglage, testez les performances et décidez avec quoi vous pouvez vivre.

Les applications et les systèmes sont tellement compliqués qu'il n'y a pas de réponse claire et nette, sauf "oui, le temps de réaction et les autres vitesses du système seront affectés". Si c'est beaucoup plus lent que le disque dur ou le réseau, eh bien, vous voyez l'idée. Testez en réalité.

Michael Graff
la source
4

J'essaie toujours de créer autant de serveurs que possible, mais lorsque je dois «mettre à nu» un serveur, c'est généralement ce dont j'ai besoin ou je veux des performances totalement cohérentes. Donc, pour ces machines critiques, je n’allume JAMAIS quoi que ce soit d’économie d’énergie pour les raisons que vous rencontrez.

*** bang-go-my-green-credentials *

Chopper3
la source
3

Quelques choses:

  1. Vérifiez dans le BIOS que la gestion de l’alimentation est sous le contrôle du système d’exploitation. Il est possible qu'il soit configuré pour être géré par le micrologiciel, et par conséquent, en utilisant une gestion de l'alimentation du processeur idiote et non optimale.

  2. Vérifiez s'il existe des correctifs liés à la gestion de l'alimentation susceptibles de vous manquer. Il y en avait plusieurs notables à l'époque de la sortie de Vista / Server 2008.

  3. Vérifiez la configuration détaillée pour équilibré. Il est possible qu'une autre fonctionnalité d'économie d'énergie entraîne une réduction des performances. En théorie, les performances d'EIST devraient être négligeables, même si une base de données SQL a une empreinte unique et qu'il est concevable qu'elle soit affectée de manière disproportionnée par la gestion de l'alimentation du processeur.

Bigbio2002
la source
1
Oh mon
Dieu
2

Quelques informations de Microsoft (format Word Doc, malheureusement)

Améliorez l'efficacité énergétique et gérez la consommation d'énergie avec Windows Server 2008 R2

Windows Server 2008 est globalement plus économe en énergie que son prédécesseur, Windows Server 2003. Par défaut, Windows Server 2008 exécute le plan d'économies d'énergie «Équilibré» , qui vise à maintenir les performances à un niveau élevé tout en économisant de l'énergie autant que possible. Cela signifie que Windows Server 2008 utilise moins d'énergie qu'une installation de base de Windows Server 2003. Parce que le mode «Équilibré» optimise l'efficacité énergétique out-of-the-box (OOB), Microsoft recommande vivement de laisser les paramètres «Équilibrés» par défaut sélectionnés. dans la plupart des cas.

Windows Server 2008 comprend deux modes par défaut supplémentaires, «Économiseur d'énergie» et «Performances élevées», qui ont des objectifs différents en matière d'alimentation et de performances et peuvent convenir dans certaines situations. Le mode «Haute performance» peut convenir aux serveurs très utilisés et ayant besoin de fournir des performances optimales, quel que soit le coût de l’énergie. Le mode «Économiseur d'énergie» peut être utilisé pour des serveurs peu utilisés, offrant davantage de performances que ce dont ils ont réellement besoin. L'utilisation de «Power Saver» dans cette situation peut permettre des économies d'énergie supplémentaires.

Ces fonctions d’économie d’énergie du processeur au niveau matériel sont identiques sous tous les systèmes d’exploitation. Il s’agit simplement de les activer ou non.

Le graphique d'économie d'énergie de l'absence de gestion de l'alimentation du processeur, par opposition à la gestion de l'alimentation du processeur:

Nous sommes conscients que (et ce graphique montre que) à des niveaux d'utilisation élevés, la gestion de l'alimentation du processeur est automatiquement désactivée. Ce que je ne sais pas, cependant, c'est si, avec de faibles niveaux d'utilisation, les performances globales du serveur ont un impact, par exemple le temps de traitement des requêtes SQL Server simples.

Jeff Atwood
la source
Il semble un peu naïf de croire un livre blanc écrit par Microsoft sur l'un de leurs propres produits. Les objectifs de la fonctionnalité peuvent être corrects, mais les chiffres réels peuvent varier et varieront.
Gekkz
1
ne crois pas quoi? que "équilibré" est activé par défaut ? C’est un fait .. installez Windows Server 2008 R2 si vous ne me croyez pas.
Jeff Atwood
@ Jeff Atwood: Je pense qu'il aurait peut-être voulu dire les résultats des économies d'énergie du graphique. Il serait peut-être dans leur intérêt de présenter les statistiques de manière à montrer le plus d’économies d’énergie possibles pour des raisons de marketing. Par exemple, le pourcentage de puissance maximale semble un peu étrange, pourquoi ne pas simplement mettre les watts réels économisés? Cependant, en tant que clause de non-responsabilité, il pourrait y avoir une très bonne raison pour laquelle ils ont choisi cette métrique (si c'est même le bon mot).
Kyle Brandt
les économies d’énergie (quelques 10% par graphique) permettant de gérer la puissance du processeur sont indiscutables. vous pouvez utiliser un kill-a-watt et votre propre PC à la maison pour le vérifier. Il est en fait plus élevé sur un PC domestique car ils ont généralement moins de disques, de mémoire, de contrôleurs RAID, etc.
Jeff Atwood
@KyleBrandt - Je soupçonne qu'un pourcentage de la puissance maximale a été utilisé pour rendre les résultats plus génériques. De cette façon, vous appliquez les résultats à votre machine (qui consomme 400W de plein fouet, comparé à un serveur de XXX watts dans le document).
EricB
0

Vous ne devriez jamais, jamais, utiliser les paramètres Windows ou le Bios Speedstep fourni avec les processeurs Intel. Il existe également un équivalent AMD. Cela peut causer des problèmes, et j'ai constaté de tels problèmes: avec Speedstep, l'horloge du processeur continuait à monter et à descendre de manière erratique, même si l'utilisation des ressources du processeur était cohérente.

Si vous voulez être plus écologique et économiser de l’énergie, utilisez des processeurs à faible consommation, désignés par le caractère L devant le nom du modèle, tels que L 54XX series et L 55XX series d’Intel.

EDIT: Je suis désolé si j’ai donné l’impression que cette fonctionnalité échouera toujours, je viens d’être brûlée par elle et, dans un système critique, je ne peux pas laisser ce genre de choses arriver, alors j’essaie juste de rester loin de là.

gekkz
la source
Je ne pense pas que cela cause de problèmes, ou il ne serait pas activé par défaut dans presque tous les systèmes d'exploitation et processeurs modernes. Vous pensez peut-être à des variantes beaucoup plus anciennes des technologies d'économie d'énergie du processeur, il y a peut-être quelques années?
Jeff Atwood
Il semble que vous supposiez que tout ce qui est fonctionnalité fonctionne correctement. Je parle en fait d'une expérience directe avec une configuration double E5520 qui présentait ce problème, sur deux serveurs différents.
Gekkz
@gekkz Je ne pense pas que quiconque dise qu'il est impossible qu'il cause des problèmes, mais votre réponse suggère que cela cause toujours, ou presque toujours, des problèmes, ce qui est tout simplement faux. Si c'était le cas, des milliers (des millions?) De serveurs auraient des problèmes causés par cela maintenant.
Phoebus
0

Lorsque vous parlez de performances sur un serveur, il existe différentes manières de voir les choses. Il y a le temps de réponse apparent (similaire à la latence du réseau) et le débit (similaire à la bande passante du réseau).

Certaines versions de Windows Server sont livrées avec les paramètres d’alimentation équilibrée activés par défaut. Comme Jeff l'a souligné. Windows 2008 R2 en fait partie. De nos jours, très peu de processeurs sont à cœur unique. Cette explication s’applique donc à presque tous les serveurs Windows que vous rencontrerez, à l’exception des ordinateurs virtuels à cœur unique. (plus sur ceux plus tard).

Lorsque le plan d'alimentation équilibré est activé, le processeur tente de réduire la quantité d'énergie utilisée. Pour ce faire, il désactive la moitié des cœurs de la CPU dans un processus appelé "parking". Seule la moitié des processeurs seront disponibles à la fois, donc elle consomme moins d'énergie pendant les périodes de faible trafic. Ce n'est pas un problème en soi.

Le problème, c’est que, lorsque les CPU ne sont pas amorties, vous avez doublé le nombre de cycles disponibles pour le système et soudainement déséquilibré la charge du système, passant de (par exemple) une utilisation de 70% à 35%. Le système se penche sur cette question et, une fois la rafale de trafic traitée, il se dit: "Hé, je devrais recomposer un peu pour économiser l'énergie". Et c'est le cas.

Voici la mauvaise partie. Afin d'éviter une répartition inégale de la chaleur et de l'énergie dans les cœurs du processeur, il a tendance à parquer les processeurs qui ne l'ont pas encore été. Et pour que cela fonctionne correctement, la CPU doit tout vider des registres de la CPU (cache L1, L2 et L3) vers un autre emplacement (probablement la mémoire principale).

À titre d’exemple hypothétique, supposons que vous disposiez d’une CPU à 8 cœurs avec C1-C8.

  • Actif: C1, C3, C5, C7
  • Stationné: C2, C4, C6, C8

Lorsque cela se produit, ils deviennent tous actifs pendant un certain temps, puis le système les stocke comme suit:

  • Actif: C2, C4, C6, C8
  • Garé: C1, C3, C5, C7

Mais, ce faisant, le vidage de toutes les données du cache L1-L3 génère une bonne quantité de temps système, ce qui permet d'éviter des erreurs étranges dans les programmes vidés du pipeline de processeurs.

Il y a probablement un nom officiel pour cela, mais j'aime bien l'expliquer par le battage du processeur. Fondamentalement, les processeurs passent plus de temps à déplacer des données en interne que à traiter des demandes de travail.

Si vous avez un type d'application nécessitant une latence faible pour ses demandes, vous devez désactiver les paramètres d'alimentation équilibrée. Si vous n'êtes pas sûr qu'il s'agisse d'un problème, procédez comme suit:

  1. Ouvrez le "Gestionnaire de tâches"
  2. Cliquez sur l'onglet "Performances".
  3. Cliquez sur "Open Resource Monitor"
  4. Sélectionnez l'onglet "CPU"
  5. Regardez sur le côté droit de la fenêtre sur les différents processeurs.

Si vous voyez l'un d'entre eux se garer, vous remarquerez que la moitié d'entre eux sont garés à un moment donné, ils vont tous se mettre en feu, puis l'autre moitié se garer. Il alterne d'avant en arrière. Ainsi, les processeurs du système sont en pleine effervescence.

Machines virtuelles: ce problème est encore pire lorsque vous exécutez une machine virtuelle car il existe une surcharge supplémentaire pour l'hyperviseur. En règle générale, pour qu'une machine virtuelle puisse s'exécuter, le matériel doit disposer d'un créneau horaire disponible pour chacun des cœurs à chaque tranche de temps.

Si vous avez un matériel de 16 cœurs, vous pouvez exécuter des ordinateurs virtuels avec plus de 16 cœurs, mais pour chaque tranche de temps, seuls 16 processeurs virtuels au maximum seront éligibles pour cette tranche de temps et l'hyperviseur doit s'adapter à tous les cœurs d'une machine virtuelle. dans cette tranche de temps. Il ne peut pas être réparti sur plusieurs tranches de temps. (Une tranche de temps est essentiellement un ensemble de X cycles du processeur. Ce peut être 1000 ou 100 000 cycles)

Ex: matériel de base 16 avec 8 VM. 6 ont 4 processeurs virtuels (4C) et 2 ont 8 processeurs virtuels (8C).

Timeslice 1: 4x4C Timeslice 2: 2x8C Timeslice 3: 2x4C + 1x8C Timeslice 4: 1x8C + 2x4C

Ce que l’hyperviseur ne peut pas faire, c’est diviser la moitié de l’attribution en une tranche de temps entre les 4 premiers processeurs d’une machine virtuelle 8 vCPU, puis sur la tranche suivante, attribuer le reste aux 4 autres vCPU de cette machine virtuelle. C'est tout ou rien dans le temps.

Si vous utilisez Microsoft Hyper-V, les paramètres de contrôle de l'alimentation peuvent être activés dans le système d'exploitation hôte, ce qui signifie qu'ils se répercuteront sur les systèmes clients, ce qui les affectera également.

Une fois que vous voyez comment cela fonctionne, il est facile de voir comment l’utilisation des paramètres de contrôle équilibré de l’alimentation entraîne des problèmes de performances et des serveurs lents. L'un des problèmes sous-jacents est que la demande entrante doit attendre la fin du processus de stationnement / annulation d'UC avant que le serveur puisse répondre à la demande entrante, qu'il s'agisse d'une requête de base de données, d'une demande de serveur Web ou de toute autre chose. .

Parfois, le système va stationner ou récupérer les processeurs au milieu d'une requête. Dans ces cas, la demande démarre dans le pipeline de la CPU, en est vidée, puis un cœur de CPU différent reprend le processus à partir de là. Si la requête est assez volumineuse, cela peut se produire plusieurs fois au cours de la requête, en transformant ce qui aurait dû être une requête de base de données de 5 secondes en une requête de base de données de 15 secondes.

La plus grande chose que vous verrez avec l'utilisation de Balanced Power est que les systèmes vont se sentir plus lents pour répondre à presque toutes les demandes que vous faites.

Mike Taber
la source