Consejos para ejecutar FreeBSD bajo VMWare

Me he encontrado un buen documento que da unos cuantos consejos sobre cómo virtualizar FreeBSD (ejecutarlo dentro de un programa, y no como sistema principal) usando VMWare. Aunque prefiero otras soluciones como VirtualBox o qemu, que son libres y pueden usar las máquinas virtuales de VMWare, el documento viene bien igualmente, pues varios consejos son aplicables en otros programas (como los que he citado).

Aquí van los consejos:

  1. No usarlo para sistemas que deban soportar una gran carga de red o para sistemas que deban estar bien sincronizados temporalmente (sistemas de tiempo real, procesamiento multimedia…). Los sistemas virtualizados tienen bastante penalización en su entrada / salida, especialmente por la red. Es mala idea, por ej, tratar de tener un router virtualizado si nos interesa un rendimiento alto.
  2. No utilices lnc. A pesar de ser el controlador por defecto, lnc es el peor driver de red para una máquina virtual. No permite mucho paralelismo y está obsoleto (y no está en FreeBSD 7). El reemplazo de lnc es le y está presente al menos en FreeBSD 6.2 y versiones más recientes, pero no está incluído en el kernel GENERIC (el que se usa por defecto). Así, tendrás que configurar y compilar un kernel personalizado en el que device lnc esté reemplazado por device le. (Simplemente cargar el módulo del kernel if_le no sirve porque el driver lnc, presente en el kernel al arrancar, se cargará primero y será quien use el hardware). En VMWare ESX 3 y VMWare Server 1.0 hay una opción de configuración no documentada for the virtual machine que hace que VMWare emule una Intel E1000 en lugar de una AMD Lance. Para usarlo, edita el fichero .vmx y pon ethernet0.virtualDev="e1000" en su interior. El dispositivo em es más rápido, aunque quizá esto no se note en la práctica.
  3. Reduce kern.hz. La frecuencia del temporizador del kernel en FreeBSD 6 es de 1000 Hz (en versiones anteriores era de 100 Hz); con una frecuencia tan alta, se reduce notablemente el rendimiento del sistema virtualizado, pues se pierde mucho tiempo atendiendo a las interrupciones del contador en vez de haciendo trabajo real. Puedes cambiar la frecuencia añadiendo la línea kern.hz=100 en /boot/loader.conf. En casos extremos podrías usar valores aún menores (20, por ejemplo), pero hazlo con precaución.
  4. Considera desabilitar el swapping dentro de la máquina virtual, usando mainMem.useNamedFile= “FALSE”.
    • En Windows, este parámetro causa que la memoria sea intercambiada por el espacio de intercambio del anfitrión.
    • En Linux, crea un fichero oculto en un directorio temporal, que se borra immediatamente al apagar la máquina virtual.

Añadido (05/03/2009)

He encontrado una web con algunos consejos más y una máquina virtual con BSD lista para su descarga. Los requisitos hardware que pide me parecen una barbaridad, pero quizá a alguien le interese. En cualquier caso, aquí va un tip por si tenemos un procesador multicore y queremos habilitar el uso de varios nucleos conVMWare Player:

If VirtualBSD is running on a Dual Core system or better, and the host computer won’t do much else while the virtual machine is running, you may get a nice performance boost by enabling a second CPU. Look toward the bottom of the file for the which reads:

numvcpus = “1”

and change it to:

numvcpus = “2”

Para quien tenga dificultades con el inglés: hay que buscar el parámetro numvcpus y cambiar su valor de uno a dos para que la máquina virtual pueda usar 2 núcleos (ignoro si VMWare permitirá asignar un nº mayor de ellos, quizá se puedan asignar hasta el máximo que tenga nuestra máquina – maquinón, en este caso 😛 ).

Leave a comment