Limitaciones del procesador Hyper-V

14

Recientemente hemos comprado un servidor que ejecuta Hyper-V 2008 R2 bare metal. El servidor tiene dos procesadores Intel Xeon de cuatro núcleos con hyperthreading, así que si lo entiendo correctamente, esto nos da 16 núcleos. Dentro de Hyper-V hemos creado una máquina virtual con Windows Server 2008 R2 con 4 procesadores virtuales. La pantalla de configuración del procesador me dice que esto representa el 25% de la potencia de procesamiento total del sistema. ¿Significa esto que el sistema operativo virtual no puede aprovechar el 75% restante? Estaremos ejecutando algunas otras máquinas virtuales, pero esta es para SQL Server y nos gustaría arrojar la mayor potencia posible.

Scott
fuente
55
Desea ser extremadamente cuidadoso al asignar vCPU a una máquina. Significa que la máquina virtual tiene que esperar hasta que haya 4 procesadores físicos disponibles al mismo tiempo antes de poder ejecutarse. Ver aquí
Holocryptic
66
En lo que respecta a Hyperthreading, eche un vistazo a este excelente manual: arstechnica.com/old/content/2002/10/hyperthreading.ars
Hyppy
44
Holocryptic, su afirmación era cierta para los sistemas VMWare más antiguos, pero nunca fue así para Hyper-V. Hyper-V no "programa en grupo" los procesadores virtuales.
Jake Oshins

Respuestas:

15

Una vCPU solo se puede asignar a una sola CPU física. No puede tomar 4 CPU físicas y hacer una sola vCPU que sea 4 veces más rápida; simplemente no es cómo funciona.

Hyper-V se limita a asignar 4 vCPU a una VM (la última vez que lo verifiqué). Si necesita una potencia de CPU significativa, vaya a lo físico, no tiene sentido agregar sobrecarga de virtualización a algo que CPU intensivo y paralelo en primer lugar.

Además, como señala Holocryptic, si asigna 4 vCPU a una VM, esa VM no puede ejecutarse hasta que Hyper-V haya adquirido 4 núcleos físicos de CPU para ejecutarlos. Dependiendo de su configuración, esto podría ser un obstáculo importante (por ejemplo, si tiene una máquina de 6 núcleos con un montón de 4 máquinas virtuales de vCPU, solo una se ejecutará a la vez, los otros dos núcleos siempre quedarán esencialmente sin usar). Según Jake Oshins, esto no era cierto para ninguna versión de Hyper-V. Afirma que Hyper-V no utiliza la programación de pandillas para la CPU; como lo hace casi cualquier otro hipervisor. En consecuencia, si hay un núcleo de CPU físico disponible, Hyper-V puede usarlo para ejecutar una VM de CPU múltiple. (También se menciona que Hyper-V puede no usar todos los núcleos físicos disponibles en el momento debido a la partición NUMA)

Nota al margen: SQL no necesariamente usa todos los núcleos que puede lanzar en primer lugar. Es realmente depende de lo que lo está utilizando y cómo la carga es paralelizable.

Chris S
fuente
Estoy de acuerdo, pero la sobrecarga en las CPU virtuales es casi nada, y rara vez entra en juego.
Nate
44
Chris, la nota de Holocryptic es simplemente incorrecta. Hyper-V no espera hasta que haya 4 CPU virtuales libres antes de programar un procesador virtual desde una VM de 4 VP. Hyper-V programa un procesador virtual siempre que tenga un procesador físico libre para ejecutarlo, con algunas advertencias. Por ejemplo, busca procesadores físicos dentro del mismo nodo NUMA físico que el resto de la VM.
Jake Oshins
3

Sí, lo que dijo Chris. Si necesita más de 4 CPU en una máquina virtual Hyper-V, cree dos servidores SQL en virtual y extienda sus bases de datos o vaya a física. Dependiendo de su licencia de servidor SQL, es posible que pueda agregar más servidores SQL en virtual (en el mismo host físico) sin incurrir en más costos de licencia, pero lea el documento técnico de licencia virtual de SQL para obtener más información.

También estaría de acuerdo en que si SQL se está quedando sin energía de la CPU con 4 CPU virtuales, entonces tiene alguna utilización seria de la aplicación o los comandos SQL están mal escritos.

Bret Fisher
fuente
1
Re: "... o los comandos SQL están mal escritos". Esto está casi garantizado, siempre que el código proporcionado por el proveedor esté en juego.
Skyhawk
De hecho, la mayoría del tráfico de la base de datos es material OLTP de nuestro sistema ERP. También tenemos un sistema de flujo de trabajo del mismo proveedor. Las cosas personalizadas escritas internamente son un pequeño porcentaje.
Scott,
Nuestra antigua base de datos se está ejecutando al máximo en 4 núcleos lógicos (dos CPU de doble núcleo), por lo que esperamos necesitar más que eso.
Scott,
0

Alrededor de 4 CPU core limit:

En la sección del archivo de configuración de VM:

[procesadores] [count type = ”integer”] 16 [/ count]

Ahora tienes una CPU de 16 núcleos.

ACTUALIZACIÓN: Parece que se necesita una captura de pantalla

ingrese la descripción de la imagen aquí

Nime Cloud
fuente
0

sigue esta guía

http://surminski.eu/2012/04/17/hyper-v-how-to-add-more-than-4-cores-to-a-virtual-machine/

puede ubicar el archivo de configuración vm xml en el directorio "Máquinas virtuales" del directorio VHD de la máquina virtual, el archivo de configuración se nombrará bajo la identificación de la máquina virtual. Debajo del enlace hay una referencia.

referencia: archivo de configuración VM xml

asegúrese de editar el archivo de configuración VM xml con notepad / notepad ++ abierto con privilegios de administrador

Shuliyey
fuente