La plataforma software ideal para tests de rendimiento

Nunca he sido excesivamente aficionado al overclocking (no me mateis a tomatazos :P), pero me gusta bastante probar benchmarks de cara a optimizar el software de mi equipo. ¿Y que nos vienes a contar, si este foro pertenece al hardware?
Pues intento hablaros de la plataforma software, ya que al fin y al cabo, para ejecutar un test, por muy especifico que sea, el software influye en los resultados.
En el hilo del SuperPI, he tenido el gusto de iniciar una pequeña revuelta en favor del uso de linux [tomaaa] Y quiero que tengais bien claro que mi intención no es crear un flame tipico win vs. linux (los tengo muy vistos :P). Y si lo he hecho es porque creo que linux es una plataforma que puede otorgar resultados mas fieles a la realidad. Es decir, que el margen de error a la hora de extraer el rendimiento de un sistema sea menor.

Y si digo esto no es por iluminación divina. Voy a poner como ejemplo, una de las practicas de "Estructuras de Computadores". Se trataba de hacer de un analisis de stride para comprobar las características de una cache. Pues realizada en equipos windows, las graficas resultantes no eran tan claras como en linux. Incluso las conclusiones eran distintas de un SO a otro (obviamente, las correctas eran las de linux).
El código que vamos a utilizar esta disponible aqui:
http://personales.ya.com/raharu/stride.rar
y las instrucciones de la práctica, aunque si seguís lo que yo os digo, no os haran falta (va por los curiosos):
http://personales.ya.com/raharu/stride.pdf

Para reproducir el "test", haced lo siguiente, con la menor actividad del sistema posible:
En linux:
$ unrar x stride.rar
$ cd p4
$ gcc cache.c
$ ./a.out > resultados
$ gnuplot
gnuplot> load 'config'
gnuplot> plot "resultados" using 3 with impulses


En windows:
- Extraed el rar
- Ejecutad el programa, os generara un archivo de resultados en la carpeta del ejecutable (pondremos que se llama resultados)
- Abrís el gnuplot (http://www.cs.uni.edu/Help/gnuplot/windwnld/wgnuplot.exe)
- Situad el shell del gnuplot al directorio en el que estabamos trabajando (usando cd y pwd para saber donde estais)
- Escribis las mismas lineas del "gnuplot>" en linux

Con esto obtendremos nuestro gráfico con los diferentes tiempos de acceso a los diferentes niveles de la jerarquia de memoria (cache L1, cache L2, RAM...). Si razonais un poco caereis en cuenta que las barras de los graficos deberian formar el mismo numero de grupos que niveles de memoria.
Es decir, en un SO no intrusivo ideal, las barras solo podrian tener unos valores fijos, marcados por el tiempo de acceso a L1, L2, RAM...
Pero fijaos en que hay un error de dispersion. No obstante, este error es notablemente inferior en linux que en windows.
Este test es mucho mas representativo en maquinas antiguas (lo siento, pero estaba ajustado a las maquinas que hay en los laboratorios), creo recordar, que el caso mas escandaloso era el de los k6, si alguien tiene uno, le agradeceria que hiciera la prueba y nos mostrara los resultados.

Bien, todo esto es extrapolable a cualquier test que realiceis sobre un PC, así que espero que os sea provechoso este latazo que os he dado y no os hayais aburrido excesivamente.
No pretendo que de la noche al dia todo el mundo use linux para sus benchmarks, pero no estaria mal que lo tuvierais en cuenta, cara a hacer unos tests en condiciones lo mas fieles posibles.
Por favor, cuanta mas gente realize el test (tanto en windows como en linux) más interesante será este hilo. Al fin y al cabo también lo podeis tomar como un parámetro de referencia más de vuestros micros y que en ocasiones resulta más importante que el duro megaherzio. Hablo de la cache y la memoria RAM. Si teneis cualquier duda, preguntad sin temor.

Un Saludo y perdón por la intromision ;)
PD: Una distro de linux sin instalarla en el HD: http://www.knoppix.org

Ampliación: Explicación del test.
El test, como creo que ya ha quedado claro, no mide la potencia de calculo puro del procesador (Instrucciones por segundo), sino que mide el tiempo de acceso a los niveles de memoria. Los niveles de memoria, van como siguen:
+ Rapidos / - Capacidad
Registros del procesador
Memoria Cache
Memoria RAM
Disco duro (el tipico espacio de intercambio o swapping)
- Rapidos / + Capacidad

Los graficos representan el tiempo de acceso a los niveles de memoria. ¿Y como consigue hacerlo? Facil. La memoria hoy en dia se construye de forma que cuando el procesador pide un dato, lo pide a la caché. Si en la cache no esta disponible, la cache lo pide a la RAM. No obstante, la memoria no le da un dato, si no que le dá más (4, 8...), puesto que la construccion de las SDRAM en adelante lo facilita. Así pues, si pedimos un vector a la memoria (conjunto ordenado de datos), en vez de darnos el primer elemento nos dará X. Pues bien, los siguientes X-1 datos no hara falta ir a buscarlos a memoria, con lo que será más rapido. Pero si yo pido los datos de X en X, se acabó la jugada, toca ir a la memoria todas las veces
Jugando con el tamaño del vector (para ver la capacidad de la cache) y con el intervalo en que pedimos datos (podemos pedir 0, 1, 2, 3 o 0, 4, 8, 12...) podemos obtener datos sobre la organización de la caché. Si repetimos la operación de acceso al vector varias veces, podemos averiguar cual es la politica de reemplazamiento de la cache.

Si quereis profundizar más dadle un vistazo al pdf que adjunto más arriba.

Ampliación 2: Explicación del grafico obtenido.
Esto tendria que haberlo hecho antes :P
La grafica representa en el eje Y el tiempo de acceso. En el eje horizontal, los grupos son los de distintos tamaños de vector (fijaos como los primeros caben en la cache), y los diferentes valores dentro de un grupo son el "stride". El "stride" es el intervalo de acceso al vector, por ejemplo: Un vector accedido con stride 4 va a los siguientes elementos: 0, 4, 8, 12... mientras uno con stride 1 va a los siguientes elementos 0, 1, 2, 3...
Simple y llanamente, los valores más altos representan el tiempo de acceso a la RAM, mientras que los más bajitos, el tiempo de acceso a la cache. Si disponeis de más caché tendreis más barritas pequeñitas.

No os corteis en preguntar ;)

Ampliación 3: Mis Resultados.
Linux sin optimización al compilar:
Imagen

Linux optimizado: CFLAGS="-O2 -march=athlon-xp -mmmx -msse -m3dnow -fomit-frame-pointer -pipe"
Imagen

Windows sin optimizar (lo siento, pero paso de buscar un compilador para ADA :PP) Tened cuidado con la escala del eje Y
Imagen

Comentarios:
En este caso, el tiempo de acceso a la cache de primer nivel no crece con el stride. No obstante, la dispersión de los resultados se dispara aunque el programa realiza más de un test por barrita para conseguir resultados más fiables.
El tiempo de acceso a la memoria RAM, ha disminuido usando windows, de todas formas, no se hasta que punto es valido este test para la RAM, puesto que si os fijais en el grafico, es casi tan rapido el ultimo nivel de cache (el que está alrededor de 200ns), como la RAM. Lo que no tiene ninguna logica.
La verdad es que el mundo del overclock esta muy anclado a windows, basicamente por el 3dmark que a los guiris les obsesiona y al superpi con su nitrogeno liquido para los japoneses en especial.
Yo soy de los que no instala linux por vagueza(lo he tenido alguna vez) ya que realmente nada me ancla a windows (quizas solo el superpi) no lo uso para juegos y todo lo demas que hago tiene clientes en linux. La desventaja de linux es (aunque antes lo era mucho mas) "entretenido" en configurar y poner a punto, no es un SO facil que lo pones y ya esta todo hecho. Y la verdad, despues de pasarme el dia programando en el curro, lo ultimo que quiero es meterme a configurar un linux en casa.
Es mi opinion, tambien se todas sus virtudes pero me frena que sea un SO mas "dificil".

Saludos

PD: luego en casa provare el programita este
ains akellos tiempos....
Desde que me compré mi ati 9600 pro no he podido usar linux...
Con debian no me iban las X.
Con mandrake me daba conflicto con XFree86 al instalar los drivers ati o con Vesa al instalar los vesa( genericos).
Con knoppix ( debian) el raton no iba O_o o_O.
Con fedora core 2 me tocó sufrir el bug reconocido por fedora, no arrancaba windows ( tp probé si me daba conflicto con las X)


Una desgracia vamos, y no soy al único que le pasa... sino mirad en el foro de soft libre...
Aparte del caso ya reconocido y constatado de que a Musice le odia linux (no se que le ha hecho), skunkworks yo te animaria a ponerte una mandrake 10 que si todo sale bien en la instalacion no tendras que configurar absolutamnete nada aparte de la grafica.(que si es nvidia no te resultara nada dificil instalar los drivers.)

Respecto al test de rendeimineto esta tarde lo pruebo en mi maquina y en la del curro . Y en el k6 de mi hermana .
Tengo una ati pero vamos, no le veo el problema ya lo configure con la mandrake 9.2, una cosa que si me da por culo es la placa de red integrada de la placa base (3com gigabit) que la ultima vez que lo intente no se queria instalar la jodida.
A mi realmente me gusta BeOs mas que linux pero ia te digo que en casa que me pongan las cosas faciles que ya me las ponen dificiles durante el resto del dia.
Aun asi reconozco que linux es completame superior a guindous ejeje, pero joder es mucho mas facil aajaj

Saludos

PD: por cierto, existe algo tipo clockgen (cambiar el fsb dentro del SO) pa linux?
PD2: si me pusiera algo seria gentoo ya que eso de que este optimizado para tu maquina me mola y ya puestos a complicarse, que mas da complicarselo mucho ya xD
y yo tambien lo dije en el hilo de Spi, me gustaria poderme meter a Linux y olvidarme de windows, pero a parte q comparto problems con musice, tengo una Ati 9600 Pro. Red hat en mi casa, en modo texto no arrancaba por los drivers de la grafica, debian 3.0 me fue imposible llegar a hacerlo funcionar.

Weno y a parte yo no se programar (solo un poco en JavaScript y pseudocodigo) y todas las movidas de las q me hablais me suenan a chino.... Por eso no me paso a Linux, si supiera q no tendria q liar ninguna, pero visto q ya la grafica da problemas....


Salu2 [snif]
viddax^2 escribió:Weno y a parte yo no se programar

Yo sólo sé algo de java y uso linux sin problema. Para usar linux no tienes que saber programar, de verdad.

Adjunto el test, aunque no tengo ni idea de qué es ni para qué sirve [ayay]

Adjuntos

El SUSE 9.1 traga con las ATI. Tengo una Radeon 9700 y me la reconoció a la primera lo que sin aceleración 3D. Para meterle los drivers 3D hay un tutorial por ahi en formato pdf, es un coñazo porque hay que recompilar las fuentes del nucleo y hacer un montón de movidas, pero ahora funciona bien xD.

A parte de eso no he tenido más problemas con el hard en SUSE, bueno tarda un montón en arrancar porque se queda pillado intentando detectar unos discos SATA que no tengo...

Personalmente prefiero el BeOS al Linux, y tb hay otras alternativas como el AROS y mil más, si bien no tienen tantas aplicaciones como el Linux. Linux es interesante para aprender, pero es complicado y tampoco veo que sea más ligero que el Windows, lo que hace falta es un SO bien optimizado como el AmigaOS o el MorphOS.
Linux es cada vez mas facil de configurar y cada vez tiene mas soporte hardware. El soporte en windows, aunque es mejor, tampoco es perfecto. Tengo ejemplos al respecto, pero este hilo no trata de eso, si alguien quiere que se los cuente, por privado (cotillas! XD). Si quereis intentar con linux, pasaos por el foro de SL. Al que lo quiere intentar con gentoo, que sepa que el requisito imprescindible es ¡leer!:
http://www.gentoo.org/doc/es/handbook/

Por cierto, me parece muy fuerte que la gente aun exista esa creencia que se necesita saber programacion para instalar linux. Lo que pasa es que linux es mejor plataforma para desarrollar que cualquier windows (no sabeis lo facil que es sacar un pantallazo azul en un win9x xDD)

splatterhouse escribió:Personalmente prefiero el BeOS al Linux, y tb hay otras alternativas como el AROS y mil más, si bien no tienen tantas aplicaciones como el Linux. Linux es interesante para aprender, pero es complicado y tampoco veo que sea más ligero que el Windows, lo que hace falta es un SO bien optimizado como el AmigaOS o el MorphOS.

Linux es tan ligero como lo quieras tu que sea. Yo puedo correr linux en un 386 sin problemas (mi servidor es un k6!), sin embargo, windows esta mucho mas cargado por defecto y es inalterable. El problema es que muchas distros siguen las mismas politicas que microsoft y incluyen kde o gnome por defecto, que aunque son las mas atractivas visualmente, son casi tan pesadas como windows.
La prueba de que linux es mas ligero que windows intento que sea el test que he propuesto, pruebalo ;)

Saludos
PD: Por cierto, tengo una ATI IGP mobile y eso si que es el infierno. [buaaj]
Yo puedo aportar dos gráficas. Mi sistema es:
francis@neuromancer francis $ uname -a
Linux neuromancer 2.6.7-gentoo-r2 #1 Mon Jun 28 11:13:23 UTC 2004 i686 AMD Athlon(tm) XP 2200+ AuthenticAMD GNU/Linux


Con 512MB de RAM DDR 333MHz (Kingston) en un único módulo.

La primera, compilando cache.c sin aplicar ninguna flag a gcc (como viene en el ejemplo de Raharu).

Imagen

La segunda, aplicando "-O2 -march=athlon-xp -mmmx -msse -m3dnow -fomit-frame-pointer -frename-registers -ffast-math -mfpmath=sse,387 -pipe". Existen pequeñas diferencias, pero tampoco es para tirar cohetes.

Imagen


Ampliación: He hecho el test en MS Windows XP SP-1 con la misma máquina. Lo primer que veo es un acceso lento a las caché L1 y L2, y casi ninguna diferencia entre ellas (L1 siempre es muchísmo más rápida). En cambio, el acceso a memoria RAM es más rápido que en Linux.

Imagen

Saludos.
Raharu escribió:Linux es cada vez mas facil de configurar y cada vez tiene mas soporte hardware. El soporte en windows, aunque es mejor, tampoco es perfecto. Tengo ejemplos al respecto, pero este hilo no trata de eso, si alguien quiere que se los cuente, por privado (cotillas! XD). Si quereis intentar con linux, pasaos por el foro de SL. Al que lo quiere intentar con gentoo, que sepa que el requisito imprescindible es ¡leer!:
http://www.gentoo.org/doc/es/handbook/



Eso es precisamente lo que me frena, tener que leer y currarmelo, quizas si algun dia tengo vacaciones...

Saludos

PD:Hablando de fallos de windows 9x.. Alguien se acuerda del "cd /con/con" ? xD
skunkworks escribió:

Eso es precisamente lo que me frena, tener que leer y currarmelo, quizas si algun dia tengo vacaciones...

Saludos

PD:Hablando de fallos de windows 9x.. Alguien se acuerda del "cd /con/con" ? xD


yepa, yo hablo de gentoo, mandrake es más facil de instalar que cualquier windows y si no tienes problemas como los de musice, igual de facil de administrar que cualquier windows. Además una vez te manejas, resuelves antes un problema con linux que uno con windows (¿cuanto tiempo perdeis y cuanto riesgo tomais formateando?) Eso si, estas vendido a la configuración que trae por defecto, que no tiene porque ser optima.
En un arranque por defecto de mdk, estas arrancando muchos servicios que no tiene windows, por ejemplo apache (servidor web), que puede que no lo necesites para nada.

Saludos
PD: Para la pantalla azul:
printf("%s", NULL);
Wenaaaas...

Bueno como veo k aparece un benchmark majete... aki os pongo mi resultado, en una Suse 9.1 con Kernel 2.6.5-75. XP2500 213x10 :)

La machine XD:

Imagen


Sin Flags:

Imagen



Con Flags:

Imagen


Parece k a este test les mola a los Barton... haber si aparece algun P4 para comparar XD XD XD . Y k con Flags no le mola tanto [mad]


Salu2
Es un test de cache, y como tal, los megaherzios no cuentan para nada. El barton si no me equivoco tiene el doble de cache que un palomino/t-bread.
Voy a ver si amplio el post inicial y añado una explicación de lo que hace exactamente el test.

Saludos
AMETSA escribió:Aparte del caso ya reconocido y constatado de que a Musice le odia linux (no se que le ha hecho), skunkworks yo te animaria a ponerte una mandrake 10 que si todo sale bien en la instalacion no tendras que configurar absolutamnete nada aparte de la grafica.(que si es nvidia no te resultara nada dificil instalar los drivers.)

Respecto al test de rendeimineto esta tarde lo pruebo en mi maquina y en la del curro . Y en el k6 de mi hermana .


Es tux... ese pingüino maligno... que te he hexo yo para merecer esto? por que? yo te quería, yo no te abandonaría, yo no te dejaría tirado... por favor tuxy bonito... si me lees... haz q funcione esto.
Bueno pues ahi va el del pc del trabajo (p4 2ghz de los del bus a 400 xDD)

Imagen

no seais duros con él, el pobre no da pa mas xD
Saludos
skunkworks escribió:Bueno pues ahi va el del pc del trabajo (p4 2ghz de los del bus a 400 xDD)

Imagen

no seais duros con él, el pobre no da pa mas xD
Saludos


Ante todo, perdona que te coja como conejillo de indias, pero eres el primero que usa windows para realizar el test. xD
Fijaos en los tiempos de acceso, en vez de estar escalonados, como deberian serlo (hay un numero determinado de niveles de memoria), se ven que siguen una extraña progresión lineal!!! Windows ha convertido el acceso a un vector, que teoricamente tiene un coste constante, en un coste lineal.
Es más, los algoritmos de reemplazado de datos en la cache (aquellos que deciden que quitar y poner de la cache) se implementan por hardware, asi que windows además estorbarnos nuestros analisis, no tiene excusa posible.

Saludos
[boing]

Bueno, bueno... debo reconocer que no llego a comprender el corazon del asunto, pero releyendo la excelente explicacion que nos a brindado Raharu sobre el tema (gracias Raharu) alcanzo a discernir "the basics" de esto. Y gracias a la doble dosis dosis de aburrimiento que llevo hoy en cuerpo me he metido "in die Sache" y... aqui teneis unas grafiquillas:

Linux, pero mientras compilaba el gnuplot:

Imagen

Windows.

Imagen

[agggtt] Jojojo, que duro... Da pena, eh? Lo cierto es que no esta nada mal, teniendo en cuenta que el win98 de la prueba estaba corriendo sobre vmware corriendo sobre linux. Ya se que no vale. Pero bueno, creo que tambien le puede resultar interesante a alguien que le interese...

Bu!
Durmieu [risita]

Gnu is Not Uindows.
Perro, haz los tests como dios manda xD
Pues aqui va mi pequeña aportacion (todo sea por la ciencia [sonrisa] ):

Mi nene
Linux Narshe 2.6.7-gentoo-r5 #3 SMP Mon Jun 28 08:50:55 UTC 2004 i686 Intel(R) Pentium(R) 4 CPU 1400MHz GenuineIntel GNU/Linux

Las flags usadas
CFLAGS="-O2 -march=pentium4 -fomit-frame-pointer -fstack-protector -pipe"

Se ha de decir que tengo memoria Rambus de aquellas (las que los modulos se llamaban RIMM's). Tengo 256 a 800Mhz

Imagen

Salut !
Compilado sin CFLAGS:
Imagen

Compilado con CFLAGS para AMD Athlon XP:
Imagen
Musice en knoppix has probado en quitar un pad? veras como el raton ya te ira, bug que se ha solucionado en la verison 3.4 de knoppix (es una pasada, ademas traducida y todo)

salu2
actualmente knoppix 3.4 es la mejor distro del momento , la mejor para aprender, y te correras con el apt.

es iun live cd, no teneis k instalarlo en el disco duro, probarlo y no os arrepentireis.
Salu2
En anteriores versiones de Knoppix estaba incluido un script para instalarlo en el disco duro como cualquier otra distro. Supongo que esto no habrá canviado en la 3.4

Si os correis con el apt, habrias de probar Gentoo y portage. Eso si que me pone [amor] [ok] :Ð
23 respuestas