| Inicio | Informática | Galería | Libro de visitas | Mi mundo | Sobre mí |
Antes de comenzar con el documento y las pruebas que en él se presentan, quisiera dejar claro que todas las pruebas han sido realizadas en igualdad de condiciones y llevadas a cabo varias veces con el fin de asegurar que factores aleatorios no pudieran modificar el resultado de dichas pruebas.
Por otro lado, estas pruebas se han realizado por el mero placer de la diversión que conlleva para mí el comparar sistemas operativos BSD con sistemas GNU/Linux. Si alguien no puede contener su sentimiento (tanto herido como halagado) provocado por estas pruebas, entonces que se ponga en contacto conmigo.
Este benchmark es algo que me apetecía hacer desde hace ya mucho tiempo. Yo siempre he estado dudando entre utilizar sistemas operativos BSD o GNU/Linux, y la verdad, nunca me he decidido del todo. Actualmente, utilizo Debian Sid, pero reconozco que siempre he estado enamorado de NetBSD.
Entre las sorpresas más alucinantes con las que me he encontrado a lo largo de este tiempo, destacan las siguientes:
He separado la comparativa en cuatro partes:
En los tests subjetivos, medí manualmente los tiempos de carga de programas grandes como Gnome (2.14.1), KDE (3.5.2) y Firefox (1.5.0.3). También medí tiempo que tarda Vim en abrir archivos grandes, el uso de CPU de 1, 2 y 4 instancias del XMMS, y cuánta CPU consume el reproducir un vídeo AVI con el programa Totem, usando la libxine.
Entre los tests técnicos, se encuentra unixbench (4.1.0), y algunos benchmarks diseñados por gente de NetBSD (véase Bibliografía).
El Linux, en concreto, era un GNU/Linux Gentoo 2006.0 con un kernel Linux 2.6.16 y entre las opciones que utilicé destacan: PREEMPT, ACPI, AGP y CFQ IO.
FreeBSD era un FreeBSD 6.1 RELEASE, con las opciones SCHED_44BSD, PREEMPT, ACPI, APIC, VFS_AIO, AGP y COMPAT_LINUX.
NOTA: Sé que SCHED_ULE es más nuevo y óptimo para multi-threading, pero también he leído que ofrece un rendimiento notablemente inferior si la máquina en la que corre no dispone de multiprocesador, así que opté por el clásico scheduler del 4.4BSD.
NetBSD 3.0 es otro de los candidatos. En el kernel activé: USER_LDT, QBUF_READPRIO, ACPI y AGP. Desafortunadamente, no hay soporte Bluetooth ni DRI por el momento. Pero si que hay ya gran parte del Bluetooth diseñada (quizás para la 4.0).
Por último, OpenBSD 3.9, en el cual introduje algunos cambios como DUMMY_NOPS (un hack que acelera), APERTURE (para poder usar Xorg) y la opción VM86.
NOTA: He querido comparar también con Debian por motivos personales, dado que yo uso Debian como sistema usual en mi portátil. Todo el software de Debian está compilado con GCC 4 para i386 y, por lo tanto, no optimizado.
NOTA: Los valores indicados como '-' quieren decir que el test, en ese caso, no pudo ser realizado porque el sistema no soportaba dicha opción.
| Prueba | FreeBSD | Gentoo | Debian | NetBSD | OpenBSD |
|---|---|---|---|---|---|
| Arrancar Firefox | 11.6s | 8.0s | 8.5s | 12.0s | 14.4s |
| Arrancar Gnome | 19.6s | 13.9s | 19.9s | 26.7s | 29.8s |
| Arrancar KDE | 30.2s | 18.0s | 22.0s | 17.6s | 25.7s |
| Abrir con VIM (470Mb) | 33.5s | 27.6s | 23.4s | 36.7s | 27.3s |
| CPU xine (video AVI) | 14.5% | 15.0% | 18.7% | 10.6% | 26.0% |
| CPU XMMS (1/2/4 procs) | 0.0/0.0/- (1) | 0.0/0.3/0.7 | 0.0/0.3/0.6 | 0.0/-/- (2) | (3) |
GANADOR DEL TEST: Ambos Gentoo y Debian
(GNU/Linux)
PERDEDOR DEL TEST: OpenBSD con clara diferencia
(1) En FreeBSD, aunque aumenté el número de canales de audio de 4 a 8, nunca conseguí reproducir más de tres archivos al mismo tiempo.
(2) NetBSD no soporta, aún, múltiples canales de audio al mismo tiempo, pero hay mucho trabajo hecho para posteriores implementaciones. Léase NetBSD: Changes on the audio framework
(3) Parece mentira que en el año 2006, en OpenBSD haya que investigar para reproducir un MP3 con XMMS. Yo no he tenido el tiempo ni las ganas como para ponerme a estudiar este asunto, así que dejo el test en blanco.
NOTA: Las pruebas que atañen al sistema de ficheros, dependen, en cada caso, del sistema de ficheros por defecto en cada sistema. Estos son los sistemas de ficheros usados en cada sistema y sus opciones:
| Prueba | FreeBSD 6.1 | Linux 2.6.16 | NetBSD 3.0 | OpenBSD 3.9 |
|---|---|---|---|---|
| tar jxvf | 45s | 1m29s | 33.9s | 44.8s |
| tar jcvf | 2m55s | 2m57s | 2m30s | 2m32s |
| rm -fr dir/ | 7.7s | 9.7s | 5.5s | 8.3s |
| Prueba bonnie++ (FS) | 4m08s | 5m01s | 4m57s | 8m10s |
| memory read | 544.7MB/s | 544.7MB/s | 914.3MB/s | 533.3MB/s |
| memory write | 393.8MB/s | 387.9MB/s | 581.8MB/s | 400.0MB/s |
GANADOR DEL TEST: NetBSD 3.0 sobre UFS2, con
mucha diferencia.
PERDEDOR DEL TEST: Linux sobre EXT3.
NOTA: Los valores sin unidad son puntos de referencia según unixbench, cuanto más alto es el valor, mejor eficiencia ofrece el sistema en cuestión.
| Prueba | FreeBSD 6.1 | Linux 2.6.16 | NetBSD 3.0 | OpenBSD 3.9 |
|---|---|---|---|---|
| Convertir JPEG->PNG | 2m32s | 2m20s | 2m31s | 2m46s |
| Convertir AVI->MPEG | 7m59s | 7m51s | 9m57s | 8m16s |
| syscall overhead | 477.6 | 729.8 | 596.7 | 517.5 |
| pipe throughoutput | 725.5 | 607.6 | 706.1 | 735.5 |
| pipe-based context switch | 500.1 | 56.3 | 553.6 | 739.0 |
| process creation | 712.1 | 847.7 | 721.3 | 250.5 |
| execl throughoutput | 331.3 | 772.4 | 562.9 | 263.3 |
GANADOR DEL TEST: Linux 2.6 de mucho, aunque
nótese la sorpresa de que OpenBSD 3.9 sobrepasa en
eficiencia a NetBSD y FreeBSD, cosa que no ocurría hace un
año.
PERDEDOR DEL TEST: Ambos FreeBSD y NetBSD de
forma muy pareja.
NOTA: El valor latency es un valor medio de varios test realizados. Cuanto menor es el valor, más rápida es la respuesta del sistema.
NOTA: Los datos están expresados con las siguientes abreviaturas: us (microsegundos) y ns (nanosegundos).
| Prueba | FreeBSD 6.1 | Linux 2.6.16 | NetBSD 3.0 | OpenBSD 3.9 |
|---|---|---|---|---|
| context latency | 1559ns | 1024ns | 1289ns | 733ns |
| exec latency | 360us | 342us | 71us | 205us |
| fork latency | 79us | 82us | 35us | 92us |
| signal latency | 1385ns | 752ns | 774ns | 580ns |
| syscall time | 234ns (*) | 21ns | 184ns (*) | 190ns (*) |
GANADOR DEL TEST: NetBSD es el ganador, pero
no por mucha diferencia, porque le siguen OpenBSD y luego Linux
muy de cerca.
PERDEDOR DEL TEST: FreeBSD es el claro perdedor
en estas pruebas.
(*) Esta gran diferencia se debe a que los BSD no implementan las llamadas sysenter/sysexist en la arquitectura i386.
Aquí me gustaría separar el análisis y, de paso, ampliarlo con cosas que aquí no se pueden ver. Empezando desde la instalación, he de decir que el sistema más fácil de instalar fue FreeBSD, seguido por NetBSD, Debian y OpenBSD. Gentoo es demasiado difícil de instalar teniendo en cuenta que muchas distribuciones GNU/Linux ofrecen un método de instalación totalmente automatizado.
En segundo lugar, el sistema que menos tardé en aprender a manejar fue también FreeBSD. Tanto para Gentoo, como Debian, como NetBSD y OpenBSD, tuve que leer una hora (comparada con la media hora que tardé en aprender lo básico de FreeBSD). pkgsrc, en mi opinión, fue de lo mejor que prové, y reconozco que apt en Debian es también de lo mejorcito (aparte de que es más rápido que el pkgsrc de NetBSD).
Como se puede observar en las pruebas del VFS, NetBSD ha mejorado muchísimo y, de hecho, es el que mejores resultados ofrece a casi todos los niveles, sobrepasando a GNU/Linux en la mayoría de los casos. También es cierto que el pagedaemon de NetBSD se queda corto cuando hay grandes overloads y el de FreeBSD se defiende mejor en este aspecto, como se puede apreciar en el test de bonnie++. Como apunte definitivo, UFS2 sobre NetBSD demostró ser el sistema de ficheros más eficiente en casi todas las pruebas, excepto cuando el I/O está muy cargado, que el VFS se ralentiza bastante. FreeBSD también demostró su calidad en el uso de UFS2. En contra de UFS2, EXT3 es el único que soporta journaling y, por tanto, es el más rápido en recuperarse.
Por último, de acuerdo con los resultados, cabría deducir que GNU/Linux ha ganado 'en general', pero NetBSD ofrece un rendimiento casi similar e incluso a veces mejor. OpenBSD ha demostrado ser un gran sistema, al menos en cuanto a eficacia y respuesta se refiere, acercándose mucho a NetBSD y sobrepasando de lejos mis expectativas. Una vez más, FreeBSD sigue estando por debajo en la mayoría de los tests, dejando claro que las mejoras introducidas en la parte de escritorio han sacrificado el rendimiento y la eficacia del sistema.
Me gustaría que los lectores que hayan llegado hasta aquí, echaran un vistazo a unos benchmarks realizados hace ya tres años y sacaran sus propias conclusiones con respecto a la evolución en cada sistema. En dichos benchmarks, el resultado en general era el siguiente: Linux 2.6, Linux 2.4, FreeBSD 5.1, NetBSD 1.6.1, OpenBSD 3.4. A día de hoy, y según mis pruebas, el resultado es el siguiente: Linux 2.6, NetBSD 3.0, OpenBSD 3.9, FreeBSD 6.1.
Scalability
Benchmarks
Benchmark
Comparision of NetBSD 2.0 and FreeBSD 5.3
Tuning NetBSD
VM behaviour (swap usage)
FreeBSD Handbook
(edición 6.1-RELEASE)
Gentoo Handbook
(edición 2006.0)
NetBSD: Changes on
the audio framework
Gnome 2.14.1, KDE 3.5.2, Firefox 1.5.0.3, XMMS 1.2.10 y Vim
6.4
QEMU 0.8.1 (sin aceleración), usado para tomar capturas
ImageMagick 6.2.4.5, usado para los tests JPEG/PNG
ffmpeg 0.4.9-CVS, usado para el test de conversión de
vídeo
bonnie++ 1.93, usado en el test del sistema de ficheros
totem 1.4, usado para el test de reproducción de vídeo
unixbench 4.1.0, usado para los tests de eficiencia
NetBSD's gmcgarry's benchmarks