¿La administración de energía de la CPU afecta el rendimiento del servidor?

44

Estaba haciendo algunos puntos de referencia manuales simples en nuestro servidor de base de datos (en vivo) durante las horas no pico, y noté que las consultas arrojaron resultados de referencia algo erráticos .

Había habilitado el plan de ahorro de energía "equilibrado" en todos nuestros servidores hace un tiempo, porque pensé que no estaban cerca de la alta utilización y de esta manera podríamos ahorrar algo de energía.

Asumí que esto no tendría un impacto significativo y medible en el rendimiento. Sin embargo, si las características de ahorro de energía de la CPU están afectando el rendimiento típico , particularmente en el servidor de bases de datos compartidas, ¡entonces no estoy seguro de que valga la pena!

Me sorprendió un poco que nuestro nivel web, incluso con una carga del 35-40%, se reduzca de 2.8 Ghz @ 1.25V a 2.0 Ghz @ 1.15V.

Espero por completo que el reloj de bajada ahorre energía, pero ese nivel de carga me parece lo suficientemente alto como para que esté acelerando a la velocidad máxima del reloj.

Nuestro servidor de base de datos de 8 cpu tiene una tonelada de tráfico, pero una utilización de CPU extremadamente baja (solo debido a la naturaleza de nuestras consultas SQL, muchas de ellas, pero consultas realmente simples). Por lo general, se sienta al 10% o menos. Así que espero que haya sido descargado incluso más que la captura de pantalla anterior. De todos modos, cuando cambié la administración de energía a "alto rendimiento", vi que mi punto de referencia de consulta SQL simple mejoraba en aproximadamente un 20% y se volvía muy consistente de una ejecución a otra .

Supongo que estaba pensando que la administración de energía en servidores con poca carga fue beneficiosa para todos: no hubo pérdida de rendimiento y un importante ahorro de energía porque la CPU es comúnmente el consumidor de energía # 1 o # 2 en la mayoría de los servidores. Ese no parece ser el caso; renunciará a cierto rendimiento con la administración de energía de la CPU habilitada, a menos que su servidor esté siempre bajo tanta carga que la administración de energía se haya apagado de manera efectiva. Este resultado me sorprendió.

¿Alguien tiene alguna otra experiencia o recomendaciones para compartir sobre la administración de energía de la CPU para servidores? ¿Es algo que enciende o apaga en sus servidores? ¿Has medido mucha energía estás ahorrando? ¿Lo has comparado con él de vez en cuando?

Jeff Atwood
fuente
2
Odio decir esto, pero, proporcionaste tu propia respuesta. ¿Ves las tres burbujas al lado de "Rendimiento" para el modo equilibrado, y seis para el modo de alto rendimiento? Ahí está la diferencia :) El ahorro de energía se implementa en gran medida mediante el downclocking de la CPU. Verás un golpe de rendimiento a partir de eso, a pesar de que puede volver a subirlo bajo carga.
Bill Weiss
Sí, pero "equilibrado" está activado de forma predeterminada en Windows Server 2008 R2. Esto implica, para mí, que no debería haber una penalización de rendimiento significativa en el uso típico, por ejemplo, un servidor con poca carga.
Jeff Atwood
44
¡Tres burbujas contra seis! ¡Eso parece una gran diferencia! :)
Bill Weiss
1
Windows: tontos humanos desde 1985.
Michael Graff

Respuestas:

16

No estoy seguro acerca de los servidores, pero el pensamiento actual en los dispositivos integrados no es molestarse con los pasos entre baja potencia y agotamiento porque el tiempo adicional involucrado consumirá sus ahorros de energía, por lo que básicamente funcionan con poca energía hasta que obtienen cantidad real de carga de la CPU en cuyo punto se voltean lo más rápido posible para que puedan terminar el trabajo y volver al ralentí a baja potencia.

pjz
fuente
1
Estoy de acuerdo en que esta es la forma en que debería funcionar en un servidor.
Jeff Atwood el
11

Siempre he desactivado cualquier tipo de administración de energía en los servidores. Tengo curiosidad por lo que otros han experimentado, pero siempre supuse que si el servidor no funciona bien, siempre habrá algún retraso para 'intensificar' la CPU al 100%, y en un centro de datos que establezca cualquier retraso como este Es inaceptable.

Los datos que proporcionó parecen respaldar esta suposición. Por lo tanto, no he realizado ninguna prueba específica, pero parece que no debería usar ninguna tecnología de ahorro de energía dentro de Windows o el BIOS. Incluso apago la configuración de 'apagar la red' y la tarjeta PCI para ser ultra conservadora.

Dave Drager
fuente
8

La cantidad de energía será en realidad esto Guarde usted :
Si usted decide que esta característica podría poner a la estabilidad de los servidores en riesgo (no tengo la experiencia con esto), entonces es posible que buscar otro sitio para el ahorro de energía.

Trataría de averiguar cuánta energía podría ahorrar esto para la cantidad de servidores que tiene (aunque quizás ya lo haya hecho). Dado que el gráfico que publicó en su respuesta es porcentajes, para su empresa, los ahorros podrían ser muy poca potencia real. Si no tiene muchos servidores, puede que en realidad no sea tanto, y obtener luces activadas por movimiento o algo así en su oficina puede ahorrar más energía (aunque eso no es tan comercializable).

Recuerdo haber leído hace unos años acerca de una de las principales compañías automotrices estadounidenses (olvídate) de tener presión para cambiar las emisiones de los gases de escape de sus automóviles. En cambio, la compañía demostró que si limitara algunas de sus fábricas, eso sería mucho más barato para ellos, además de generar un ahorro de emisiones mucho mayor.

No olvide los discos:
Además, es posible que desee verificar que estas funciones de ahorro de energía no reduzcan los discos si no se utilizan. Tal vez por un momento todos los resultados de la consulta SQL estarían en RAM, el disco se usaría y se iría a dormir (aunque no estoy seguro si funciona así). Si esto puede suceder, habría una gran penalización de rendimiento mientras todo gira de nuevo.

Kyle Brandt
fuente
44
oh sí, el giro del disco es bastante arriesgado en los servidores. Teníamos eso habilitado en nuestro NAS y Brent Ozar (nuestro experto en SQL / DBA) nos aconsejó que esta era una muy mala idea ... cada giro es como una lotería para ver si la unidad realmente regresará :)
Jeff Atwood
El modo "equilibrado" me ahorra 10 vatios en inactivo en comparación con el modo "Alto rendimiento" (~ 15.5W vs ~ 25.5W en un Core i7 4790). Pero, el modo equilibrado en Windows Server 2012 no parece aumentar a la velocidad máxima del reloj de la CPU, lo que perjudica gravemente el rendimiento de las consultas de la base de datos.
Ryan Anderson
8

renunciará a cierto rendimiento con la administración de energía de la CPU habilitada, a menos que su servidor esté siempre bajo tanta carga que la administración de energía se haya apagado de manera efectiva. Este resultado me sorprendió.

Prefacio: Estoy dando algunos saltos / generalizaciones sobre Intel Xeons y su rendimiento de ahorro de energía con SpeedStep. Al leer acerca de las CPU Intel Xeon " Yorkfield " de 45 nm, la tecnología Intel SpeedStep mejorada (EIST) y el estado de detención mejorado (C1E) parecen ser el verdadero culpable de la situación. Estoy de acuerdo con su declaración al creer que activar tales funciones de administración de energía ayudaría a la conservación de la energía, pero cuando las CPU necesitaban la energía bajo carga, el sistema volvería a una configuración de velocidad de reloj de voltaje normal. Parece que EIST y C1E tienen algunos efectos secundarios que no están implícitamente intuitivos cuando se usa una u otra opción en el BIOS. Después de rastrear a través de numerosos sitios web de overclocking, parece que estas dos configuraciones en el BIOS causan bastante frustración.

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

C1E (Estado de detención mejorado) : C1E es el más simple de los dos componentes. Se puede habilitar o deshabilitar en el BIOS, y funciona independientemente del sistema operativo. C1E tiene dos configuraciones: inactivo y de carga. Cuando el uso de la CPU es relativamente bajo, esta característica reduce el multiplicador de su procesador a su configuración más baja (generalmente 6x) y reduce ligeramente su vCore. Durante una aplicación intensiva de CPU, elevará el multiplicador a su valor máximo y proporcionará un pequeño impulso en vCore para compensar. En nuestro ejemplo, C1E hará que su procesador funcione con 6x o 9x el FSB .

EIST (Tecnología Intel SpeedStep mejorada) : esta es una característica muy robusta y tiene una amplia variedad de capacidades de ahorro de energía. Al igual que su primo más simple, EIST puede afectar tanto el voltaje de su CPU como su multiplicador; sin embargo, tiene muchos más niveles de configuración. En lugar de una configuración simple "lenta o rápida", SpeedStep puede utilizar todos los multiplicadores disponibles. En nuestro caso de ejemplo, EIST permitirá que su procesador se ejecute con un multiplicador de 6, 7, 8 o 9 , y elija cuál usar según la demanda de su CPU. EIST es controlado por Windows y utiliza los diferentes "esquemas de energía" que puede haber visto en su panel de control.

Mientras se ajusta la configuración de rendimiento de "alto rendimiento" es probablemente la mejor configuración para un servidor de base de datos, estoy bastante seguro ya sea DIA y / o C1E hizo que los CPU a bajo realizar a pesar de que deben tener de vuelta se ha ido a la configuración normal cuando la carga aumentó sustancialmente. La gran advertencia para mí parece ser "¿qué es una carga sustancial?" De acuerdo con el sitio overclockers.net, afirman que EIST utiliza esas configuraciones de "esquemas de energía" para manipular la configuración de su CPU. Pero no hay indicación del porcentaje de carga o de cuánto tiempo para saber cuándo volver las CPU a voltaje normal.

Nuevamente, de ninguna manera soy un experto en el tema de las CPU de Intel, pero apostaría a que ajustar estas dos configuraciones podría brindarle el ahorro de energía que desea y el rendimiento que debería obtener, pero apegarse a la configuración de "rendimiento máximo" es igual de efectivo sin la necesidad de reiniciar.

osij2is
fuente
5

La respuesta rápida es: por supuesto, el ahorro de energía afectará el rendimiento.

La respuesta más larga no es divertida. Básicamente, pruebe una configuración, pruebe el rendimiento y decida con qué puede vivir.

Las aplicaciones y los sistemas son tan complicados que no hay una respuesta corta y seca aquí, aparte de "sí, el tiempo de reacción y otras velocidades del sistema se verán afectadas". Si es mucho más lento que el disco duro o la red, bueno, se entiende la idea. Prueba en realidad.

Michael Graff
fuente
4

Siempre trato de VM tantos servidores como puedo, pero cuando tengo que 'desnudar' un servidor es generalmente lo que necesito o quiero un rendimiento totalmente consistente. Entonces, para estas máquinas críticas para el negocio, NUNCA enciendo nada relacionado con el ahorro de energía, exactamente por las razones que está experimentando.

*** bang-goes-my-green-credentials *

Chopper3
fuente
3

Unas pocas cosas:

  1. Compruebe el BIOS para asegurarse de que la administración de energía esté bajo el control del sistema operativo. Podría ser posible que esté configurado para ser administrado por el firmware y, por lo tanto, utilizando una administración de energía de procesador tonta y no óptima.

  2. Verifique si hay alguna revisión relacionada con la administración de energía que pueda faltar. Hubo bastantes notables en el día en que salió Vista / Server 2008.

  3. Verifique la configuración detallada de Equilibrado. Es posible que otra característica de ahorro de energía esté causando un rendimiento reducido. En teoría, el impacto de rendimiento de EIST debería ser insignificante, aunque, de nuevo, una base de datos SQL tiene una huella única, y es concebible que se vea afectada de manera desproporcionada por la administración de energía del procesador.

Bigbio2002
fuente
1
Oh chico, llego tarde a la fiesta ...
Bigbio2002
2

Alguna información de Microsoft (formato Word Doc, desafortunadamente)

Mejore la eficiencia energética y administre el consumo de energía con Windows Server 2008 R2

Windows Server 2008 es más eficiente en términos de energía en general que su predecesor, Windows Server 2003. De forma predeterminada, Windows Server 2008 ejecuta el plan de ahorro de energía "equilibrado" , que tiene como objetivo mantener un alto rendimiento y ahorrar energía siempre que sea posible. Esto significa que Windows Server 2008 usa menos energía que una instalación de línea de base de Windows Server 2003. Debido a que el modo "Equilibrado" maximiza la eficiencia de energía lista para usar (OOB), Microsoft recomienda dejar la configuración predeterminada "Equilibrada" seleccionada en la mayoría de los casos.

Windows Server 2008 incluye dos modos predeterminados adicionales, "Ahorro de energía" y "Alto rendimiento", que tienen diferentes objetivos de potencia y rendimiento y pueden ser apropiados en algunas situaciones. El modo "Alto rendimiento" puede ser apropiado para servidores que se ejecutan con una utilización muy alta y necesitan proporcionar el máximo rendimiento, independientemente del costo de energía. El modo "Ahorro de energía" se puede utilizar para servidores poco utilizados que tienen más capacidad de rendimiento de la que realmente necesitan; el uso de "Ahorro de energía" en esta situación puede proporcionar ahorros de energía incrementales.

Estas características particulares de ahorro de energía de CPU a nivel de hardware son las mismas en cualquier sistema operativo, por supuesto, solo se trata de si las enciende o no.

El gráfico de ahorro de energía de la administración de energía sin CPU, versus la administración de energía de la CPU:

Tenemos claro que (y este gráfico muestra que) a altos niveles de utilización, la administración de energía de la CPU se apaga automáticamente. Sin embargo, lo que no tengo claro es si a niveles de utilización bajos hay un impacto en el rendimiento general del servidor, por ejemplo, el tiempo de respuesta en consultas simples de SQL Server.

Jeff Atwood
fuente
Parece un poco ingenuo creer en un libro blanco escrito por Microsoft sobre uno de sus propios productos. Los objetivos de la función pueden ser correctos, pero las cifras reales pueden variar y variarán.
gekkz
1
no crees que? que "balanceado" está activado por defecto ? Eso es un hecho ... instale Windows Server 2008 R2 si no me cree.
Jeff Atwood
@Jeff Atwood: Creo que podría haber querido decir los resultados reales de ahorro de energía del gráfico. Puede ser de su interés mostrar las estadísticas de una manera que muestre el mayor ahorro de energía posible por razones de marketing. Por ejemplo, el porcentaje de potencia máxima parece un poco extraño, ¿por qué no solo guardar los vatios reales ahorrados? Sin embargo, como descargo de responsabilidad, podría haber una muy buena razón por la que eligieron esa métrica (si esa es incluso la palabra correcta).
Kyle Brandt
el ahorro de energía (un modesto 10% por gráfico) de habilitar la administración de energía de la CPU es indiscutible ... puede usar kill-a-watt y su propia PC para verificarlo. En realidad, es más alto en una PC doméstica, ya que tienden a tener menos unidades, memoria, controladores de incursión, etc., lo que reduce la potencia.
Jeff Atwood
@KyleBrandt: sospecho que se utilizó el porcentaje de potencia máxima para hacer que los resultados sean más genéricos. De esta manera, aplica los hallazgos a su máquina (que consume 400 vatios a toda potencia, en comparación con un servidor de XXX vatios en el documento).
EricB
0

Nunca debe recurrir a la configuración de Windows o al Bios Speedstep que viene en los procesadores Intel y también hay un equivalente de AMD. Esto puede causar problemas, y he visto problemas en los que, con Speedstep, el reloj de la CPU seguía rebotando de forma errática a pesar de que el uso de los recursos de la CPU era constante.

Si quieres ser más verde y ahorrar energía, utilizar procesadores de bajo consumo, designados con el carácter L antes de que el nombre del modelo, como la L serie 54XX y L 55xx serie de Intel.

EDITAR: Lo siento si di la impresión de que esta característica siempre fallará, simplemente me quemé, y en un sistema de misión crítica no puedo hacer que ocurra este tipo de cosas, así que solo trato de quedarme lejos de eso.

gekkz
fuente
No creo que cause problemas, o no estaría activado por defecto en casi todos los sistemas operativos y CPU modernos. ¿Podría estar pensando en variantes mucho más antiguas de tecnologías de ahorro de energía de la CPU, quizás hace unos años?
Jeff Atwood
Parece que asume que todo lo que es una característica funciona correctamente. En realidad, estoy hablando de experiencia de primera mano con una configuración dual E5520 que tenía ese problema, en dos servidores diferentes.
gekkz
@gekkz No creo que nadie diga que es imposible que cause problemas, pero su respuesta sugiere que siempre, o casi siempre, causa problemas, lo cual es simplemente falso. Si lo fuera, miles (¿millones?) De servidores tendrían problemas causados ​​por esto en este momento.
phoebus
0

Cuando se habla del rendimiento en un servidor, hay algunas formas diferentes de verlo. Existe el tiempo de respuesta aparente (similar a la latencia de la red) y el rendimiento (similar al ancho de banda de la red).

Algunas versiones de Windows Server se entregan con la configuración de Energía equilibrada habilitada de manera predeterminada. Como Jeff señaló. Windows 2008 R2 es uno de ellos. En la actualidad, muy pocas CPU son de un solo núcleo, por lo que esta explicación se aplica a casi todos los servidores de Windows con los que se encontrará, a excepción de las máquinas virtuales de un solo núcleo. (Más sobre eso más adelante).

Cuando el plan de energía equilibrado está activo, la CPU intenta reducir la cantidad de energía que está utilizando. La forma en que lo hace es deshabilitando la mitad de los núcleos de CPU en un proceso conocido como "estacionamiento". Solo la mitad de las CPU estarán disponibles a la vez, por lo que consume menos energía en momentos de poco tráfico. Esto no es un problema en sí mismo.

Lo que ES un problema es el hecho de que cuando las CPU no están estacionadas, ha duplicado los ciclos de CPU disponibles disponibles para el sistema y de repente desequilibró la carga en el sistema, pasando de (por ejemplo) una utilización del 70% al 35%. El sistema analiza eso y después de que se procesa la ráfaga de tráfico, piensa "Oye, debería volver a marcar esto un poco para ahorrar energía". Y así es.

Aquí está la parte mala. Para evitar una distribución desigual del calor y la energía dentro de los núcleos de la CPU, tiene la tendencia a estacionar las CPU que no se han estacionado recientemente. Y para que eso funcione correctamente, la CPU necesita vaciar todo, desde los registros de la CPU (caché L1, L2 y L3) a otra ubicación (probablemente memoria principal).

Como ejemplo hipotético, supongamos que tiene una CPU de 8 núcleos con C1-C8.

  • Activo: C1, C3, C5, C7
  • Estacionado: C2, C4, C6, C8

Cuando esto sucede, todos se activan por un período de tiempo y luego el sistema los estaciona de la siguiente manera:

  • Activo: C2, C4, C6, C8
  • Estacionado: C1, C3, C5, C7

Pero al hacerlo, hay una buena cantidad de sobrecarga asociada con el vaciado de todos los datos de la memoria caché L1-L3 para que esto suceda de manera que no ocurran errores extraños en los programas que fueron vaciados de la tubería de la CPU.

Probablemente haya un nombre oficial para él, pero me gusta explicarlo como un golpe de CPU. Básicamente, los procesadores pasan más tiempo haciendo trabajo ocupado moviendo datos internamente de lo que están procesando solicitudes de trabajo.

Si tiene algún tipo de aplicación que necesita baja latencia para sus solicitudes, debe deshabilitar la configuración de Energía equilibrada. Si no está seguro de si esto es un problema, haga lo siguiente:

  1. Abre el "Administrador de tareas"
  2. Haga clic en la pestaña "Rendimiento".
  3. Haga clic en "Abrir Monitor de recursos"
  4. Seleccione la pestaña "CPU"
  5. Mire el lado derecho de la ventana en las distintas CPU.

Si ve que alguno de ellos está estacionado, notará que la mitad de ellos están estacionados en un momento dado, todos se encenderán y luego la otra mitad se estacionará. Alterna de ida y vuelta. Por lo tanto, las CPU del sistema están agitándose.

Máquinas virtuales: este problema es aún peor cuando está ejecutando una máquina virtual porque hay una sobrecarga adicional del hipervisor. En términos generales, para que se ejecute una VM, el hardware debe tener un espacio de tiempo disponible para cada uno de los núcleos en cada segmento de tiempo.

Si tiene una pieza de hardware de 16 núcleos, puede ejecutar máquinas virtuales utilizando más de 16 núcleos totales, pero para cada segmento de tiempo, solo serán elegibles hasta 16 CPU virtuales para ese segmento de tiempo y el hipervisor debe adaptarse a todos los núcleos para una máquina virtual en ese intervalo de tiempo. No se puede distribuir en múltiples intervalos de tiempo. (Un intervalo de tiempo es esencialmente un conjunto de X ciclos de CPU. Puede ser 1000 o 100k ciclos)

Ej: hardware de 16 núcleos con 8 máquinas virtuales. 6 tienen 4 CPU virtuales (4C) y 2 tienen 8 CPU virtuales (8C).

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

Lo que el hipervisor no puede hacer es dividir la mitad de la asignación para un segmento de tiempo en las primeras 4 CPU de una VM de 8 vCPU y luego en el siguiente segmento de tiempo, dar el resto a los otros 4 vCPU de esa VM. Es todo o nada dentro de un intervalo de tiempo.

Si está utilizando Hyper-V de Microsoft, la configuración de control de energía podría habilitarse en el sistema operativo host, lo que significa que se propagará a los sistemas del cliente, lo que también los afectará.

Una vez que vea cómo funciona esto, es fácil ver cómo el uso de la configuración de Control de energía equilibrado causa problemas de rendimiento y servidores lentos. Uno de los problemas subyacentes es que la solicitud entrante debe esperar a que se complete el proceso de estacionamiento / desarmado de la CPU antes de que el servidor pueda responder a la solicitud entrante, ya sea una consulta de base de datos, una solicitud de servidor web o cualquier otra cosa .

A veces, el sistema estacionará o desanclará CPU en medio de una solicitud. En estos casos, la solicitud comenzará en la tubería de la CPU, será expulsada de ella y luego un núcleo de CPU diferente recogerá el proceso desde allí. Si se trata de una solicitud lo suficientemente fuerte, esto podría suceder varias veces durante el transcurso de la solicitud, cambiando lo que debería haber sido una consulta de base de datos de 5 segundos a una consulta de base de datos de 15 segundos.

Lo más importante que verá al usar Balanced Power es que los sistemas se sentirán más lentos para responder a casi todas las solicitudes que realice.

Mike Taber
fuente