¿Cómo disminuir el uso de la CPU cuando se ejecuta Virtual Box?

12

Tengo un problema con el uso del 100% de la CPU en mi sistema cuando ejecuto VirtualBox. Aquí hay algunos detalles adicionales:

Mi información del sistema:

Nombre de CPU 1: Intel (R) Pentium (R) CPU dual T2310 @ 1.46GHz
CPU 1 nivel 1 tamaño de caché: 32K caché de datos. 32K de caché de instrucciones.

CPU 1 nivel 2 tamaño de caché: 1024 K caché unificado.
CPU 1 Mips: 2926.20 Nombre de
CPU 2: Intel (R) Pentium (R) CPU dual T2310 @ 1.46GHz
CPU 2 nivel 1 tamaño de caché: 32K Caché de datos. 32K de caché de instrucciones.

CPU 2 nivel 2 tamaño de caché: 1024 K caché unificado.

CPU 2 Mips: 2925.96
CPU de 64 bits? ¡Si!
Memoria total: 2.0 GB
Intercambio total: 6141 MBytes


Mi información del sistema operativo:

Versión del sistema operativo Kubuntu: 11.04
Versión del núcleo: 2.6.38-8-genérico
Arco del núcleo: i686
Shell predeterminado: / bin / bash


Mi configuración de caja virtual:

Tipo de sistema operativo: Windows XP
Memoria de video: 32 MB
Aceleración:
Memoria base 3D : 512 MB

Los detalles del problema:

Bueno, cada vez que ejecuto Windows XP desde mi VirtualBox, veo el uso de la CPU en casi el 100%. Experimento un sistema lento incluso si no se ejecutaban programas en mi versión alojada de Windows XP.

Me preguntaba si hay una manera de jugar con la configuración para poder mejorar ligeramente el rendimiento. Mi PC es relativamente rápida en mi sistema operativo Linux. Necesito saber si hay algunos consejos que puedo seguir al configurar los ajustes de mi VirtualBox para poder obtener mejores resultados.

¡Cualquier sugerencia / idea es muy apreciada!

CompilandoCyborg
fuente
Entonces, ¿quiere decir que su VM funciona lentamente o su sistema por completo? La CPU que tienes es bastante débil, por lo que no me pregunto si llega al 100% cuando ejecutas máquinas virtuales.
slhck
La CPU es lenta, pero he estado ejecutando XP en el host SUSE en Athlon XP 2800+ sin problemas y con 2 GIB de RAM, y este sistema es muchas veces más rápido que el mío. Debería poder ejecutar VirtualBox y XP en neutral sin problemas. También +1 para una buena lista de especificaciones informáticas relevantes.
AndrejaKo
He estado enfrentando el mismo problema bajo varios sistemas operativos en la misma computadora. Anteriormente, utilizaba Linux Mint, Ubuntu, Slax, Fedora y todo parece estar enfrentando problemas similares con el uso de la CPU. Sin embargo, creo que si puedo ajustar "correctamente" la configuración de mi VM, "podría" ser capaz de mejorar un poco el rendimiento.
CompilingCyborg
La solución temporal que estoy usando en este momento es un bucle infinito que ejecuta un comando bash para liberar pagecache, dentries e inodes cada 10 segundos. Mi VM pudo respirar un poco después de que pensé en usar esta extraña técnica, aunque no es una forma adecuada de hacerlo, sino un "hack".
CompilingCyborg
1
Lamentablemente, el T2310 carece de extensiones de virtualización VT-x ( ark.intel.com/Product.aspx?id=32431 ) y, como resultado, Virtualbox utilizará un software para capturar todas las llamadas de CPU de alto privilegio que realizará el invitado, esto significará que Virtualbox en sí utilizará más potencia de CPU para atender el sistema operativo invitado. También sería curioso ver si darle al sistema operativo invitado 1 GB de RAM podría ayudarlo a dejarlo inactivo mejor, ya que no necesitará cometer fallas de página de Virtualbox-host-costoso tan a menudo ...
Mokubai

Respuestas:

5

Al elaborar mi comentario anterior, el T2310 carece de extensiones de virtualización (VT-x) según la hoja de datos de su CPU en http://ark.intel.com/Product.aspx?id=32431

De este artículo de Wikipedia , hay tres cosas básicas que causarán una degradación medible en el rendimiento de la VM (y, por lo tanto, un aumento en el uso de CPU en el host:

  • La traducción binaria se usa para reescribir ciertas instrucciones, como POPF, que de otro modo fallarían silenciosamente o se comportarían de manera diferente cuando se ejecuten por encima del anillo 0, haciendo imposible la virtualización clásica de atrapar y emular. Para mejorar el rendimiento, los bloques básicos traducidos deben almacenarse en caché de una manera coherente que detecte el parcheo de código (utilizado en VxD, por ejemplo), la reutilización de páginas por parte del SO huésped o incluso el código auto modificable.

  • Es necesario sombrear varias estructuras de datos clave utilizadas por un procesador. Debido a que la mayoría de los sistemas operativos usan memoria virtual paginada, y otorgarle al SO invitado acceso directo a la MMU significaría la pérdida de control por parte del administrador de virtualización, parte del trabajo de la MMU x86 debe duplicarse en el software para el SO invitado utilizando una técnica conocidos como tablas de páginas de sombra. Esto implica negarle al sistema operativo invitado cualquier acceso a las entradas reales de la tabla de páginas atrapando los intentos de acceso y emulándolos en su lugar en el software.

  • Emulación de dispositivos de E / S: los dispositivos no compatibles en el SO huésped deben ser emulados por un emulador de dispositivos que se ejecute en el SO host.

Un sistema operativo invitado tiene una gran capacidad de escucha para operaciones que requieren el uso de instrucciones privilegiadas que se requieren y, por lo general, estos gastos generales se ven muy mitigados por el uso de las extensiones de virtualización AMD-V de Intels VT-x y AMD. Su procesador carece de estas extensiones y, por lo tanto, todo el trabajo de captura y emulación causará cierta pérdida de rendimiento.

Mis recomendaciones serían:

  • Para darle a la máquina virtual tanta memoria como sea necesario para minimizar la cantidad de paginación que debe hacerse, tal vez 1 GB o más, dependiendo de sus cargas de trabajo.

  • Deshabilite la aceleración 3D, ya que todas las llamadas al controlador 3D pueden ser empujadas a través de la capa de emulación y, por lo tanto, pueden ser costosas para su procesador.

  • Instale VirtualBox Guest Additions para su sistema operativo invitado, ya que utilizará controladores que admitirán mejor el entorno virtual.

  • Reduzca la resolución de pantalla y las opciones gráficas en su sistema operativo invitado.

  • Mantenga el acceso a la red (internet) a un nivel razonable, las máquinas virtuales fuertemente vinculadas a la red son costosas incluso con VT-x y se benefician de VT-d (Tecnología de virtualización para E / S dirigida), que tampoco es compatible con su procesador.

Mokubai
fuente
2

Mi respuesta está relacionada solo con el título de la pregunta, no con otro texto de la pregunta. Mi énfasis está en el uso inactivo de la CPU con más invitados virtuales: (suficiente memoria libre en el host).

El uso de la CPU causado por el audiodg.exeproceso en el host de Windows cuando se ejecuta VirtualBox es mayor que la carga del propio invitado inactivo. Se puede reducir o eliminar fácilmente deshabilitando la casilla de verificación Audio en la configuración de invitado de Virtualbox en la pestaña Audio. (Solo se puede deshabilitar en máquina cerrada virt.)

El proceso audiodg.exe consume aproximadamente un 5% de CPU para un invitado, pero es importante cargarlo en una computadora portátil durante actividades inactivas típicas como la edición de origen y tiene un gran impacto en la frecuencia de la CPU (disminución del 80% al 40%), velocidad del ventilador y duración de la batería en la computadora portátil. Muchas de mis máquinas virtuales en ejecución generalmente no necesitan sonido o solo a veces. (La desactivación del audio en el sistema operativo invitado no tuvo ningún efecto, ni pausa en la máquina virtual, pero la configuración de invitado de virtualbox es importante).

hynekcer
fuente