VoIP and Hacking | Consulenza Documentazione

Linux Benchmarks

by admin on Mar.01, 2009, under Linux

xxx

Avendo a disposizione una macchina dotata di CPU AMD64 sulla quale sono installate diverse distribuzioni Linux, ho voluto effettuare una prova comparativa delle performances tra codice a 32 e 64 bit, utilizzando una serie di test ad alto grado di number crunching. I tools utilizzati per effettuare la prova sono stati

  • Un semplice crivello di Eratostene per la ricerca dei numeri primi, in range ad ampiezza differente
  • Una codifica in mp3 con differenti livelli di applicazione di parametri di qualità attraverso Lame.
  • Il set di test che costituiscono il benchmark Scimark Scimark consiste in una serie di benchmarks computazionali in virgola mobile, dal National Institute of Standards and Technology. I valori restituiti sono espressi in MFLOPs (milioni di operazioni in virgola mobile al secondo).

La CPU della macchina utilizzata per i benchmarks è costituita da un processore AMD Athlon 64 3200+ a 2GHz (2003.512 MHz) ed ha una cache di secondo livello di 512 KB, mentre la RAM è di 256 Mb. Inizialmente era dotata di una RAM di dimensioni doppie (512 MB), ma ho dovuto eliminare il secondo banco perchè difettoso, rinunciando così alla modalità dual-channel. Sospetto che in qualche modo ciò possa essere andato a discapito del codice a 64bit, ma non mi sento di azzardare alcuna precisa spiegazione, riservando la verifica di ciò ad una eventuale successiva serie di test con due banchi di memoria).

Lo scopo del test, ripeto, era quello di effettuare una comparazione fra i risultati ottenuti usando due diverse distribuzioni Linux, diversamente ottimizzate, sulla stessa piattaforma.

Le due distribuzioni utilizzate sono state:

  • Slackware 9.1, con kernel 2.6.11.11 ricompilato per i686
  • Gentoo stage 1, con kernel 2.6.11-gentoo-r7, nativamente “patchato” per AMD64 (Rappresenta attualmente l’unica alternativa, insieme a Ubuntu, alle distribuzioni commerciali come Suse o RedHat per avere un Linux “a 64 bit”)

Per la compilazione dei tools di benchmarks sono state utililizzate purtroppo due versioni differenti del compilatore GCC:

  • GCC 3.3.5 per la Slackware
  • GCC 3.4.3 per la Gentoo

Occorre però precisare che ad oggi è disponibile per la Slackware “current” solamente un compilatore al limite con versione 3.3.6.

Test I - Crivello di Eratostene

Il test è consistito nel far estrarre ad entrambe le configurazioni, i numeri primi in 3 range diversi:

  • 0 - 999.990.000
  • 0 - 1.999.990.000
  • 0 - 2.146.990.000

Il sorgente in C (sieve.c) è stato compilato con:

# gcc -march=i686 -O6 -o sieve sieve.c (su Slackware)

# gcc -march=k8 -O6 -o sieve sieve.c (su Gentoo)

I risultati sono schematizzati nella seguente tabella:

Slackware Gentoo
RANGE NUMERI PRIMI TEMPO NUMERI PRIMI TEMPO
0 - 999.990.000 50.847.059 47 secs 50.847.059 46 secs
0 - 1.999.990.000 98.221.846 97 secs 98.221.846 98 secs
0 - 2.146.990.000 105.074.642 122 secs 105.074.642 106 secs

I risultati denotano una sostanziale equivalenza prestazionale, ma una notevole differenza si nota via via che ci si avvicina al limite massimo nel range di ricerca concesso all’architettura a 32bit

Lo stesso programma sull’architettura a 64 bit può estendere la ricerca dei numeri primi in un range più vasto, come testimonia il seguente risultato

Searching prime numbers to : 2999990000
144449072 prime numbers found in 153 secs.

Il grafico seguente rappresenta in altra maniera i risultati di tale test:

xxx

Test II - Codifica mp3

Il test è consistito nella codifica in formato mp3 di un file in formato wav lungo 43711964 bytes, utilizzando il software Lame (versione 3.96.1). In entrambi i casi il pacchetto è stato compilato tramite il relativo configure, senza opzioni aggiuntive.

Il test è stato effettuato in tre modalità diverse per piattaforma:

    # lame -f filename.wav /dev/null
    # lame -h filename.wav /dev/null
    # lame -q0 filename.wav /dev/null

La prima forma utilizza la più lenta ma migliore versione di tutti gli algoritmi di psicoacustica implementati. La seconda è comunque una codifica di alta qualità. L’ultima è una codifica molto veloce, che applica comunque ancora alcuni criteri di psicoacustica.

I risultati sono schematizzati nella seguente tabella:

Slackware Gentoo
Test 1 11 secs 13 secs
Test 2 22 secs 22 secs
Test 3 341 secs 226 secs

I risultati paradossalmente indicano come leggermente più veloce il codice a 32 bit nel primo test, denotano totale equivalenza per quanto riguarda la forma intermedia, mentre la differenza prestazionale si fa notevolissima a favore del codice a 64 bit nella forma pi impegnativa di test.

Per inciso, nell’operazione inversa (decodifica) il codice a 64 bit impiega poco pi di 3 secondi, mentre quello a 32 un secondo abbondante in più.

Il grafico seguente rappresenta in altra maniera i risultati ottenuti:

xxx

Send post as PDF to PDF | PDF Creator | PDF Converter
:

Comments are closed.

Cerchi qualcosa in particolare?

Usa il form qui sotto per cercare nel sito:

Blogroll!

Alcuni links...

Archives

Tutte le entries, in ordine cronologio...