martedì 16 dicembre 2008

Misurare le prestazioni di un sistema operativo.

Questo articolo del blog ufficiale del team di Windows 7 e' il perfetto viatico per iniziare a capire l'argomento del benchmarking di un sistema operativo.

Misurare qualcosa e' un processo molto piu' complesso di quello che si possa pensare. Nella vita quotidiana siamo abituati a usare metodi di misura tra i piu' disparati. Misuriamo il nostro peso corporeo, misuriamo gli anni trascorsi da quando siamo nati, misuriamo il costo delle cose, misuriamo le prestazioni dei mezzi di trasporto, misuriamo aspetti fisici e non delle persone.

Sembra che si abbia a disposizione un "metro" per ogni cosa che vogliamo misurare. Ma se per alcune cose questo "metro" e' facilmente identificabile e utilizzabile, per molte altre cose non e' affatto cosi' scontato individuare cosa usare come parametro di confronto. Le misurazioni infatti si fanno per confronto. Non esiste il concetto assoluto di misura, ma solo relativo a qualcos'altro.

E cosi' finiamo ad esempio a voler misurare le prestazioni di un sistema operativo rispetto ad un altro, ma prima di poterlo fare forse bisognerebbe capire cosa andremo a misurare e soprattutto con che "metro" effettueremo queste misurazioni.

Nonostante la cosa non sia cosi' banale viene data per scontata da molti e si arriva al punto che c'e' chi pensa di poter misurare un intero sistema operativo utilizzando un singolo "indice di velocita'".

Persino un'auto (che e' infinitamente meno complessa di un sistema operativo dal punto di vista delle funzionalita' offerte) non si riesce a misurare con un solo indice. La potenza? La velocita' massima? Il tempo sul giro? Una media ponderata dei valori precedenti? Dovendo prendere una sola misurazione quale prendiamo? Qualunque si scelga si finisce per dare un'informazione molto limitata dell'auto e sostanzialmente poco utile per non dire del tutto inutile dato che nel momento in cui si andra' a scegliere un'auto da acquistare bisognera' avere a propria disposizione ben piu' di un singolo parametro.

La stessa cosa e' valida per la maggior parte delle cose che misuriamo. Se vi dico che Paolo pesa 80 Kg. e Marco ne pesa 85 Kg. e aggiungo che uno dei due e' grasso, sapreste individuare quale dei due senza sapere quanto sono alti? Di per se' il peso preso singolarmente non e' sufficiente a fare una qualsiasi considerazione degna di nota.

I sistemi operativi forniscono centinaia di funzionalita' diverse tra loro e spesso non sono neppure funzionalita' utilizzabili direttamente dall'utente, ma presenti solo per poter essere utilizzate da programmi che ne fanno uso.
La valutazione di un OS richiedera' quindi di individuare almeno delle categorie di funzioni da misurare, non si puo' certo pensare che si possa dare una valutazione complessiva riducendo il tutto a un indice complessivo sia anche esso il risultato della somma di N indici diversi.
Questo perche' sapere la somma non dice nulla sul valore individuale dei singoli indici che la compongono.

Quindi abbiamo stabilito che misurare un sistema operativo e' una operazione complessa che richiede molti indici, ma non abbiamo ancora una precisa idea di come fare queste misurazioni.

Ci sono due approcci molto diversi:
- eseguire manualmente una serie di operazioni cronometrandone la durata.
- eseguire dei programmi che a loro volta eseguono in modo automatico una serie di operazioni e ne misurano la durata.

Il primo metodo e' quello che piu' si avvicina all'esperienza dell'utente.
Il secondo invece e' completamente diverso da quello che fa l'utente ma puo' sembrare a prima vista il metodo piu' rigoroso per effettuare una misurazione.

In realta' le cose sono ben piu' complesse di cosi'.
Il problema cardine della "misurazione" e' di non interferire col sistema che si sta misurando evitando di alterarne il risultato o per lo meno di interferire il meno possibile.

E qua gia' bisognerebbe iniziare a dubitare dei test che utilizzano script di automazione in quanto l'eseguzione dello script inevitabilmente interferisce col sistema.

Prendiamo l'esempio gia' citato di OfficeBench che sali' agli onori della cronaca quando venne usato per sentenziare che Vista era il 40% piu' lento di XP. Si tratta di una serie di script che automatizzano operazioni di Microsoft Office cercando di simulare l'attivita' quotidiana di un ipotetico utente.

Balza subito all'occhio che c'e' un errore di fondo in questo tipo di misurazione. Gli autori del tool di testing affermano che il tool e' in grado di misurare diverse versioni di Windows e di Office. Peccato pero' che per definizione stiano usando lo stesso metro per misurare cose diverse. Office 2007 e' profondamente diverso da Office 2003, ad esempio i comandi non sono piu' organizzati in menu' e sotto menu', ma sono disposti nel famoso Ribbon.
Ora un test di automazione non tiene assolutamente in conto il fattore accessibilita' di un comando. L'utente che vuole fare una stampa di un documento dovra' andare a cercare il comando e quindi eseguirlo, e a seconda della versione di Office questa operazione puo' richiedere piu' o meno tempo a seconda di dove e' posizionato il comando e di quanti click l'utente debba fare.
Un tool automatico sa gia' dove andare e puo' eseguire la sequenza di operazioni ad una velocita' che e' del tutto diversa da quella dell'utente in quanto non ha bisogno di attendere il feedback visivo tra un click e il successivo.
Office 2007 potrebbe anche avere delle prestazioni di eseguzione del singolo comando piu' lento di Office 2003 ma potrebbe avere una UI che rende piu' rapido per l'utente identificare cosa e dove cliccare.
Il tool potrebbe sentenziare che il comando di stampa e' piu' rapido su Office 2003 con XP, ma poi nella realta' l'utente potrebbe impiegare piu' tempo rispetto a Office 2007 con Vista.

E questo tipo di concetto si applica sostanzialmente a qualunque altro aspetto che riguarda i tool che automatizzano l'interfaccia utente attraverso script.

C'e' poi un altro aspetto, il tool OfficeBench usa OleDB per creare istanze degli oggetti di Office e quindi eseguirne comandi. Ma nella realta' l'utente non fa mai questo tipo di operazione, non apre Word invocando automatismi di OleDB, lo fa avviando l'applicativo in modo interattivo e via dicendo.

Quindi ammesso anche che le misurazioni e i confronti tra XP e Vista sia stati effettuati limitando al massimo l'interferenza col sistema, il dato finale che afferma che Vista e' piu' lento di XP del 40% che cosa comporta per l'utente finale?
Che le applicazioni si avviano il 40% piu' lentamente sotto Vista? No.
Che eseguire singoli task richieda il 40% di tempo in piu'? No.
Che l'impiegato che usa XP finisca il suo lavoro alle 5 del pomeriggio e che l'impiegato che deve fare le stesse identiche cose usando Vista finisca qualche ora dopo? No.

Ma allora per l'utente cosa significa sapere che Vista e' il 40% piu' lento di XP? Sostanzialmente nulla.
Quello che e' stato misurato non e' quanto Vista sia piu' lento di XP ma solo quanto un insieme di script e di comandi automatizzati risulti piu' lento su Vista rispetto a XP, ma nulla ci dice su cosa o come o perche' risulti piu' lento su Vista. Quindi alla fine non hanno misurato le performance del sistema operativo, ma solo quelle del loro programma.

Se qualcuno dubita del fatto che non sia stato misurato il sistema operativo penso che basti questa considerazione per convincerlo: su Vista c'e' Windows Defender attivo di default, su XP no. Se eseguo un tool che crea file automaticamente per poi effettuare dei test di apertura salvataggio degli stessi attraverso Office comandato via OleDB molto probabilmente Windows Defender interviene pesantemente in quanto individua un eseguibile che sta effettuando operazioni potenzialmente pericolose, mentre quando le stesse operazioni sono effettuate manualmente dall'utente il fattore Windows Defender incide percentualmente in modo meno significativo per non dire trascurabile.

Quindi c'e' qualcosa che si puo' misurare e confrontare senza cadere in questi errori?
Si certamente, ma la metrica e' piuttosto complessa.
Prendiamo ad esempio il tempo impiegato per effettuare il boot del sistema.
Questo valore e' condizionato da molti fattori, sia legati all'hardware che al software. Cambiera' quindi a seconda del tipo di CPU e della quantita' di ram, dal numero di periferiche presenti, da quanti applicativi/servizi sono stati installati e cosi' via. Puo' benissmo capitare che un sistema operativo che risulta piu' veloce all'avvio con una certa configurazione, non lo sia piu' su un'altra.

Questo e' ad esempio dimostrato in modo macroscopico con i test sulle prestazioni delle schede video. Li' almeno si usano, oltre ai programi di benchmark, anche i giochi che poi l'utente andra' ad usare. E ormai chiunque segua questo tipo di confronti sa benissimo che una scheda video che sulla carta e' molto piu' performante di un'altra puo' poi nella realta' produrre meno frame per second di una meno performante a seconda del gioco o della CPU o della versione del driver e via dicendo.

Se non e' possibile usare un singolo indice per identificare le prestazioni delle schede video (che sono solo una parte del computer) c'e' davvero qualcuno che puo' seriamente sostenere che sia possibile dare una valutazione seria di un sistema operativo usando un tool che produce un singolo numero?

Tutto questo lo dico in previsione degli articoli sulle prestazioni di Windows 7 che gia' stanno iniziando ad uscire e che diventeranno una vera e propria piaga mondiale quando verra' rilasciata la beta ufficiale ;-)

6 commenti:

  1. Grande post Enrico.
    GRAZIE!!!!!!

    RispondiElimina
  2. Articolo molto interessante.
    Bravo ;)

    RispondiElimina
  3. @Enrico
    L'articolo è molto interessante e condivido quasi tutto ciò che vi è scritto.
    Per effettuare valutazioni o aiutarmi in alcune decisioni uso un foglio di calcolo in cui indico qualità che interessano, risultato ottenuto (espresso di solito con un undice) e peso, cioè l'importanza che quelle determinata qualità ha nel contesto generale.
    variando il peso, posso simulare l'importanza di ciascun fattore in diversi scenari.
    Esempio:
    per un giocatore, è molto importante che il computer abbia eccellenti prestazioni nella grafica 3D; sarà un po' meno interessato alla velocità del boot.
    Alla fine, contrariamente a quanto affermi, volendo potrei esprimere l'intera valutazione con un unico indice complessivo che, in sostanza, tiene conto di tutto.
    E' un po' come nel decathlon: chi vince magari non è il più bravo in tutte le discipline ma è quello che, tutto sommato, se la cava meglio in tutte.
    Il punteggio totale, pur non dicendo nulla relativamente alle prestazioni in una singola disciplina, indica con precisione l'atleta migliore.

    Ad un certo punto, poi, affermi una cosa che trovo stonare con il resto dell'articolo:
    Office 2007 e' profondamente diverso da Office 2003, ad esempio i comandi non sono piu' organizzati in menu' e sotto menu', ma sono disposti nel famoso Ribbon.
    Ora un test di automazione non tiene assolutamente in conto il fattore accessibilita' di un comando.


    Mi chiedo cosa importi come vengono effettuate le operazioni di Office se quel che si testa sono le prestazioni del sistema operativo.
    Avrei capito, non senza ricorrere a forzature, se il ragionamento l'avessi fatto, ad esempio, sulla gestione dei files (è più veloce un s/o che indicizza ottimamente i file e li trova velocemente nelle ricerche, o un sistema operativo dotato di un eccellente file manager, che è più lento in quell'operazione, ma fornisce strumenti in grado di organizzare filtrarmeglio il contenuto del disco rendendo meno necessarie le ricerche?)

    Secondo me se parli di prestazioni intendendo ciò che di solito si misura con vari benchmarck, cioè le proprietà velocistiche pure del sistema operativo, l'usabilità, l'accessibilità non vanno considerate.
    Se invece per prestazioni si intende la capacità di soddisfare le richieste dell'utente nel minor tempo possibile, allora il modo con cui una cosa è ottenibile ha importanza.
    (che mi frega se le prestazioni grafiche dell'interfaccia sono spettacolari se per fare l'operazione X mi ci vogliono 5 click in più?)

    Ma allora, secondo questo nuovo approccio valutativo, diventano importanti anche cose come superfetch che è in grado di migliorare le prestazioni del sistema, almeno per come le percepisce l'utente.

    Quello che e' stato misurato non e' quanto Vista sia piu' lento di XP ma solo quanto un insieme di script e di comandi automatizzati risulti piu' lento su Vista rispetto a XP, ma nulla ci dice su cosa o come o perche' risulti piu' lento su Vista.
    Non capisco.
    Se le operazioni eseguite dallo stupidissimo script sono sempre quelle, i software utilizzati per il test, sempre quelli, perchè il tempo di esecuzione non dovrebbe essere significativo?
    A mio parere, l'unica ragione per considerare test simili non indicativi della velocità del sistema operativo, si ha quando il test non è in grado di sfruttare funzionalità e prerogative presenti solo in uno dei due sistemi testati.
    infine, sei sicuro che alla maggior parte degli utenti interessi il perchè un sistema operativo è più veloce di un altro?
    Io credo di no.
    Al gamer interessa sapere principalmente qual'è la scheda grafica più performante con i suoi videogames preferiti, e non il perchè ottiene prestazioni superiori di un'altra. Non ti pare?

    I test, come giustamente fai notare, devono essere effettuati a parità di consdizioni.
    Defender attivo su Vista impone la preventiva installazione di un antispyware anche su Xp o la disabilitazione di Defender prima dell'esecuzione del test.

    In sostanza, concordo con le argomentazioni dell'articolo, ma contrariamente a te, se il test è ben fatto (come hai ben spiegato), a mio parere, è anche possibile alla fine esprimere un giudizio con un unico indice, se per ottenerlo si considerano tutti i vari fattori in gioco.

    RispondiElimina
  4. Il problema dei pesi nel calcolo dell'indice unico e' l'arbitrarieta' degli stessi, e quindi si torna al problema iniziale, ovvero che la valutazione di un intero sistema con un unico indice e' ben poco significativa.

    Ho tirato in ballo Office perche' il test OfficeBench a cui facevo riferimento (quello usato per affermare che XP e' il 40% piu' veloce di Vista) usa appunto una serie di script per automatizzare operazioni di Office.
    Non ha alcun senso misurare il tempo impiegato da uno script per eseguire dei comandi di Office e poi usare quel tempo per affermare che un OS e' piu' performante di un altro.
    Mettiamo che Office 2003 su XP risponda ad un comando automatizzato in 50 ms, e che la stessa versione di Office su Vista risponda in 100 ms, questo e' un valore che finisce per incidere sul calcolo complessivo del test, eppure non ha alcun significato perche' per l'utente non cambia assolutamente nulla dato che l'utente non invia un comando automatizzato per aprire un menu' ma fa un semplice click sul menu' stesso e in quel caso potrebbe benissimo essere che Office su Vista ci metta esattamente lo stesso tempo che su XP.
    E' fuorviante prendere un'applicazione che viene usata in modo interattivo e comandarla via OleDB per dimostrare che XP sia piu' performante di Vista.
    Il problema piu' generale e' che controntando le prestazioni di due OS diversi si misurano solo le funzionalita' in comnue, quindi si vede solo una fetta della torta.
    Quindi l'affermazione stessa che XP e' piu' veloce di Vista e' errata in partenza perche' mai si potranno misurare funzionalita' come quella offerta dal Search integrato che alla fine fanno risparmiare all'utente ben di piu' di qualunque operazione che e' in comune tra i due OS e che puo' risultare piu' lenta di qualche millisecondo su un sistema rispetto all'altro.

    RispondiElimina
  5. @Enrico

    Il problema dei pesi nel calcolo dell'indice unico e' l'arbitrarieta' degli stessi, e quindi si torna al problema iniziale, ovvero che la valutazione di un intero sistema con un unico indice e' ben poco significativa.



    Hai ragione.
    Però occorre puntualizzare che è poco rilevante in generale, ma molto per chi quei pesi li determina.
    Puoi prendere il risutato di un benchmark, decidere che importanza ha per te quel risulatato e sulla base delle tue preferenze ottenere un indice ben più significativo (per te) di quello espresso tenendo conto dei soli risultati del banchmark.

    Ma alla base ci sono i risultati del benchmark.
    Mettiamo che Office 2003 su XP risponda ad un comando automatizzato in 50 ms, e che la stessa versione di Office su Vista risponda in 100 ms...
    A mio parere, se la stessa operazione, svolta dalla stessa applicazione, usando il medesimo script di automazione, impiega più o meno tempo sulla stessa macchina cambiando solo il s/o, significa che in quella operazione il sistema operativo più lento è...più lento ;-).
    Anzi, a mio parere è il modo più corretto di svolgere questo tipo di benchmark, che misurano la velocità pura.
    Sta poi a chi realizza questi benchmark far eseguire agli script d'automazione operazioni che abbiano senso e poi all'utente (o a chi determina il peso di quel risultato) stabilirne l'importnza nel quadro generale.
    Ma continuo a pensare che quello sia un indice di velocità pura.
    Faccio un esempio:
    prendi due auto e le fai sfrecciare per un Km alla massima velocità sulla stessa pista pianeggiante; rilevi i tempi di percorrenza.
    Non c'è dubbio che la macchina che risulta migliore in questo test è la più veloce.
    Ma le strade di tutti i giorni non sono una pista pianeggiante e perfettamente asfaltata.
    poerciò è possibile che prendendo le stesse due auto e facendogli percorrere un percorso misto, la classifica si ribalti perchè entrano in gioco altri fattori: coppia, potenza, autonomia e consumi (più consumi, più devi fermarti a fare il pieno) ecc.
    Ma il test iniziale dice una verità inequivocabile: una delle due macchine, in determinate condizioni è più veloce.


    Ho capito e condivido il senso del tuo articolo, tranne quando ritieni sensa senso il test con officeBench: dire senza senso è un conto, dire che fornisce un risultato molto parziale e che da solo dice ben poco è un altro.

    RispondiElimina
  6. E se io ti dicessi che l'apertura piu' lenta del menu' e' dovuta al fatto che c'e' attiva l'animazione degli stessi che volendo si puo' disabilitare?
    Vedi come si sta poco a mandare all'aria i risultati di quel test?

    Ribadisco che per me i risultati di OfficeBench sono del tutto privi di senso, per il fatto che con quei dati in mano non sono in grado di capire in alcun modo cosa determini la differenza di prestazioni.
    Se ti dicessi che ho fatto dei test e ho scoperto che e' lo script engine di Vista ad essere lento e non OleDB o le operazioni di Office? Saresti in grado di controbattere a questa mia affermazione avendo in mano solamente i risultati di OfficeBench?
    Chiaramente no, perche' quel test e' completamente errato sin dalle fondamenta e non si sa assolutamente cosa stia misurando.

    RispondiElimina