Benchmarking the Black Box

Posted by Gusy On Monday, August 20, 2007 2 comments

Empezando la ultima semana de "vacaciones", se me ocurrió poner a prueba mi computador, ya que al ver muchos windowzeros overclockeando y haciéndole benchmarks a sus computadoras. Entonces llego a mi mente esa sensacion de que por que en windows si y en linux no, pues ese no, realmente no existe, por que buscándole y rascándole un poco a las búsquedas de google y pensándole un poco pude juntar muchas ideas que se me vinieron a la mente y también crear este tutorial que ya tenia planeado desde hace una semana XP. Pero bueno empecemos a destripar la computadora, eh aquí una lista de software necesario para realizar esto:

- hwinfo : Este software nos ayuda a identificar los dispositivos del sistema.
- lmsensors : Este software nos ayuda a saber los datos de nuestro CPU.
- Super_pi : El clásico para benchmark ahora para Linux.
- algun monitor del sistema como el System Monitor de Gnome.
- inteligencia : esto no es software pero te va a ayudar mucho XD.

despues de instalar todo el software requerido, vamos a revisar nuestro sistema:

yo tengo las temperaturas agregadas al panel para facilitar la lectura de estas.

ahora vienen los siguientes pasos a realizar para ver con mas detalle tu sistema:

para esto utilizaremos el siguiente comando: cat /proc/cpuinfo el cual nos mostrara datos sobre nuestro CPU

algo masomenos parecido a esto:
---------------------------------------------------------------------------------------------------------
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 67
model name : Dual-Core AMD Opteron(tm) Processor 1212
stepping : 2
cpu MHz : 2000.000
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
bogomips : 4021.62
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc

processor : 1
vendor_id : AuthenticAMD
cpu family : 15
model : 67
model name : Dual-Core AMD Opteron(tm) Processor 1212
stepping : 2
cpu MHz : 2000.000
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
bogomips : 4018.62
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc
---------------------------------------------------------------------------------------------------------
ahora sigue ver datos sobre el voltaje
para eso usamos este comando:
sensors
el cual mostrara algo como esto:

---------------------------------------------------------------------------------------------------------
k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:
+33°C
Core1 Temp:
+35°C

it8716-isa-0290
Adapter: ISA adapter
VCore: +1.26 V (min = +0.00 V, max = +4.08 V)
VDDR: +3.26 V (min = +0.00 V, max = +4.08 V)
+3.3V: +0.00 V (min = +0.00 V, max = +4.08 V) ALARM
+5V: +4.89 V (min = +0.00 V, max = +6.85 V)
+12V: +11.58 V (min = +0.00 V, max = +16.32 V)
in5: +0.00 V (min = +0.00 V, max = +4.08 V) ALARM
in6: +0.00 V (min = +0.00 V, max = +4.08 V) ALARM
5VSB: +4.78 V (min = +0.00 V, max = +6.85 V)
VBat: +2.94 V
fan1: 5152 RPM (min = 0 RPM)
fan2: 0 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
temp1: +40°C (low = -1°C, high = +127°C) sensor = diode
temp2: +42°C (low = -1°C, high = +127°C) sensor = thermistor
temp3: -1°C (low = -1°C, high = +127°C) sensor = thermistor
vid: +1.350 V

---------------------------------------------------------------------------------------------------------

claro sigue la memoria

y como el cat /proc/meminfo escupe muchas cosas vamos a correr como root el siguiente comando
hwinfo --memory

que mostrara algo como lo siguiente:

---------------------------------------------------------------------------------------------------------

01: None 00.0: 10102 Main Memory
[Created at memory.61]
Unique ID: ****.***********
Hardware Class: memory
Model: "Main Memory"
Memory Range: 0x00000000-0x7dba9fff (rw)
Memory Size: 2 GB Config Status: cfg=new, avail=yes, need=no, active=unknown

---------------------------------------------------------------------------------------------------------
Kernel

uname -a

---------------------------------------------------------------------------------------------------------
Linux opteron 2.6.21.1 #1 SMP Sun May 6 09:14:47 MDT 2007 x86_64 GNU/Linux
---------------------------------------------------------------------------------------------------------

ahora sigue lo bueno. Estos datos que acabamos de tomar son para comparativa solamente, aparte de que te ayudan a tener un control si deseas hacer overclocking,

usaremos el siguiente comando para hacer nuestro benchmark dentro de la carpeta de super pi.

./super_pi

los numeros de iteraciones que equivalen a los "M" son los siguientes

1M = 19 iteraciones, en este caso serán 20)
2M = 20 iteraciones, Linux 21
8M = 22 iteraciones, Linux 23

No tengo idea de por que Iteraciones + 1, pero si no lo ponemos podriamos caer en un error. como me sucedió a mi, en el caso de 2M
en el cual un supere a un E6420 overclockeado a 4Ghz. y me pregunte esta bien que Linux funcione mas rápido que windows y que este en 64 bits pero creo que esto es demasiado, luego vi en unos foros que se utiliza Iteraciones + 1.
pero bueno eh aquí mis tablas por si quieren comparar:

1M

---------------------------------------------------------------------------------------------------------
Version 2.0 of the super_pi for Linux OS
Fortran source program was translated into C program with version 19981204
of
f2c, then generated C source program was optimized manually.
pgcc 3.2-3 with compile option of "-fast -tp px -Mbuiltin -Minline=size:1000 -Mnoframe -Mnobounds -Mcache_align -Mdalign -Mnoreentrant" was used for the
compilation.
------ Started super_pi run : Tue Aug 21 00:56:50 MDT 2007
Start of PI calculation up to 1048576 decimal digits
End of initialization. Time= 0.460 Sec.

I= 1 L= 0 Time= 1.412 Sec.
I= 2 L= 0 Time= 1.620 Sec.
I= 3 L= 1 Time= 1.616 Sec.
I= 4 L= 2 Time= 1.616 Sec.
I= 5 L= 5 Time= 1.616 Sec.
I= 6 L= 10 Time= 1.608 Sec.
I= 7 L= 21 Time= 1.624 Sec.
I= 8 L= 43 Time= 1.620 Sec.
I= 9 L= 87 Time= 1.616 Sec.
I=10 L= 174 Time= 1.624 Sec.
I=11 L= 349 Time= 1.612 Sec.
I=12 L= 698 Time= 1.620 Sec.
I=13 L= 1396 Time= 1.616 Sec.
I=14 L= 2794 Time= 1.608 Sec.
I=15 L= 5588 Time= 1.608 Sec.
I=16 L= 11176 Time= 1.600 Sec.
I=17 L= 22353 Time= 1.584 Sec.
I=18 L= 44707 Time= 1.528 Sec.
I=19 L= 89415 Time= 1.432 Sec.
End of main loop
End of calculation. Time= 31.930 Sec.
End of data output. Time= 0.180 Sec.

Total calculation(I/O) time= 32.110( 0.964) Sec.
------ Ended super_pi run : Tue Aug 21 00:57:22 MDT 2007

---------------------------------------------------------------------------------------------------------

2M

---------------------------------------------------------------------------------------------------------
Version 2.0 of the super_pi for Linux OS
Fortran source program was translated into C program with version 19981204 of
f2c, then generated C source program was optimized manually.
pgcc 3.2-3 with compile option of "-fast -tp px -Mbuiltin -Minline=size:1000 -Mnoframe -Mnobounds -Mcache_align -Mdalign -Mnoreentrant" was used for the
compilation.
------ Started super_pi run : Tue Aug 21 01:09:43 MDT 2007

Start of PI calculation up to 2097152 decimal digits
End of initialization. Time= 1.048 Sec.
I= 1 L= 0 Time= 3.068 Sec.
I= 2 L= 0 Time= 3.516 Sec.
I= 3 L= 1 Time= 3.520 Sec.
I= 4 L= 2 Time= 3.524 Sec.
I= 5 L= 5 Time= 3.528 Sec.
I= 6 L= 10 Time= 3.536 Sec.
I= 7 L= 21 Time= 3.504 Sec.
I= 8 L= 43 Time= 3.488 Sec.
I= 9 L= 87 Time= 3.484 Sec.
I=10 L= 174 Time= 3.492 Sec.
I=11 L= 349 Time= 3.496 Sec.
I=12 L= 698 Time= 3.540 Sec.
I=13 L= 1396 Time= 3.544 Sec.
I=14 L= 2794 Time= 3.532 Sec.
I=15 L= 5588 Time= 3.528 Sec.
I=16 L= 11176 Time= 3.528 Sec.
I=17 L= 22353 Time= 3.500 Sec.
I=18 L= 44707 Time= 3.444 Sec.
I=19 L= 89415 Time= 3.360 Sec.
I=20 L= 178831 Time= 3.132 Sec.
End of main loop

End of calculation. Time= 73.021 Sec.
End of data output. Time= 0.356 Sec.
Total calculation(I/O) time= 73.377( 4.428) Sec.
------ Ended super_pi run : Tue Aug 21 01:10:58 MDT 2007
---------------------------------------------------------------------------------------------------------

8M

---------------------------------------------------------------------------------------------------------
Version 2.0 of the super_pi for Linux OS
Fortran source program was translated into C program with version 19981204 of
f2c, then generated C source program was optimized manually.
pgcc 3.2-3 with compile option of "-fast -tp px -Mbuiltin -Minline=size:1000
-Mnoframe -Mnobounds -Mcache_align -Mdalign -Mnoreentrant" was used for the
compilation.
------ Started super_pi run : Tue Aug 21 01:11:44 MDT 2007
Start of PI calculation up to 8388608 decimal digits
End of initialization. Time= 5.336 Sec.
I= 1 L= 0 Time= 14.901 Sec.
I= 2 L= 0 Time= 16.865 Sec.
I= 3 L= 1 Time= 16.985 Sec.
I= 4 L= 2 Time= 16.977 Sec.
I= 5 L= 5 Time= 16.893 Sec.
I= 6 L= 10 Time= 16.953 Sec.
I= 7 L= 21 Time= 16.853 Sec.
I= 8 L= 43 Time= 16.837 Sec.
I= 9 L= 87 Time= 16.853 Sec.
I=10 L= 174 Time= 16.877 Sec.
I=11 L= 349 Time= 16.917 Sec.
I=12 L= 698 Time= 16.833 Sec.
I=13 L= 1396 Time= 16.841 Sec.
I=14 L= 2794 Time= 16.841 Sec.

I=15 L= 5588 Time= 16.845 Sec.
I=16 L= 11176 Time= 16.841 Sec.
I=17 L= 22353 Time= 16.845 Sec.
I=18 L= 44707 Time= 16.809 Sec.
I=19 L= 89415 Time= 16.745 Sec.
I=20 L= 178831 Time= 16.433 Sec.
I=21 L= 357662 Time= 15.881 Sec.
I=22 L= 715326 Time= 14.933 Sec.
End of main loop
End of calculation. Time= 382.220 Sec.

End of data output. Time= 1.464 Sec.
Total calculation(I/O) time= 383.684( 42.443) Sec.
------ Ended super_pi run : Tue Aug 21 01:18:30 MDT 2007
---------------------------------------------------------------------------------------------------------

bueno ya tenemos nuestros datos y siguen las preguntas del millon:

1) Linux tiene ventajas en cuanto a uso del hardware sobre windows?
R: Yo tengo mi kernel compilado especialmente para CPU's Opteron, cosa que no se puede hacer en windows. no se si esto altere el resultado.
otra cosa es que estoy en un sistema de 64 bits (aquy no ahy diferencia), ya probe usando las librerias de 32 bits (linux32) y las de 64 (linux64), y no hubo
diferencia en los tiempos asi que esto no importa realmente.
2) y acaso los dual cores funcionan aquy?
R: muy buena pregunta lo único que eh descubierto es que trabajan algo distinto a windows, en el cual mi CPU se quedaba al tope (100% en un CPU) y el otro estaba en modo zombie (sin hacer nada).
en linux pasa esto:

QUE!!!!????, pero si los núcleos del CPU se están espejeando
En windows esto no pasa o por lo menos yo no lo eh visto. en Linux, tal vez pase por la configuración del kernel, por el momento no lo se, necesitaríamos hacer mas pruebas con otros CPU's

3) Oye pero el CPUz me da mas información?

Tecnicamente si. pero es información que cualquier usuario debería saber sobre su computadora y si no la sabes apaga tu CPU y con lápiz y papel en mano anota lo que encuentres dentro.

4)Entonces dame los datos del hardware que necesito sobre tus optys o no lo sabes?

R: CPU: Opteron 1212, MHZ = 2000, bus 400, multi x5, Step = F3, VCore = 1.26
Motherboard: ASUS M2N-SLI Deluxe AM2
Ram: OCZ Gold 2 x 1 Gb Timing 5-5-5-12.
Cooling = Aire, ventilador y Heatsink de Stock.

5) Ohh, pero por que tu ventilador esta a 5300 RPM si es de Stock?

R: Al ser un procesador de Servidor este esta muy grande, y ah llegado hasta los 7000 RPM cuando hace mucho calor.

6) Ehy, el Super pi me da los valores en segundos y yo los quiero como los de windows!:

R: Okay, Okay, te doy un regalito pues:

------------------------Empieza el codigo -----------------------------------------
#include
using namespace std;
main()
{
cout << "Gusy's Time calculator\n"; double seg, segundos; int horas, minutos; cout << "Introduce el tiempo total en segundos: "; cin >> seg;
horas = (seg/3600);
minutos = (seg/60);
segundos = (seg - (horas * 3600 + minutos * 60));
cout << "\n" <<>
------------------------Termina el codigo -----------------------------------------
Conste que tu lo compilas, ahh por cierto te va dar este warning [ warning: converting to ‘int’ from ‘double’ ]; si, es necesario para que funcione bien, no lo modifiques. Por cierto esta en C++ por si no lo notaste, XP.
6) Por ultimo pero menos importante, superaste a window$ XP en las pruebas de super pi?

R: mmm... Que te diré?, Claro que si!!!!, por un tiempo de maso menos 8 segundos. y si los opterones apestan para super pi, pero estoy seguro de que corre este opteron corre mejor que cualquier X2 4200 (que es su equivalente).

P.D. si mi sistema esta declockeado, es lo de default y así seguirá por un ratito mas.