VMware Global Community
Alfedfs
Contributor
Contributor

Caídas servidores por 100% CPU

Buenos días.

Tengo un ESXi con 3 servidores, cada servidor (windows 2008) con 4cpu´s. uno de ellos sirve de conexion de escritorio remoto para varios usuarios.

Existen momentos en los que este servidor la cpu sube al 100% durante unos 30 seg y esto afecta al VmWare el cual se queda inaccesible al igual que los otros 2 servidores. ¿Que relación podría tener?¿Problema hardware o de configuración?

Gracias por vuestra ayuda.

Un saludo

0 Kudos
4 Replies
elgreco81
Expert
Expert

Hola,

La relación que se me ocurre es que haya contención de recursos a nivel de CPU y que se colapse por ese motivo. Sin embargo se me hace raro que el colapso sea durante 30 segundos.

Cuántos procesadores físicos tienes? Cuántos cores tiene cada procesador físico? Qué te llevó a poner 4 vCPU a cada servidor? Conoces el comando esxtop? Has visto algo fuera de lo normal en cuanto a storage, RAM, NICs, alarmas?

Saludos,

elgreco81

Please remember to mark as answered this question if you think it is and to reward the persons who helped you giving them the available points accordingly. IT blog in Spanish - http://chubascos.wordpress.com
0 Kudos
Alfedfs
Contributor
Contributor

Gracias por tu pronta respuesta. La verdad es que esto ya estaba montado.

Fisicos son 8 cpus, entiendo que se asigno 4 a cada uno porque uno es un servidor de escritorio remoto al que acceden unos 30 usuarios concurrentes, el otro un exchange y el tercero el de backup con un backup exec.

Desconozco ese comando, para que se utiliza?

no he visto ningún otro parametro extraño.

gracias

Un saludo

0 Kudos
elgreco81
Expert
Expert

Hola,

Copio y pego una respuesta que di hace algún tiempo porque creo que te puede interesar.

"

Es un tema que me cuesta explicarlo y más por escrito, así que voy a intentar explicarme bien y si no dejo algo claro, pregunta Smiley Happy

Primero, la nomenclatura:

Procesador  físico, se refiere al "socket" por así decirlo o circuito único  integrado. Este procesador puede estar compuesto por uno o más cores que  a su vez se dividen en procesadores lógicos por el hyperthreading (3  conceptos distintos).

A  todo esto le sumamos el vCPU. Es vCPU porque VMware virtualiza los  procesadores lógicos que le presenta a la máquina virtual. Por tanto  traduce las instrucciones que van de la VM al procesador físico (no es  emulación ni paravirtualización). Este proceso de "traducción", mejora  drásticamente con las tecnologías de virtualización asistida de Intel o  AMD (AMD-V e Intel-VT)

ESXi  utiliza un "scheduler" para distribuir las cargas en los procesadores  físicos. Es un proceso bastante inteligente y cada vez que leo algo al  respecto, aprendo algo nuevo. ESX/ESXi pueden ubicar cargas enteras de  procesamiento en un procesador lógico.

Un ejemplo, 2 procesadores físicos con dos cores e hypertreading quedaría así.

2 Procesadores físicos x 2 Cores x 2 hilos de procesamiento por Core = 8 procesadores lógicos

Qué  es lo que pasa, por defecto, para una máquina con más de un vCPU,  VMware distribuye sus cargas en procesadores lógicos "separados", lo  cual tiene sus ventajas. (esto es toooodo un tema y aquí mientras más se  conozca cómo funciona la aplicación que se virtualiza mejor, para  optimizar la utilización de la caché y del bus de memoria, los nodos  NUMA y alguna otra cosa que seguro me dejo en el tintero) Como te  comento, VMware hace las cosas muy bien y si tiene los 8 procesadores  lógicos ocupados...funciona. Si ve que va holgadito Smiley Happy o que tiene procesadores lógicos en estado "idle" lo que hará será  darle al vCPU de la máquina virtual que sí está trabajando, la capacidad  de utilizar la capacidad de hyperthreading del core para que vaya aún  mejor.

Decir  que consume 1/2 core no sería la forma en la que yo lo describiría ya  que podría llevar a confusión y dar a entender que de un core de 2Ghz,  consume 1Ghz cuando eso no sería así, siempre utilizará o "se reservará"  los 2Ghz durante el tiempo que el scheduler se lo permita. Yo diría que  consume 1 procesador lógico Smiley Happy

"

esxtop es un comando que se conoce como de "root cause analysis". O dicho de otra forma, una herramienta para ver qué es lo que está causando un comportamiento determinado. Para lanzarlo has de conectarte por SSH a tu servidor por lo que te recomiendo bitvise (el más conocido es putty). Por defecto la configuración para acceso SSH viene deshabilitada por lo que tendrás que entrar en la pestaña de configuración de tu host y desde la opción de "Security profile" arrancar el servicio de SSH y abrir el puerto para el cliente de SSH.

Lo primero que miraría ahí para ver si hay un tema de "pelea" entre tus máquinas virtuales con más de un vCPU es mirar el contador  %cstp. Puedes coger "3" como un valor de referencia...si es mayor a ese número, ahí muy posiblemente haya un problema y reducir el número de vCPUs puede aliviarlo , lo que no quita que luego tus VMs queden cortas de vCPUs...con lo cual una solución podría ser tener más recursos para ejecutar tus máquinas virtuales (o tener más procesadores físicos)

Puedes también darle una ojeada a estos links.

http://communities.vmware.com/docs/DOC-9279

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=101792...

Para una pregunta tan corta parece "mucha respuesta" pero la parte del diagnóstico de rendimiento no es de los temas más breves. Tal vez alguien más te sepa ayudar con algún método más corto.

En todo caso, sigo pendiente del hilo por si puedo ayudar.

Saludos,

elgreco81

Please remember to mark as answered this question if you think it is and to reward the persons who helped you giving them the available points accordingly. IT blog in Spanish - http://chubascos.wordpress.com
0 Kudos
sorcerer12101
Enthusiast
Enthusiast

Hola,

Lo primero por supuesto es intentar averigurar la causa del problema de rendimiento en la máquina que lo tiene y solucionarlo para recuperar el servicio en ese servidor, para lo que ya te han dado una respuesta muy acertada que debes comprobar para empezar.

Por otro lado y para evitar que este problema de rendimiento puntual que tienes u otro futuros afecte al resto de máquinas virtuales podrías utilizar las prioridades y las reservas para garantizar a cada máquina virtual un mínimo de recursos para asegurar su funcionamiento y servicio. Esto lo puedes hacer individualmente por máquina teniendo cuidado y estudiado lo que pones para no crear otros problemas o utilizar Resource Pools. Los resource pools se utilizan de forma general para distribuir y garantizar recursos a una máquina virtual o un grupo de ellas y la mejor forma de hacerlo ya que puedes agrupar las máquinas en base a su función o a la carga de trabajo que manejen habitualmente.

En el momento actual y hasta que soluciones el problema de rendimiento en la máquina que lo tiene, para garantizar el funcionamiento de las otras dos puedes crear un resource pool y meter en él o la máquina que falla y limitarle los recursos, o las máquinas "sanas" y garantizarles un mínimo de recursos. De esta manera en cierto modo aislas las máquinas sanas de las que fallan. Esto probablemente agravará el problema de rendimiento de la máquina que falla al disponer de menos recursos pero por lo menos tendrás correctamente operativas las otras dos y luego ya te centras en resolver lo antes posible el problema en la que falla.

Igualmente vigila la carga de CPU en cada máquina virtual y la carga de CPU a nivel de host para intentar dilucidar si es un problema de falta de recursos físicos o de configuración. Si en los datos de utilización del host no está sobrecargado de CPU el problema lo tienes en la máquina virtual o en la configuración general de las máquinas virtuales, si está sobrecargado deberás añadir más procesadores físicos.

Un saludo,

David Perez Ferrer - VCP4 / VCP5 Si encuentras que esta o cualquier otra respuesta fue de utilidad, por favor da el voto. Gracias. If you find this or any other answer useful, please consider awarding points. Thank you.
0 Kudos