¿Por qué Virtualbox utiliza 15-20% de CPU cuando VM está en pausa?

10

Ejecuto VirtualBox 3.1 en Ubuntu con un invitado Win XP. Para mi sorpresa, he notado que cuando detengo la VM (su pantalla se atenúa), VirtualBox continúa usando el 15-20% de la CPU del host.

¿Es este comportamiento normal?

¿Hay alguna forma de evitarlo? (Sin guardar el estado de la VM y salir de VirtualBox).

Gracias por cualquier idea!

~ lara

laramichaels
fuente

Respuestas:

8

Para disminuir el uso de la CPU VirtualBox en todo momento, recurra a este truco extraño.

Cree una nueva máquina virtual y no le instale un sistema operativo. Dígale a VirtualBox que ejecutará DOS y le dará los recursos mínimos absolutos. No instale un O / S. Ejecútelo, deje que se produzca un error al arrancar y minimícelo.

Mientras ejecuta su O / S real en una segunda máquina virtual, verá que la utilización de su CPU Virtualbox inactiva se reduce al 3-5%.

Idea de jed4czar: http://ubuntuforums.org/showthread.php?s=58e862a814e65eb96f8fe8389b615366&t=838073&page=2

EDITAR: para responder a sus preguntas directamente

¿Por qué Virtualbox utiliza 15-20% de CPU cuando VM está en pausa?

Es un error Siempre usa un 15-20% más de CPU de lo que necesita, cuando una VM está activa, a menos que se use el hack proporcionado.

¿Hay alguna forma de evitarlo?

Ver truco arriba.

kmarsh
fuente
es bueno saber que vbox asigna
posibles
ooooh, ¡también me lo arregló! Genial gracias. Para información, estoy ejecutando Windows 8.1, VM es centos y estaba consumiendo en tiempo de inactividad alrededor del 15% de la CPU. VBox v4.3.12
Sebas
Increíble, esto sigue siendo un problema.
kmarsh
4

Probé el truco descrito anteriormente con la VM de DOS, pero sin éxito (ejecutando invitados Ubuntu 12.04 en un MacBook Pro con OS X). También probé los cambios en los parámetros del kernel mencionados en el hilo de Oracle , de nuevo sin cambios. No importa lo que hice, mis invitados parecían comer 15-20% de CPU cada uno. Sin embargo, me di cuenta de que el único invitado al que asigné 2 CPU no estaba masticando un 15-20%, se estaba comportando como se esperaba.

Efectivamente, cuando cambié los otros a 2 CPU, el problema desapareció. Por experiencia previa, sé que cambiar a 2 CPU también habilita la opción IO APIC en la sección de la placa base, por lo que sospeché que ese era el cambio realmente interesante. Es decir, este:

IOAPIC habilitado

Tenga en cuenta que debe apagar la máquina para cambiar esta configuración; de lo contrario, está atenuada. Una vez que habilité esto en los invitados y reinicié, no importaba si tenía 1 o más CPU, la utilización de CPU del 15-20% desapareció, por lo que pensé que compartiría mi solución aquí.

Adam C
fuente
1

Tuve el mismo problema en un cuadro de Windows 7 Quad que ejecuta Oracle 5 en la VM.

Siguiendo el consejo de Adam, verifiqué la opción Enabled IO APIC pero fue en vano. Entonces, seguí la idea de kmarsh, que probablemente tardó menos de un minuto en probar, y el uso del procesador bajó del 15-20% al 4-5%.

Las configuraciones utilizadas fueron, Nombre: Hack de memoria, Tipo: Otro, Versión: DOS. Tamaño de la memoria: 4 MB, disco duro: no agregue un disco duro virtual. Haga clic en [Crear]. Al iniciar la máquina virtual se solicita un disco de inicio, utilicé: Unidad de host 'D:', haga clic en [Iniciar]. La máquina virtual dice: "FATAL: ¡No se pudo leer desde el medio de arranque! El sistema se detuvo". En ese punto, el uso de la CPU cayó, por lo que minimicé la ventana. Iniciar una segunda máquina virtual no hace ninguna diferencia.

por favor borrame
fuente
Parece que este problema es tan complejo que nadie lo arreglará.
kmarsh
0

Experimenté este problema de VirtualBox en una máquina P4 de 2 CPU con 3 gigas de RAM que ejecuta el host CentOS 5.5.

No experimenté este problema en una máquina i720 8cpu con 8 gigas con Win7 de 64 bits. Ejecuté 3 máquinas virtuales VMWare más VirtualBox, todas con memoria de 2 gigas, y no tuve ningún problema de CPU.

Esto sugiere que el problema es ejecutar en una máquina "pequeña" o en un host Linux.

Su solución funcionó bien, gracias.

Observo que estas publicaciones anteriores tienen un año de antigüedad, y mi VirtualBox es la versión 4.0.4 más reciente, por lo que Oracle aún no ha solucionado este error.

Wayne Linton
fuente
2
Esperaría que esta penalización de rendimiento esté asociada con la apariencia de que las CPU más nuevas tienen VT-x y similares para permitir la virtualización asistida por hardware, lo que significaría que el programa VirtualBox no está haciendo el trabajo y, por lo tanto, reduce el uso de la CPU. Un P4 probablemente no tendría la tecnología VT-x y, por lo tanto, tendría que traducir las llamadas del sistema a través del software y, como resultado, usar más CPU.
Mokubai
Esto debe haber sido arreglado por ahora. usando el host Ubuntu y el invitado XP que ejecuta VirtualBox v4.3.6 cuando detengo al invitado, el uso de la CPU cae por debajo del 1%
Buscador
0

Las otras respuestas no me explican ni solucionan el error (host Debian, invitado de Ubuntu en pausa). Oracle tiene una sección para esto:

Algunos invitados Linux pueden causar una alta carga de CPU incluso si el sistema invitado parece estar inactivo. Esto puede ser causado por una alta frecuencia de temporizador del kernel invitado. Algunas distribuciones de Linux, por ejemplo Fedora, envían un kernel de Linux configurado para una frecuencia de temporizador de 1000Hz. Recomendamos recompilar el kernel invitado y seleccionar una frecuencia de temporizador de 100Hz.

Los núcleos de Linux enviados con Red Hat Enterprise Linux, así como los núcleos de distribuciones de Linux relacionadas, como CentOS y Oracle Linux, admiten un parámetro de kernel divisor = N. Por lo tanto, dichos núcleos admiten una frecuencia de temporizador más baja sin recompilación. Le sugerimos que agregue el parámetro divisor del kernel = 10 para seleccionar una frecuencia de temporizador del kernel invitado de 100Hz.

Fuente: los invitados de Linux pueden causar una alta carga de CPU

mayeulk
fuente