¿Cómo puedo simular una máquina lenta en una VM?

29

Estoy probando una aplicación web con muchos AJAX. Desarrollo en una nueva Mac, pero uso VmWare Fusion (actualmente 3.1.2) para probar en Windows XP, usando IETester para simular versiones anteriores de IE.

Esto me permite ver cómo versiones anteriores de IE representarían el sitio, pero también me gustaría ver cómo funcionaría el sitio en una máquina más antigua. Veo en la configuración de la VM que puedo disminuir la RAM; ¿hay alguna manera de reducir también la velocidad del procesador? ¿De qué otra forma podría simular una máquina lenta?

(También voy a ver cómo simular una conexión lenta a Internet ).

Nathan Long
fuente

Respuestas:

17

El hilo que limita la velocidad de la CPU en una máquina virtual ofrece algunos consejos:

  • En VMWare ESX y ESXi, puede crear un grupo de recursos y limitar los recursos de CPU para ese grupo. Esto le permitiría limitar la velocidad de la CPU de cualquier sistema creado en ese grupo de recursos.
  • La configuración en MS hyper-V permite limitar una máquina virtual a un porcentaje del host general. Entonces, si tiene un host de 8 núcleos que se ejecuta a 2 GHz, puede intentar limitar la máquina virtual del cliente a un núcleo, y no más del 45% del núcleo.

The Virtual PC Guy comenta en Retardar máquinas virtuales que:

configurar una máquina virtual con un máximo de 10% de recursos de CPU en Virtual Server (por ejemplo) significa que solo se le permitirá ejecutar en la CPU el 10% del tiempo total de programación del sistema durante un período de tiempo. Mientras la máquina virtual se está ejecutando, todavía se está ejecutando a la velocidad máxima del procesador (aunque con menos frecuencia de lo que se ejecutaría)

Sugiere usar en su lugar Turbo para ralentizar la VM. También sugiere usar productos de emulación, que son mucho más lentos que la virtualización, como DOSBox y Bochs .

harrymc
fuente
7

Puede usar cpulimit para limitar la cantidad de tiempo de procesamiento asignado a su proceso. Está disponible en los repositorios para la mayoría de las distribuciones de Linux.

El uso es muy simple, si, por ejemplo, su VM se está ejecutando como el proceso 12345 y desea asignarle solo el 5% de los ciclos de la CPU, use las siguientes opciones:

$ cpulimit -l 5 -p 12345
pfrenssen
fuente
4

Realmente no es posible igualar de manera confiable el rendimiento de una máquina más antigua. Incluso si logra estrangular el uso de la CPU y el tamaño de la memoria , ¿cómo acelerará la velocidad del FSB o la velocidad de la memoria? ?

Dicho esto, puede usar la herramienta de gestión de procesos de una Mac para limitar el uso de CPU de VMWare Fusion. Si hace esto lo suficientemente bien como para emular una máquina más antigua, entonces toda la aplicación VMWare probablemente se ejecutará muy lentamente, al igual que una máquina lista para XP.

No sé cuál es el programa gráfico de Mac para esto, pero vea si su Mac admite el renicecomando: Abra una terminal y escriba man renicepara leer sobre cómo funciona en una Mac.

Por cierto, las máquinas preparadas para XP son probablemente muy baratas en este momento. Uno real probablemente se podría tener por ~ $ 75. Luego, puede transferir su máquina virtual a una real ...

jpaugh
fuente
2
¡Decir ah! Una idea interesante para comprar una máquina real. Dado que la idea es emular una computadora vieja, comprar una computadora vieja es una opción bastante barata. :)
Nathan Long
2

Esto realmente depende de la lentitud de una máquina que desea emular. Si revierte XP a 128 MB de RAM, será muy lento, hasta el punto de que no estoy seguro de si la velocidad del procesador virtual será realmente relevante. También puede ejecutar sus archivos VM desde un disco duro externo USB1 antiguo (vea si puede encontrar una unidad de 4200 RPM). Eso debería ralentizar las cosas.

Iglesia
fuente
2

¡Una manera segura de hacer que una máquina virtual sea lenta es arrancar tantos clones como sea posible!

Su procesador, FSB, RAM y todos los demás componentes rápidos de su máquina se dividirán y cortarán en cubos entre las otras máquinas virtuales (siempre y cuando tenga que hacer algo intensivo: uno de los protectores de pantalla de OpenGL, por ejemplo), y sentirá que estás en 1990 otra vez ...

Haqa
fuente
Simple y bastante efectivo.
rollos
1

Instale una pequeña utilidad en la VM XP de invitado para controlar la frecuencia de la CPU utilizando la conmutación de frecuencia dinámica incorporada de XP. Por ejemplo, una utilidad como SpeedswitchXP . Nunca he intentado algo así, y puede haber problemas potencialmente si la CPU virtual que VMWare presenta a la VM invitada no admite la conmutación de frecuencia dinámica.

queso
fuente
1
Me temo que esto tendrá poco efecto para una VM, donde la CPU solo se emula.
harrymc
1
Sí, no creo que cambiar la frecuencia sea ​​una opción; no funcionaría (probablemente), o aceleraría todo el sistema operativo del host (¿imposible?).
jpaugh
0

Me gustaría tener la idea de usar un hilo de bucle infinito con un comando de sintonización sintonizable y establecer la prioridad del proceso. Si quieres que te dé una palmada rápida de código C, házmelo saber.

RobotHumanos
fuente