Tempo fa scrissi un articolo che parlava del  sistema operativo Ubuntu (Linux), ricordate? . Si metteva in luce la necessità, per noi informatici, di venire a conoscenza di quelle che sono le differenze tra Windows e Linux.  Si cercava di dare un significato ai tanti luoghi comuni e frasi fatte espresse dalla maggior parte degli utenti, del tipo : “Ubuntu e meglio di Windows” , “Ubuntu è più stabile” , “Windows si blocca sempre”, ecc..  Si era detto in quell’articolo che avrei aperto uno spazio in questo blog appunto per parlare di informatica, iniziando appunto dal nostro dilemma : E’ meglio WINDOWS o LINUX?

Bene io e il mio gruppo di colleghi ci siamo posti questa domanda e siamo arrivati a delle conclusioni.

Non è stato un lavoro per niente facile. Il lavoro vero e proprio di test sui due sistemi operativi è stato preceduto da un’approfondito studio teorico che marchasse le principali caratteristiche di ciascun sistema. Naturalmente abbiamo tenuto sempre in considerazione ed approfondito quelli che sono i concetti di base che fanno parte della conoscenza del funzionamento di un sistema operativo tipo:  Kernel, scheduling di processi e thread, meccanismi di interrupt, gestione della memoria e studio dei sistemi multi processore SMP.

Ovviamente affermare che un sistema operativo è meglio di un altro, significa rendersi un po’ conto di come tale sistema riesca a gestire ed ottimizzare i suoi processi in esecuzione sfruttando al massimo e al meglio le proprie risorse e conseguentemente riducendo notevolemente i tempi di esecuzione degli stessi. Ci si rende conto che il fine ultimo di un ottimale utilizzo delle risorse riguarda  una minore attesa da parte di un qualsiasi utente che magari si trova davanti ad un monitor e che deve attendere del tempo per avere a sua disposizione la macchina prima che la stessa completi di eseguire un programma. Quindi si capisce che se il sistema operativo è lento l’utente vedrà la macchina lenta o indisponibile. E’ per questo che spesso siamo  indotti ad affemare che windows è meglio di linux o viceversa.

Per verificare effettivamente le prestazioni dei sistemi operativi analizzati, abbiamo pensato di eseguire dei test di benchmark per poter confrontare in termini non solo teorici i due sistemi. Questi test ci hanno, infatti, permesso di confrontare i tempi di esecuzione di varie applicazioni. I tempi osservati sono stati raccolti, analizzati e studiati per poterne trarre delle conclusioni finali per quel che riguarda le prestazioni di scheduling, relative ai due sistemi nell’esecuzione di processi multi-thread su un’architettura multi processore. La scelta dei programmi utilizzati per il test è ricaduta su quelle applicazioni maggiormente utilizzate in un ambiente desktop/workstation, e che ci desse, inoltre, la possibilità di eseguire lo stesso software su entrambi i sistemi operativi. Per eseguire questi test abbiamo ritenuto opportuno utilizzare una macchina vergine, con nessun sistema preinstallato, in modo da poter effettuare i test su un sistema operativo che non avesse applicazioni installate se non i driver delle periferiche. Il vantaggio di questo approccio è che, in questo modo, non essendo presenti applicazioni esterne al sistema stesso, eccetto gli applicativi di benchmark, si sono ridotti al minimo i processi/threads in esecuzione sulla macchina.

Si è proceduto secondo i seguenti punti:

– Formattazione della macchina

– Installazione di Windows XP PRO-SP2 (esclusi aggiornamenti)

– Installazione Ubuntu 8.04 e ricompilazione del Kernel ottimizzato per un sistema dual core

– Installazione e configurazione dei software

– Creazione degli script di benchmark

– Esecuzione dei test e raccolta dei risultati

– Analisi ed interpretazione dei dati raccolti.

I test sono stai effettuati sull’esecuzione dei seguanti applicativi: Mencoder, Lame, FAAC, Rar, OpenSSL, Blender.

Ecco a voi i risultati dei nostri test:

LAME, codifica audio.

Configurazione multipliprocesso singlee thread. I tempi con 2 thread non migliorano rispetto ad un solo processo, perche occupano un core ciascuno. Inoltre lanciando quattro processi si verifica un raddoppio effettivo dei tempi per entrambi i sistemi operativi.
MENCODER, codifica video.

Applicazione multithread nativa. Con un solo thread l’applicazione utilizza appieno un solo core. Con 2 thread si nota un dimezzamento dei tempi di esecuzione e pieno utilizzo dei due core. Con 4 thread Linux risente molto dell’utilizzo dei context switch

FAAC, codifica audio.

Configurazione multiprocesso, single thread. Nel caso di quattro processi di codifica contemporanei è interessante sottolineare come, mentre con linux i processi di codifica ottengono tempi di completamento pressoché identici all’interno della singola prova, con windows invece si possono notare tempi di completamento dei singoli processi molto differenti tra loro. Linux in questo conferma ulteriormente in questo test una migliore esecuzione parallela dei processi.

RAR

Differentemente dai test precedenti si nota che con due processi concorrenti il tempo registrato non è stato direttamente proporzionale al caso di un solo processo, ma superiore del 30%. Con 2 processi contemposanei la richiesta di risorse di calcolo veniva ad essere superiore a quella disponibile, causando un umento dei context switch e della prelazione tra processi.

Rendering video, BLENDER:

Blender è un’applicazione multithread. Si nota una riduzione notevole dei tempi di completamento sfruttando l’utilizzo di più thread. Con 8 thread le prestazioni migliore ulteriormente rispetto al primo caso. Si nota che Windows ha una risposta migliore. Il motivo è imputabile all’utilizzo dei driver video, proprietari in Windows e open source in Linux.

Crittografia, OPENSSL- DES3

Il test di crittografia evidenzia una migliore prestazione del file system EXT3 di Linux. L’NTFS di Windows subisce un calo di prestazioni proporzionale alla quantità di dati scritti fino a raggiungere una perdita del 41 % rispetto a EXT3 di Linux.

Crittografia, OPENSSL, MD5:

A causa della natura dell’applicazione, CPU intensive e diskless, si nota una riduzione dei tempi di completamento tra le prove eseguite in successione.

Conclusioni. Beh analizzando i risultati si nota che Windows mostra una migliore gestione delle applicazioni multithread come MPlayer e Blender.

Linux mostra invece un’ottimizzazione migliore dello scheduling per applicazioni CPU intensive ed una miglior gestione della cache per il riutilizzo delle istruzioni.

Per Windows si è notato un effettivo aumento di priorità data alle finestre in primo piano.

Per Linux si è notata una notevole stabilità dei tempi di completamento tra le singole prove. GLi altri processi nel sistema interferiscono in maniera non rilevante.

C’è da sottolineare però il fatto che, in generale, l’attenzione non è ricaduta tanto su quale dei due sistemi sia il “migliore” ma su come essi si distinguono nell’affrontare i problemi relativi alla gestione di applicativi Multi-thread e su architetture Multi-Core.

COMPARAZIONE DEI TEST:


RISULTATO FINALE: WINDOWS 10 – LINUX 13

Che ne dite?  E’ come vi aspettavate?

ps. Tutto il lavoro di studio e di test è stato realizzato da me Daniele (guana), Oscar, Lorenzo e Gianluca.

Ci sentiamo al prossimo articolo.

ciao,

guana.