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
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
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
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
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 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
"
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
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
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,