Programmi per valutare le prestazioni di un computer

Programmi per valutare le prestazioni di un computer

Un utente di calcolatori (anche computer) che usa gli stessi programmi ogni giorno potrebbe essere il candidato perfetto per valutare le prestazioni di un nuovo calcolatore: infatti, per valutare un nuovo sistema, egli dovrebbe semplicemente confrontare il tempo di esecuzione del suo abituale carico di lavoro (workload), ossia appunto dell’insieme di programmi e di comandi al sistema operativo che usa abitualmente. Il problema è che difficilmente si trovano utenti che una tale caratteristica di regolarità per quanto riguarda i programmi utilizzati, per cui bisogna necessariamente far riferimento ad altri metodi per valutare le macchine.

Programmi per valutare le prestazioni di un computer

Esistono allora quattro “livelli” di programmi da potersi usare per confrontare le prestazioni di macchine diverse; li elenchiamo in ordine decrescente dal punto di vista dell’accuratezza delle predizioni che consentono di  ottenere:

  • programmi (reali): pur non sapendo quale frazione del tempo sarà dedicata a questi programmi, il venditore sa comunque che alcuni utenti li useranno per risolvere i propri problemi reali; tipici esempi di programmi reali sono i compilatori per il C, i programmi di composizione testi come TeX oppure alcuni strumenti CAD come Una delle caratteristiche dei programmi reali è quella di avere degli ingressi, delle uscite e delle opzioni che l’utente può selezionare quando tali programmi sono in funzione;
  • kernel (nuclei): sono stati fatti numerosi tentativi per circoscrivere piccoli pezzi chiave (detti appunto kernel) dei programmi reali per valutare le prestazioni dei calcolatori. Chiaramente, gli utenti generalmente non fanno girare programmi kernel sulle proprie macchine, proprio perché questi, a differenza dei programmi reali da cui provengono, sono pensati solo per valutare le prestazioni e non per risolvere problemi reali. I kernel vengono utilizzati al meglio quando si vogliono isolare le prestazioni di alcune caratteristiche specifiche di una macchina, al fine di evidenziare le ragioni delle differenze tra le prestazioni con programmi reali;
  • Toy Benchmark (programmi giocattolo): questi particolari programmi sono tipicamente lunghi dalle 10 alle 100 linee di codice e producono un risultato che l’utente conosce in partenza;
  • Benchmark Sintetici: questi programmi sono “filosoficamente” simili ai kernel, ma hanno la differenza di sforzarsi di accordare la frequenza media degli operandi e delle operazioni di un vasto insieme di programmi. Infatti, i più popolari benchmark sintetici sono il Whetstone ed il Dhrystone. Inoltre, così come i kernel, anche i benchmark sintetici non sono usati dagli utenti proprio perché non calcolano nulla di utile per i loro problemi reali. Tra l’altro, i benchmark sintetici sono ancora più astratti rispetto ai kernel, dato che, mentre i kernel hanno un codice comunque estratto dai programmi reali, il codice sintetico viene creato artificialmente per soddisfare il profilo medio di esecuzione di cui si diceva prima.

Quando si ha a disposizione un programma per la valutazione delle prestazioni di un calcolatore e non si è sicuri del modo con cui classificarlo, il primo controllo da effettuare consiste nel vedere se esiste un qualche ingresso al programma e/o se sono previsti dei risultati in uscita. Ad esempio, un programma  senza  ingresso calcola lo stesso risultato ogni volta che viene invocato, mentre invece alcuni programmi (tipicamente le applicazioni per l’analisi numerica e la simulazione) usano quantità trascurabili di dati di ingresso. In generale, ogni programma reale  ha almeno un ingresso.

Dato che i produttori di calcolatori hanno maggiore o minore successo a seconda del rapporto prezzo/prestazioni dei loro prodotti in relazione a quello degli altri concorrenti presenti sul mercato, sono disponibili enormi risorse per migliorare le prestazioni dei programmi più diffusi per la  valutazione.

Abbiamo osservato più volte che i programmi reali possono essere teoricamente usati per valutare le prestazioni dei calcolatori. Tra l’altro, se l’industria usasse tali programmi, quanto meno spenderebbe le proprie risorse per migliorare le prestazioni di ciò che realmente serve agli utenti. Viene allora da chiedersi come mai non tutti usano i programmi reali per misurare le prestazioni. Possiamo citare le seguenti motivazioni:

  • i kernel ed i toy benchmark appaiono molto utili nella fasi iniziali di un progetto, in quanto sono abbastanza piccoli da essere simulati facilmente, al limite anche a Essi risultano particolarmente invitanti quando si inventa una nuova macchina, dato che i compilatori potrebbero non essere subito disponibili. Inoltre, i piccoli benchmark, a differenza dei grandi programmi, possono essere standardizzati con maggiore facilità ed infatti si trovano in letteratura molti più risultati pubblicati per i piccoli benchmark che non per quelli grandi;
  • a fronte di questi pregi, almeno al giorno d’oggi non esiste più una valida motivazione razionale che giustifichi l’uso dei benchmark e dei kernel per valutare come lavorano i sistemi di calcolo: in passato, i linguaggi di programmazione non erano uniformi in macchine diverse e ogni macchina aveva il sistema operativo, per cui il trasporto dei programmi reali appariva particolarmente scomodo e quindi venivano preferiti i benchmark e/o i kernel; al giorno d’oggi, invece, la diffusione di sistemi operativi standard (come UNIX e DOS), la presenza di software liberamente distribuito dalle università e da altri enti, oltre alla disponibilità di calcolatori moderni e veloci, hanno rimosso molti dei vecchi ostacoli, per cui l’uso di programmi reali è diventato, oltre che opportuno al fine di ottenere risultati corretti, anche molto semplice.

 

Precedente Differenza tra latenza e throughput in informatica Successivo Il pipelining in un calcolatore elettronico e i suoi vantaggi

Lascia un commento

*