2011-08-04 24 views
6

¿La ejecución de sus servidores al 100% del uso de la CPU causa algún problema o es solo una buena utilización de la CPU?¿La ejecución de sus servidores al 100% del uso de la CPU causa algún problema o es solo una buena utilización de la CPU?

Mis servidores tienen 8 núcleos físicos funcionando constantemente en cerca del 100% para "horas abiertas"/10 horas por pago.

El programa está diseñado para ejecutarse en 8 subprocesos, y los usa completamente. El rendimiento es bueno pero los chicos de la infraestructura se preocupan por los "servidores al máximo"

Creo que es solo un buen uso de los recursos disponibles. ¿De qué sirve tener mucho núcleo si no hay todos completamente utilizados?

+1

No entiendo por qué esto se está cerrando. Esto no suena como una pregunta de programación, pero *** es una pregunta de programación *** - se trata de cómo decidir si su programa distribuido hace frente a la tarea. – sharptooth

+0

Imposible decir sin mucha más información sobre la aplicación y la carga. ¿Hay requisitos de tiempo de respuesta? ¿Es la carga altamente predecible? ¿Los servidores están haciendo un trabajo útil todo el tiempo, o algunos de los CPU utilizan encuestas de alta frecuencia de algún tipo? –

+2

No, se trata de aprovisionar hardware para una aplicación. – bmargulies

Respuesta

5

Todas las respuestas hasta la fecha se centran en el lado del software de este problema. Creo que el OP podría estar interesado en saber si tener una utilización de CPU tan alta afectará la confiabilidad del hardware del servidor. O al menos, creo que puedo dar un punto de vista bastante preciso de este lado de las cosas.

La fiabilidad de muchos componentes del servidor depende en gran medida de la temperatura. En este sentido, un servidor con poca carga probablemente funcionará más frío y tendrá una menor probabilidad de falla. Pero una vez que la CPU alcanza la temperatura máxima permitida del sistema de refrigeración (en mi PC es de 60ºC), la fiabilidad no será mucho menor con cargas más altas, ya que el sistema de refrigeración regulará la temperatura para evitar superar los 60ºC. Es cierto que el sistema de refrigeración hará que los ventiladores se muevan más rápido y eso aumentará la probabilidad de una falla en los ventiladores. Hay otro problema, con una carga tan alta, si el calor no se saca de la caja de una manera efectiva, todo el servidor tendrá una temperatura más alta, afectando a otros componentes. Los componentes que sufrirán esto en mayor medida son los condensadores electrolíticos, pero también se verán afectados otros componentes.

Por lo tanto, en general, sí, la realiabilidad de cualquier máquina es muy proporcional al factor de sobredimensión o de seguridad de esa máquina. Existen muchos métodos formales para calcular la confiabilidad de los sistemas electrónicos, uno de los más conocidos es el manual de confiabilidad MIL-HDBK-217F, pero hay muchos otros (Telcordia, etc.). Reliability engineering es un tema de gran complejidad, profundidad y un poco de magia.

Espero haber podido dar un poco de información sobre este tema.

2

Depende de dónde viene la carga. Si la carga es de algunos datos que no crecen, estás bien, solo haces las cosas lo más rápido que puedes y eso está bien.

Pero si la carga viene del exterior, como cuando un servidor es como StackOverflow y atiende las solicitudes de los clientes, ya no es lo mismo, ya que debe poder procesar las solicitudes casi en tiempo real. Piense qué pasa si la carga aumenta una vez que anuncia una venta. Lo más probable es que algunas solicitudes se eliminen y otras se procesen lentamente, lo que provocará una experiencia de clientes pobres en el mejor de los casos.

1

¿Qué están haciendo los servidores?

  • Si resuelven problemas matemáticos, de lo que usted quiere cada procesamiento que obtenga.
  • Si sirven los usuarios reales, es posible que desee tener una habitación poco para los picos ocasionales, para que no se rompa una vez que su base de usuarios crece en un 10%

también: ¿Qué hace la CPU? ¿Es plausible que realmente tengan que calcular tanto? ¿Cuánta E/S debería estar involucrada?

Una regla de oro que he visto es apuntar a media carga máxima del 80% - menos si espera que los picos altos de uso

10

Casi sin excepción que causa problemas, o va a causar problemas en el futuro (ya que la demanda crece). La utilización de la CPU del 100% en un servidor de servicio web no es buena.

Si su CPU está al 100% de utilización, significa que cada vez que el servidor recibe una nueva solicitud, hay un 100% de posibilidades de que el trabajo tenga que esperar un tiempo antes de que el servidor comience. .

El punto óptimo de rendimiento típico es de aproximadamente el 70%. Suena bajo? Si es así, recuerde que el 70% de utilización no significa que se desperdicia el 30% de la CPU. En cambio, significa que el 70% de la capacidad de la CPU se usó durante un período de muestra de. Para métricas de medición de CPU, un período de muestra es algo así como 2 segundos. Durante esos 2 segundos, el desglose de ese 70% es desigual; en otras palabras, puede ser algo así como 100% por 1 segundo y 40% por 1 segundo. El 100% de utliización en ráfagas cortas como esta está bien, porque sabemos que si un trabajo se retrasa, es solo por un breve período (uno que no hará enojar al humano que lo está esperando).

0

Por un lado, un bajo consumo de CPU reduce el consumo de electricidad. Las CPU reducen automáticamente su frecuencia cuando no están bajo altas cargas.

Además, tener un uso de CPU relativamente bajo significa que la latencia será baja porque cada tarea se interrumpirá el menor número de veces posible (inversamente, una alta carga de CPU desencadena una gran cantidad de cambios de contexto).

Y, si necesita ejecutar varias aplicaciones, como un servidor de base de datos, un servidor web y un servidor de correo electrónico, entonces un bajo uso de CPU deja espacio para todas las tareas.

Sorprendentemente, hay enormes diferencias bewteen servidores HTTP en cuanto a su arquitectura e implementación, ver http://goo.gl/Ha2rt

Hacer la elección correcta puede ayudar a ahorrar dinero, evitar fallas prematuras de hardware y complacer a los usuarios con una latencia inferior.

Cuestiones relacionadas