28 votos

¿Hay un equivalente de Windows a Unix ' CPU robar tiempo '?

Con el fin de evaluar el rendimiento de monitoreo de la precisión en plataformas de virtualización, la CPU robar tiempo se ha convertido en un cada vez más relevante métrica - ver EC2 de monitoreo: el caso de robo de la CPU para un instructivo resumen en el contexto de Amazon EC2 y de IBM papel en el tiempo de la CPU de contabilidad para un análisis más en profundidad de la explicación técnica (incluyendo ilustraciones) del concepto:

Robar el tiempo es el porcentaje de tiempo de CPU virtual a la espera de una real De la CPU, mientras que el hipervisor se atiende a otro procesador virtual.

En consecuencia, se expone en la mayoría de los relacionados con Unix/Linux, herramientas de monitoreo de hoy en día - ver, por ejemplo, columnas %robar o st en sar o top:

st -- Robar Tiempo
La cantidad de CPU 'robado' de esta máquina virtual por el hipervisor para otras tareas (como correr en otra máquina virtual).

He sido incapaz de averiguar cómo capturar la misma métrica en Windows, sin embargo, es esto posible? (Lo ideal para el Windows 2008 Server R2 de la AMIs en EC2 y a través de los respectivos Contadores de Rendimiento de Windows , por supuesto.)

34voto

Ryan Ries Puntos 33449

Edit: Actualización en Octubre. 1 de 2013 - algo de mi respuesta original se ha convertido en obsoleto.

No estoy seguro de que si usted todavía está activa en este sitio o que usted va a ver esto, pero quería que supieras que he leído esta pregunta hoy en día, y que me fascinó, y así pasé todo el día (cuando debería haber estado trabajando) la investigación de Hyper-V y Windows internals e incluso cavar en los conceptos de la virtualización en la esperanza de que yo podría estar listo para responder a su pregunta.

Déjenme comenzar diciendo que estoy viniendo desde el punto de vista de Hyper-V como una plataforma de virtualización ya que es donde tengo más experiencia. Aunque puede haber ciertos principios de la virtualización, como la conocemos, que no puede ser desviado de, Microsoft y VMware y Xen todos tienen diferentes estrategias para que el diseño de su hipervisores.

Esa es la primera cosa que hace que su pregunta desafiante. Usted plantear su pregunta como si se tratara de hipervisor agnóstico, cuando en verdad no lo es. Amazon EC2, por ejemplo, utiliza el hipervisor Xen, y el "CPU Robar Tiempo" métrica con la que se puede ver en la salida de un top comando emitido desde dentro de una VM Linux que se ejecutan en que hipervisor es el resultado de la integración de servicios instaladas en el sistema operativo huésped (o compatible con la virtualización de herramientas en el huésped), en conjunción con los datos proporcionados por ese hipervisor.

En primer lugar permítanme responder a su pregunta directamente: no Hay ninguna manera de ver desde el interior de una máquina virtual con Windows cuánto tiempo los procesadores pertenecientes a la máquina física que el hipervisor ejecuta dedica a hacer otras cosas, a menos que el particular herramientas virtuales/o servicios de virtualización-conocimiento de herramientas para su hipervisor están instalados en la máquina virtual huésped y el particular de hipervisor en la que el invitado se está ejecutando expone que los datos para el huésped. Incluso un invitado de Windows que se ejecuta en un hipervisor Hyper-V no tendrá acceso inmediato a la información sobre el tiempo dedicado a que los procesadores físicos en el hipervisor estaban haciendo otras cosas. (Cita de voretaq7, algo que "se rompe la cuarta pared".) A pesar de que Windows sistemas operativos cliente y servidor se ejecuta como huéspedes virtualizados en Hyper-V con la correcta integración de servicios/herramientas instaladas hacer uso de la "iluminación" (que son, literalmente, el código del núcleo alteraciones hechas especialmente para VMs) que aumentan significativamente su rendimiento en el uso de los recursos de un host físico, la línea de fondo es que el hipervisor no tener que dar más información para el sistema operativo huésped que quiere. Eso significa que el hipervisor no tienen para decirle a un invitado VM qué más es lo que está haciendo, además de un servicio de VM... a menos que se quiera. Y que la información acerca de lo que el físico de los procesadores están haciendo es necesaria para obtener una métrica desde la perspectiva de la VM como "CPU Robar Tiempo: el porcentaje de tiempo que el vCPU a la espera de una CPU física."

¿Cómo podría el SO huésped saber que, si no se dan cuenta de que en realidad era virtualizado?

En otras palabras, sin el derecho de la integración de herramientas instalado en el huésped, el sistema operativo huésped ni siquiera saben que su CPU es en realidad un *v*de la CPU. Ni siquiera saben que hay otra fuerza, fuera de sí misma "robar" los ciclos de CPU de ella, por lo que la métrica no existen los huéspedes, en la VM.

VMware ha comenzado a exponer este tipo de datos a los huéspedes de Windows así como de ESXi 5.0. Integración de VMware tools también necesita ser actualizado en el huésped. Aquí hay una referencia; se refieren a él como "CPU Robado Tiempo".

Un hipervisor como Hyper-V no dar a los clientes acceso directo a los recursos físicos tales como procesadores físicos o núcleos de procesador. En cambio el hipervisor les da vDevs - dispositivos virtuales - como vcpu.

Un excelente ejemplo de por qué: Decir una máquina virtual del sistema operativo huésped hace la llamada a ras de la TLB (translation look-aside buffer) que es un componente físico de físico de la CPU. Si el sistema operativo huésped se le permitió borrar la totalidad de la TLB en un procesador físico, que tendría efecto negativo en el rendimiento para todas las otras máquinas virtuales que también estaban compartiendo el mismo físico TLB. En el caso de Windows, que la llamada en el sistema operativo huésped se traduce en un "hypercall" o "iluminado" llamar la cual es interpretada por el hipervisor de modo que sólo la sección de la TLB que es relevante para que la máquina virtual se vacía.


(Curiosamente, que alude a mí que las máquinas virtuales que no tienen la adecuada integración de las herramientas y/o servicios podría tener la capacidad de influir en el rendimiento de todas las otras máquinas virtuales en el mismo host, pero que está completamente fuera del alcance de este tema).


Todo esto para decir que usted puede , todavía se detecta en un host de Hyper-V el tiempo que un procesador virtual dedica a la espera de un verdadero procesador para que estén disponibles de modo que se podría programada para ejecutarse. Pero sólo se puede ver que los datos en un Windows hipervisor Hyper-V. Si es posible de ver en otros hipervisores, insto a los otros para que nos digan cómo ven esta en que hipervisor y también si es expuesto a los huéspedes. (Edición 10/1/2013 Gracias evilensky para hacer justamente eso!)

Mi máquina de prueba se Hyper-V Server 2012, que es la edición gratuita de Server 2012, que sólo se ejecuta Núcleo y el rol de Hyper-V. Es la misma que la de cualquier Windows Server 2012 con Hyper-V.

El fuego de Rendimiento en su partición primaria, también conocido como host físico. La carga de este contador:

Hyper-V Hypervisor Virtual Processor\CPU Wait Time Per Dispatch\*

Usted notará que habrá una instancia de ese contador para cada máquina virtual en la que hipervisor, así como _Total. Microsoft definición de que el Rendimiento del contador:

El tiempo promedio (en nanosegundos) pasó la espera de un procesador virtual para ser enviados en un procesador lógico.

Obviamente, usted desea que el número sea tan baja como sea posible. Para los equipos, a la espera casi nunca es una buena cosa.

Otros contadores de rendimiento en el hipervisor que se quiere investigar, Hyper-V Hypervisor Root Virtual Processor\% Guest Run Time, % Hypervisor Run Timey % Total Run Time. Estos contadores proporcionar usted con los porcentajes que podrían ser utilizados para determinar los hechos tales como el tiempo de la "real" de los procesadores de pasar haciendo cosas otras que el servicio de una máquina virtual o de todas las VMs.

Así que, en conclusión, la métrica que usted está buscando en una máquina virtual invitada depende del hipervisor que se está ejecutando, ya que hipervisor decide proporcionar los datos acerca de cómo gasta su tiempo además de un servicio de VM, y si el sistema operativo huésped tiene el derecho de virtualización de herramientas de integración/servicios/que los conductores sean conscientes de lo suficiente para darse cuenta de que el hipervisor es hacer que los datos disponibles.

No sé de ninguna manera en un invitado de Windows, herramientas de integración instalado o no, para ver cuánto tiempo, en términos de segundos o un porcentaje, que VM host ha pasado de mantenimiento o no de servicio correspondiente a la física total de tiempo de procesador. (Edición 10/1/2013: ESXi 5.0 o mejor expone estos datos a los invitados de VM a través de la integración de las herramientas. Todavía nada en Hyper-V).

2voto

uSlackr Puntos 5287

FWIW, sólo miró a través de los contadores Perfmon de un servidor Windows 2008r2 debajo de Hyper-V y no veía nada relacionados con robar tiempo (o a la virtualización para importa).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: