domenica 13 gennaio 2008

Come NON si valutano le performance di un sistema operativo.

[Ho cambiato titolo, aggiungendo il "NON" e togliendo il punto di domanda finale, per renderlo piu' attinente al contenuto del post ;-)]

Mi e' stato segnalato questo articolo, apparso ancora un anno fa, su un confronto tra XP e Vista in termini di prestazioni dei due sistemi operativi.

L'articolo inizia subito male a partire dal titolo:

Windows Vista è più veloce di Windows XP?

e prosegue con:

Quali applicazioni saranno eseguite senza problemi o più lentamente a causa delle nuove funzionalità e dell'interfaccia AeroGlass?

Perche' dico che inizia male? Perche' il concetto stesso che il tempo di eseguzione di un'applicazione sia influenzato in modo significativo dal sistema operativo e' risibile.

Davvero c'e' qualcuno che pensa che un sistema operativo possa far girare un'applicazione piu' o meno velocemente?
O che il tema grafico che si appoggia alla GPU possa influenzarne le prestazioni delle applicazioni?

Un articolo serio di valutazione di Vista rispetto a XP dovrebbe invece iniziare proprio spiegando quali sono le interazioni tra sistema operativo e applicazioni, quali aspetti di questa interazione possono venir misurati in termini di tempo di eseguzione e quali altri fattori (non necessariamente legati al sistema operativo) possono influenzare le prestazioni generali di un'applicazione.

Quindi vediamo di chiarire da subito: il sistema operativo non ha il "compito" di velocizzare l'eseguzione delle applicazioni. Il sistema operativo ha il compito di fornire alle applicazioni un ambiente nel quale le funzionalita' necessarie all'applicazione sono messe a disposizione "in modo ottimale".

Le funzionalita' messe a disposizione dal sistema alle applicazioni sono ad esempio l'accesso a disco, l'allocazione della memoria, l'interfacciamento alle periferiche, la comunicazione con altre applicazioni etc.

Il sistema operativo puo' quindi influire in parte su aspetti come il tempo di avvio di un'applicazione, ad esempio se l'applicazione e' gia' presente in memoria viene risparmiato il tempo di accesso a disco, ma di certo non influisce in modo significativo sul tempo di eseguzione di un'applicazione in senso lato.

Nell'articolo citato tra le varie applicazioni testate c'e' WinRar e affermano che su Vista gira il 21,8% piu' lentamente che su XP.

La cosa e' chiaramente una sciocchezza piu' unica che rara.

Nel momento in cui WinRar inizia l'attivita' di compressione o decompressione di un archivio quello che conta e' la potenza di calcolo perche' il flusso in scrittura e lettura da disco e' di entita' irrilevante rispetto ai limiti massimi del disco stesso (grossomodo alcuni MB al secondo che sono niente rispetto ai flussi sostenibili da un disco SATA), quindi se non ci sono altri processi che fanno pesantemente uso della CPU, WinRar avra' modo di utilizzare la CPU stessa al massimo delle prestazioni possibili.
Il sistema operativo in pratica e' inesistente sotto questo punto di vista.

Ma allora com'e' che su Vista hanno misurato un tempo piu' lungo per svolgere la stessa operazione di compressione/decompressione?

Cos'e' che puo' intervenire a rallentare l'eseguzione di WinRar? Si tratta di qualche funzionalita' del sistema operativo? O forse si tratta di qualche altro aspetto?

La risposta e' di una ovvieta' piu' unica che rara: la colpa e' dell'antivirus (o piu' precisamente dell'antispyware).

I test di cui sopra sono stati effettuati su XP senza Windows Defender confrontandoli con Vista con Windows Defender attivo.

Ora e' quantomeno poco corretto non mettere in evidenza la cosa da parte del giornalista e non provare ad effettuare un confronto su Vista tenendo Windows Defender non attivo, oppure installandolo anche su XP.

Windows Defender e' un'applicativo (quindi non e' un componente del sistema operativo) che su XP si puo' installare ma non c'e' di default, mentre su Vista lo troviamo gia' installato, ma nessuno ci obbliga ovviamente a tenerlo attivo.

Se si vuole davvero fare un confronto tra due sistemi operativi per valutarne le prestazioni allora si deve farlo a parita' di condizioni.

Come contro prova ho fatto dei test su Vista usando 7zip che e' un'utility di compressione/decompressione analoga a WinRar.

I risultati per una cartella di 8.115 file per un totale di 422 MB e' stato di 2 minuti e 20 secondi per la compressione senza Windows Defender attivo e di 2 minuti e 30 secondi con Windows Defender attivo.

Sulla stessa macchina con XP senza Windows Defender i tempi sono stati di 2 minuti e 20 secondi (ovviamente stesso identico risultato che sotto Vista in quanto quello che conta durante la compressione e' unicamente la potenza di calcolo della CPU).

Infine ho provato dopo aver installato su XP Windows Defender... provate a indovinare... 2 minuti e... suspense... e 52 secondi!

Quindi quello che posso concludere e' che senza Windows Defender, 7zip su XP e Vista gira esattamente negli stessi tempi, mentre in caso di presenza di Windows Defender su XP le prestazioni sono inferiori che su Vista (evidentemente Windows Defender e' stato ottimizzato per Vista e non per XP).

L'articolo e' tutto costellato di errori grossolani come quello evidenziato, ad esempio affermano che Vista faccia girare i giochi piu' lentamente di XP quando invece l'unico fattore che ha senso prendere in considerazione per i giochi e' la qualita' del driver della scheda video, e infatti oggi che i driver delle schede video sono finalmente stati messi a punto non si notano certo differenze nel frame rate tra XP e Vista (e come detto e ridetto vorrei anche vedere come il sistema operativo potrebbe in qualche modo rallentare la GPU!).

Tra le conclusioni a cui arriva l'articolo questa e' veramente da incorniciare come perla di "saggezza":

Se avete bisogno di un computer che concluda un gran numero di codifiche o rendering nel minor tempo possibile, vi conviene restare con XP

alla faccia di ogni buon senso informatico, visto che le prestazioni in rendering sono strettamente legate all'hardware e non certo al sistema operativo.

Poi oltre ad aver commesso innumerevoli errori nella predisposizione dei test, si sono completamente dimenticati di fare il confronto tra quegli aspetti che invece possono essere condizionati pesantemente dal sistema operativo.

Ad esempio non hanno confrontato le prestazioni sotto stress, quando cioe' il PC e' utilizzato intensamente da piu' applicazioni e il sistema operativo ha un ruolo importante per condividere tra i vari processi le risorse a disposizione.
Non hanno valutato se lo stack TCP/IP e' cambiato e se offre prestazioni diverse, non hanno confrontato la gestione del traffico di rete o la capacita' del sistema di rimanere utilizzabile quando un'applicazione CPU intensive e' in eseguzione etc.

Sostanzialmente i risultati dei test che hanno svolto non danno alcuna informazione utile a capire cosa c'e' di nuovo in Vista rispetto a XP, ne' in bene ne' in male.
Di tutto l'articolo l'unica cosa che si ricava e' che a gennaio del 2007 i driver per le schede video non erano ancora ottimizzati, per il resto e' solo una raccolta di numeri senza molto senso.

[Aggiornamento: gia' a Settembre i driver video offrivano prestazioni assolutamente identiche a quelle dei driver di XP, come dimostrato da questi confronti (uno, due e pagine successive). C'e' da notare solo che per le configurazioni con due schede in alcuni casi le performance sotto Vista sono state inferiori, ma anche qui si tratta solo di ottimizzazione dei driver.]

Ma non mi stupisce questo tipo di atteggiamento mentale dei giornalisti verso un prodotto che veniva preceduto dalla sua "fama" di prodotto mal riuscito prima ancora di essere realmente messo alla prova dei fatti. In fondo il giornalista non ha fatto altro che cercare delle conferme a delle tesi precostituite e non ha fatto alcuno sforzo per confrontare due prodotti a parita' di condizioni, dimenticandosi poi del tutto di testare le vere funzionalita' del sistema operativo temendo forse di trovare dati che avrebbero contraddetto la sua posizione di partenza.

10 commenti:

  1. però allora anche per te si possono "ottimizzare" (e quindi "velocizzare") dei programmi (windows defender) per un s.o. piuttosto che per un altro.

    RispondiElimina
  2. Certo, ma e' un processo diametralmente opposto a quello in discussione nell'articolo citato, nel quale si vuole valutare se un programma scritto per XP gira piu' o meno velocemente su Vista.

    Ottimizzare un programma per un certo sistema operativo significa ricompilarlo apportandovi delle modifiche in modo da sfruttare delle caratteristiche peculiari del sistema stesso.

    Non e' il sistema che fa girare il programma piu' velocemente, e' il programma che sfrutta delle risorse messegli a disposizione per girare meglio.
    La differenza e' sostanziale.

    RispondiElimina
  3. In generale sono in accordo con quanto riportato in questo articolo, tuttavia è inutile negare che ci siano alcuni problemi prestazionali in alcuni ambiti.
    Per esempio nell'ambito videoludico i problemi (che in realtà non sono problemi) non sono stati risolti ed IMHO non verranno mai risolti. Questo perché il caricamento del driver video in user space (piuttosto che in kernel space come accadeva con XP) comporta di per se un rallentamento. Anche ottimizzando i driver per Vista a livello di quelli per XP si otterrebbero, a parità di hardware, prestazioni inferiori.
    Lo stesso discorso vale per le applicazioni di modelling che si basano su OpenGL visto che l'implementazione di OpenGL é molto cambiata e grava molto di più sui driver video.

    RispondiElimina
  4. quindi l'effetto è reale, ma il "colpevole" è il software che non è ottimizzato per quel dato s.o

    RispondiElimina
  5. @sirus,
    il fatto che il sistema grafico sia in user space non c'entra niente con le prestazioni. L'overhead è trascurabile.

    RispondiElimina
  6. Concordo con findus.
    Quello che e' CPU-intensive e' il context switch tra user mode e kernel mode, non l'eseguzione in se' in user mode.
    Inoltre il fatto che parte del driver sia in user mode non ha alcuna rilevanza per la GPU, quella esegue nello stesso identico modo le istruzioni inviatele.
    Se un test mi dimostra che il modello del driver di Vista fa perdere un frame ogni sessanta posso anche crederci, se mi si viene a dire che ha un impatto maggiore tipo un degrado del 10% non ci credo.
    In passato, con l'hardware meno performante, avere tutto il device driver in kernel mode faceva la differenza, ma con le prestazioni attuali il context switch per quanto costoso ha un'incidenza meno rilevante.
    Le prestazioni deludenti misurate sono interamente imputabili alla qualita' del driver, non all'architettura in se' che comunque non e' uno user mode "normale", ovvero lo scheduler ha un trattamento di favore per il device driver video, quindi non e' che si ritrova a "competere" con gli altri thread alla pari correndo il rischio appunto di avere prestazioni scadenti.

    RispondiElimina
  7. Ovviamente non è l'esecuzione in user space ad essere più lenta che l'esecuzione in kernel space.
    E' lo switch tra le modalità ad introdurre il rallentamento. E se per pochi switch l'overhead è trascurabile per switch ripetuti la cosa cambia notevolmente.
    Sicuramente le prestazioni deludenti che abbiamo riscontrato tutti agli inizi erano del tutto causate dai driver video, tuttavia nonostante i driver siano migliorati moltissimi non raggiungiamo comunque lo stesso livello prestazionale e secondo me non lo raggiungeremo mai.
    Per quanto mi riguarda il problema non si pone dato che non utilizzo il PC per giocare, preferisco avere qualche qualche garanzia in più in termini di stabilità...

    RispondiElimina
  8. Sirus, non so che dati hai tu, ma gia' a settembre la situazione era questa:
    http://www.firingsquad.com/hardware/amd_nvidia_windows_vista_driver_performance_update/page3.asp
    e oggi di certo le cose non sono peggiorate, come ho detto, se mi parli di degrado di prestazioni nell'ordine del 2% ci puo' stare, ma oltre e' solo colpa del driver.
    Comunque per driver scritti bene come vedi non c'e' alcuna differenza apprezzabile nelle prestazioni.

    RispondiElimina
  9. ho aggiornato il post mettendo, verso la fine, il link al confronto di settembre per quanto riguarda le prestazioni dei driver video ;-)

    RispondiElimina
  10. I miei dati si basano principalmente su quello che ho riscontrato sui 2 sistemi che ho potuto provare in modo approfondito con Vista.
    Il primo dispone di una vecchia GeForce 5600 Ultra che effettivamente non dispone di driver aggiornati da moltissimo tempo (diciamo 8 mesi) in cui la perdita prestazionle nel passaggio da XP a Vista è stata veramente netta (intorno al 30 %), il secondo dispone di una una Radeon X700 e con gli ultimi driver che ho provato (Luglio) il degrado prestazionale era nell'ordine del 5 % oltre non mi sono spinto.

    Ad ogni modo, un degrado simile, dal mio punto di vista sarebbe giustificabile da un driver video caricato in user space quindi non mi lamento di quanto ho ottenuto. Se poi la situazione è migliorata ulteriormente tanto di guadagnato.

    Anche se la perdita di prestazioni fosse del 10 % non mi sognerei mai di tornare ad XP sulle macchine in cui ora ho Vista installato.

    RispondiElimina