web-dev-qa-db-fra.com

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

Je faisais un simple benchmarking à la main sur notre serveur de base de données (en direct) pendant les heures de pointe et j'ai remarqué que Les requêtes ont renvoyé des résultats de référence quelque peu erratiques .

J'avais permis au plan d'économie d'énergie "équilibré" sur tous nos serveurs il y a un moment, car je pensais qu'ils n'étaient nulle part à une utilisation élevée et de cette façon, nous pourrions économiser de l'énergie.

J'avais supposé que cela n'aurait aucun impact significatif et mesurable sur la performance. Cependant, si les fonctions d'économie d'énergie CPU sont Impact des performances typiques - en particulier sur le serveur de base de données partagé - alors je Je ne suis pas sûr que ça vaut la peine!

J'étais un peu surpris que notre niveau Web, même à la charge de 35 à 40%, est au-dessus de 2,8 GHz @ 1,25V à 2,0 GHz @ 1.15V.

Je m'attends pleinement à la baisse pour économiser de l'énergie, mais ce niveau de charge semble suffisamment élevé pour moi qu'il devrait être à la hauteur de la vitesse d'horloge totale.

Notre serveur de base de données 8-CPU a une tonne de trafic, mais extrêmement UTILISATION LOW CPU (juste en raison de la nature de nos requêtes SQL - beaucoup d'entre eux, mais des requêtes vraiment simples). Il est généralement assis à 10% ou moins. Je m'attends donc à ce que ce soit descendant encore plus que la capture d'écran ci-dessus. Quoi qu'il en soit, Quand j'ai transformé la gestion de l'alimentation en "haute performance", j'ai vu mon point de référence de requête SQL simple s'améliorer d'environ 20% et devenir très cohérent de la course à exécuter .

Je suppose que je pensais que la gestion du pouvoir sur des serveurs légèrement chargés était gagnant-gagnant-gagnant-gagnant - aucune perte de performance et des économies d'énergie importantes, car la CPU est généralement le consommateur de puissance n ° 1 ou n ° 2 dans la plupart des serveurs. Cela fait pas semble être le cas; Vous abandonnerez certaines performances avec la gestion de l'énergie CPU activée, à moins que votre serveur soit toujours sous tellement de chargement que la gestion de l'alimentation s'est effectivement mise hors tension. Ce résultat m'a surpris.

Quelqu'un a-t-il d'autres expériences ou recommandations à partager sur la gestion de la CPU pour les serveurs? Est-ce quelque chose que vous allumez ou éteint sur vos serveurs? Avez-vous mesuré beaucoup de pouvoir êtes-vous épargne? Avez-vous aspiré et éteindre?

44
Jeff Atwood

Je ne suis pas sûr des serveurs, mais la pensée actuelle dans des appareils embarqués ne doit pas se préoccuper des étapes entre la faible puissance et l'étouffement, car le temps supplémentaire en cause mangera vos économies d'énergie, donc fondamentalement, ils fonctionnent à faible puissance jusqu'à ce qu'ils obtiennent Quantité réelle de charge de la CPU à quel point ils se retournent au plus rapide possible afin qu'ils puissent terminer le travail et revenir au ralenti à basse puissance.

16
pjz

J'ai toujours désactivé tout type de gestion de l'alimentation sur les serveurs. Je suis curieux de savoir ce que d'autres ont vécu, mais j'ai toujours supposé que si le serveur est sous-t-il, il y aura toujours un délai de "intensifier" la CPU à 100% et dans un centre de données de type de données comme celui-ci. est inacceptable.

Les données que vous avez fournies semblent supporter cette hypothèse. Donc, je n'ai pas fait de test spécifique, mais il semblerait que vous ne deviez utiliser aucune technologie d'économie d'énergie dans Windows ou le BIOS. J'étiends même les paramètres de la carte d'arrêt et de la carte PCI pour être Ultra conservateur.

11
Dave Drager

Combien de puissance cela sauvera-t-il vous:
[.____] Si vous décidez que cette fonctionnalité pourrait mettre la stabilité de vos serveurs à risque (j'ai sur l'expérience avec cela), vous pourriez vous lever ailleurs pour les économies d'énergie.

J'essaierais de trouver Quelle quantité d'énergie cela pourrait épargner pour la quantité de serveurs que vous avez (Bien que vous ayez déjà fait cela). Étant donné que le graphique que vous avez posté dans votre réponse est des pourcentages, pour votre entreprise, les économies peuvent en réalité être très peu de pouvoir réelle. Si vous n'avez pas beaucoup de serveurs, ce n'est peut-être pas vraiment beaucoup et que vous obtenez des lumières activées par mouvement ou quelque chose du genre dans votre bureau pourraient économiser davantage d'énergie (même si cela n'est pas aussi commercialisable).

Je me souviens de lire quelques années sur l'une des principales compagnies de voitures américaines (oubliez qui) avoir une pression pour modifier les émissions de l'échappement sur leurs voitures. Au lieu de cela, la société a montré que si elle a coiffé certaines de ses usines, ce serait beaucoup moins cher pour eux aussi bien que de nombreuses économies d'émissions.

N'oubliez pas les disques :
[.____] De plus, vous voudrez peut-être vérifier que cette fonctionnalité d'économies d'énergie ne fait pas tourner le (s) disque (s) si elles ne sont pas utilisées. Peut-être que pendant un peu, tous les résultats de la requête SQL seraient en RAM, le disque serait utilisé et aller dormir (pas sûr si cela fonctionne comme ça)? Si cela peut arriver, il y aurait une pénalité de performance majeure, tandis que tout va à nouveau.

8
Kyle Brandt

vous abandonnerez certaines performances avec la gestion de l'énergie CPU activée, à moins que votre serveur soit toujours sous tellement de chargement que la gestion de l'alimentation s'est effectivement mise hors tension. Ce résultat m'a surpris.

Préface: Je fais quelques sauts/généralisations sur Intel Xeons et leur performance d'économie d'énergie avec SpeedStep. En lecture sur l'Intel Xeon " Yorkfield " 45nm cpus, amélioré Intel SpeedStep Technology (EIST) et State Halt amélioré (C1E) semblent être le vrai coupable de la situation. Je conviendrais de votre déclaration dans la croire que cela allait sur ces caractéristiques de gestion de l'énergie faciliterait la conservation de l'énergie, mais lorsque les CPU ont besoin de l'énergie sous charge que le système reviendrait à une vitesse d'horloge de tension normale. Il semble que EIST et C1E aient des effets secondaires qui ne sont pas intuitivement impliqués lors de l'utilisation de/ou d'option dans le BIOS. Après avoir rampé de nombreux sites Web d'overclocking, il apparaît que ces deux réglages du BIOS causent un peu de frustration.

De http://www.overclock.net/intel-cpus/376099-Speedstep-Guide-Phy-Does-My-Processor.html :

C1E (State Halt amélioré) : 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 - oisif et charge. Lorsque l'utilisation de la CPU est relativement faible, cette fonctionnalité réduit le multiplicateur de votre processeur à son réglage le plus bas (généralement 6x) et diminue légèrement son VCORE. Au cours d'une application intensive de la CPU, il augmentera le multiparateur à sa valeur maximale et fournira un petit coup de pouce en VCORE pour compenser. Dans notre exemple, C1E rendra votre processeur exécuté à 6x ou 9x le FSB .

EIST (Technologie améliorée Intel SpeedStep) : Il s'agit d'une fonctionnalité très robuste et a 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 de nombreux niveaux de configuration. Au lieu d'un simple réglage "lent ou rapide", Speedstep peut utiliser tous les multiplicateurs disponibles. Dans notre exemple, EIST permettra à votre processeur fonctionnera avec un multiplicateur de 6, 7, 8 ou 9 , et choisit lequel à utiliser à base de sur combien demande votre CPU est sous. EIST est contrôlé par Windows et utilise les différents "schémas électriques" que vous avez peut-être observés dans votre panneau de contrôle.

Lors de l'ajustement de vos paramètres de performance pour "High Performances", c'est probablement le meilleur paramétrage d'un serveur de base de données, je suis assez certain que c'est que EIST et/ou C1E a provoqué le fichier CPU sous Effectuer même qu'ils = devrait sont retournés dans des réglages normaux lorsque la charge augmentait sensiblement. La grande mise en garde pour moi semble être "Qu'est-ce qu'une charge substantielle?" Selon le site overclockers.net, ils prétendent que EIST utilise ces paramètres de "schémas électriques" pour la manière de manipuler vos paramètres de la CPU. Mais il n'y a aucune indication de pourcentage de charge ni combien de temps sache quand retourner les CPU à la tension normale.

Encore une fois, je ne suis en aucun cas un expert sur le sujet pour Intel CPus, mais je parierais que l'ajustement de ces deux paramètres peut Obtenez des économies d'énergie que vous voulez et Les performances que vous devriez Obtenez, mais vous collez avec le paramètre "Performance maximum" est tout aussi efficace sans avoir à redémarrer.

8
osij2is

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

La réponse la plus longue n'est pas amusante. Fondamentalement, essayez un paramètre, des performances de test et décidez ce que vous pouvez vivre avec.

Les applications et les systèmes sont si compliqués qu'il n'y a pas de réponse coupée et sèche ici, autre que "oui, temps de réaction et autres vitesses de système seront affectés". Si c'est beaucoup plus lent que le disque dur, ou le réseau - Eh bien, vous obtenez l'idée. Test en réalité.

5
Michael Graff

J'essaie toujours de VM autant de serveurs que possible, mais où je dois "nu-metal" un serveur, c'est généralement comme si j'ai besoin ou que je veux une performance totalement cohérente. Donc pour ces machines critiques I JAMAIS Basculer sur tout ce qui permet d'économiser de l'alimentation pour les raisons exactes pour les raisons que vous rencontrez.

*** Bang-Going-My-Green-Cidences *

4
Chopper3

Quelques choses:

  1. Vérifiez le BIOS pour vous assurer que la gestion de l'alimentation est sous contrôle du système d'exploitation. Il pourrait être possible qu'il soit prêt à être géré par le micrologiciel et, partant, à l'aide de la gestion de puissance du processeur Dumb et non optimal.

  2. Vérifiez s'il y a des correctifs associés à la gestion de l'alimentation que vous pourriez manquer. Il y avait des nobles notables de retour dans la journée lorsque Vista/Server 2008 est sorti.

  3. Vérifiez la configuration détaillée pour équilibrer. Il est possible qu'une autre fonctionnalité d'économie d'énergie provoque la réduction des performances. En théorie, la performance frappée d'EIST devrait être négligeable, cependant, une base de données SQL a une empreinte unique, et il est concevable qu'elle soit affectée de manière disproportionnée par la gestion du processeur.

3
Bigbio2002

Quelques informations de Microsoft (Format Word Doc, malheureusement)

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

Windows Server 2008 est plus efficace en énergie que son prédécesseur, Windows Server 2003. Par défaut, Windows Server 2008 exécute le plan d'épargne d'alimentation "équilibré", qui vise à garder la performance élevée tout en épargnant de pouvoir possible. Cela signifie que Windows Server 2008 utilise moins d'énergie que une installation de base de Windows Server 2003. Parce que le mode "équilibré" optimise l'efficacité de l'alimentation hors de la case (OOB), Microsoft recommande fortement les paramètres "équilibrés" par défaut sélectionnés. dans la plupart des cas.

Windows Server 2008 comprend deux modes de défaut supplémentaires, "Économiseur d'alimentation" et "Haute performance", qui ont des objectifs de puissance et de performance différents et peuvent être appropriés dans certaines situations. Le mode "High Performances" peut être approprié pour les serveurs qui fonctionnent à une utilisation très élevée et doivent fournir une performance maximale, quel que soit leur coût d'alimentation. Le mode "Power Saver" peut être utilisé pour des serveurs peu utilisés qui ont plus de capacités de performance qu'au besoin; L'utilisation de "économiseur d'énergie" dans cette situation peut fournir des économies d'énergie incrémentielles.

Ces caractéristiques d'économie d'énergie de la CPU de niveau du matériel particulier sont les mêmes en vertu de tout système d'exploitation, il s'agit simplement d'une question de savoir si vous les transformez ou non.

Le graphe d'économie d'énergie d'aucune gestion de l'énergie de la CPU, contre la gestion de l'énergie CPU:

Nous sommes clairs que (et ce graphique montre que) à des niveaux d'utilisation élevés, la gestion de l'énergie CPU est automatiquement désactivée. Ce que je ne suis pas clair, cependant, est de savoir si, à faible taux d'utilisation, il est d'incidence sur la performance globale du serveur, par exemple. TEMPS DISTRIBULAIRES SUR LES REQUIS SIMPLE-ISH SQL SERVER.

2
Jeff Atwood

Vous ne devriez jamais, jamais recourir à l'utilisation des paramètres Windows ou du BIOS Speedstep, qui se produit sur des processeurs Intel et il y a aussi un équivalent AMD. Celles-ci peuvent causer des problèmes, et j'ai vu de tels problèmes dans lesquels une horloge de la CPU permettrait de faire rebondir de manière irrégulière, même si l'utilisation des ressources du processeur était cohérente.

Si vous souhaitez être plus vert et économiser de l'énergie, utilisez des processeurs à faible consommation, désignés avec le caractère L avant le nom du modèle, tel que L 54xx Series et - [~ # ~] l [~ # ~ ~] Série 55xx de Intel.

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

0
gekkz

Lorsque vous parlez de performances sur un serveur, il existe différentes façons de la regarder. Il y a le temps de réponse apparent (semblable à la latence de réseau) et le débit (similaire à la bande passante réseau).

Certaines versions de Windows Server Ship avec paramètres d'alimentation équilibrés activés par défaut. Comme Jeff a souligné. Windows 2008 R2 est l'un d'entre eux. Très peu de CPU Ces jours-ci sont un noyau unique, de sorte que cette explication s'applique à presque tous les serveurs Windows que vous rencontrez à l'exception de VM de Core Core. (plus sur ceux plus tard).

Lorsque le plan de puissance équilibré est actif, la CPU tente de remettre à la hausse de la quantité de puissance qu'il utilise. La façon dont il s'agit en désactivant la moitié des cœurs de la CPU dans un processus appelé "stationnement". Seule la moitié de la CPU sera disponible à la fois, il utilise donc moins de puissance pendant les périodes de faible trafic. Ce n'est pas un problème en soi.

Qu'est-ce que IS Un problème est le fait que lorsque les CPU sont imprégnés, vous avez doublé les cycles de processeur disponibles disponibles pour le système et soudainement déséquilibré la charge sur le système, le prenant de (par exemple). Utilisation de 70% à une utilisation de 35%. Le système examine cela et après que l'éclat de trafic est traitée, il pense "hey, je devrais composer cela un peu pour conserver le pouvoir". Et ainsi de suite.

Voici la mauvaise partie. Afin de prévenir une répartition inégale de la chaleur et de la puissance dans les cœurs de la CPU, il a tendance à garer la CPU qui n'a pas été garée récemment. Et pour que cela fonctionne correctement, la CPU doit tout rincer des registres de la CPU (CACHE L1, L2 & L3) à un autre endroit (mémoire principale la plus probable).

À titre d'exemple hypothétique, disons que vous avez un processeur de 8 noyau avec C1-C8.

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

Lorsque cela se produit, tous deviennent actifs pendant une certaine période, puis le système les garer comme suit:

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

Mais ce faisant, il y a une bonne quantité de surcharge associée à la rinçage de toutes les données du cache L1-L3 pour que cela se produise, de sorte que des erreurs étranges ne se produisent pas dans des programmes qui ont été rinçus du pipeline CPU.

Il y a probablement un nom officiel pour cela, mais j'aime l'expliquer en tant que processeur de la CPU. Fondamentalement, les transformateurs passent plus de temps à faire des données de travail chargées de travaux en interne qu'aucune demande de travail.

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

  1. Ouvrir le "gestionnaire de tâches"
  2. Cliquez sur l'onglet "Performance".
  3. Cliquez sur "Ouvrir le moniteur de ressources"
  4. Sélectionnez l'onglet "CPU"
  5. Regardez le bon côté de la fenêtre des différents processeurs.

Si vous ne voyez aucun d'entre eux se garé, vous remarquerez que la moitié d'entre elles sont garées à une heure donnée, ils vont tous se retirer, puis l'autre moitié se garé. Il alterne d'avant en arrière. Ainsi, les CPU du système sont battus.

Machines virtuelles: Ce problème est encore pire lorsque vous exécutez une machine virtuelle car il y a les frais généraux supplémentaires de l'hyperviseur. En règle générale, pour un VM==== à exécuter, le matériel doit avoir une fente à la fois disponible pour chacun des cœurs à chaque écriture.

Si vous avez une pièce de quincaillerie 16 principale, vous pouvez exécuter des fichiers VM en utilisant plus de 16 noyaux totaux, mais pour chaque fois que la ligne de temps, jusqu'à 16 processeurs virtuels sera admissible à cette tranche de temps et que l'hyperviseur doit correspondre à tous les cœurs pour A = VM dans cette ligne de temps. Il ne peut pas être étalé sur plusieurs lignes de temps. (Une ligne de temps est essentiellement un ensemble de cycles X CPU. Il pourrait être 1000 ou il pourrait être 100k cycles)

Ex: 16 quincaillerie de base avec 8 vm. 6 Avoir 4 processeurs virtuels (4C) et 2 ont 8 CPU virtuel (8C).

TimesLice 1: 4x4c Timeslice 2: 2x8C Timeslice 3: 2x4C + 1x8c Timeslice 4: 1x8C + 2x4C

Ce que l'hyperviseur ne peut pas faire est divisé la moitié de l'allotissement pour une élimination des lignes de temps sur les 4 premiers processeurs d'un 8 VCPU VM et ensuite sur la prochaine ligne, donnez au reste les 4 autres VCPU de ce Vm. C'est tout ou rien dans une émission de temps.

Si vous utilisez Hyper-V de Microsoft, les paramètres de contrôle de l'alimentation pourraient être activés dans l'OS hôte, ce qui signifie qu'il va propager aux systèmes clients, ce qui les ait ainsi un impact également.

Une fois que vous voyez comment cela fonctionne, il est facile de voir comment utiliser des paramètres de contrôle de puissance équilibrées entraîne des problèmes de performance et des serveurs paresseux. L'une des questions sous-jacentes est que la demande entrante doit attendre que le processus de stationnement/imprégnard de la CPU soit terminé avant que le serveur ne 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 tout autre. .

Parfois, le système garera ou imprécis de CPU au milieu d'une demande. Dans ces cas, la demande commencera dans le pipeline CPU, se déclenchera, puis un noyau de la CPU différent prendra le processus à partir de là. S'il s'agit d'une demande suffisamment forte, cela pourrait arriver plusieurs fois au cours de la demande, changeant ce qui aurait dû être une requête de base de données de 5 secondes à une requête de base de données de 15 secondes.

La plus grande chose que vous allez voir à l'aide d'une puissance équilibrée est que les systèmes vont se sentir plus lentement à répondre à n'importe quelle demande que vous faites.

0
Mike Taber