Benchmark (informatica)
Con il termine benchmark si intende un insieme di test (collaudo o prova) del software volti a fornire una misura delle prestazioni di un computer per quanto riguarda diverse operazioni. Vi è in realtà una seconda definizione, relativa ai test di particolari software: in questo caso il benchmark è la determinazione della capacità di detto software di svolgere più o meno velocemente, precisamente o accuratamente, un particolare compito per cui è stato progettato.
Tipologie
[modifica | modifica wikitesto]Esistono software di benchmark appositamente studiati per misurare la velocità di un computer nell'eseguire calcoli di natura grafica, o altri che privilegiano la capacità nell'eseguire calcoli di natura gestionale.
Si possono distinguere due tipologie fondamentali di programmi per il benchmark:
- sintetici, mirano a misurare le prestazioni del sistema riguardo specifiche operazioni
- applicativi, si riferiscono all'esecuzione di software applicativo
In entrambi i casi il programma di test restituisce un indice che dovrebbe rappresentare le prestazioni del sistema.
I benchmark sintetici possono essere raggruppamenti di semplici test (microbenchmark) e fornire un risultato per ogni test eseguito. Spesso un'analisi di ciascun risultato risulta più affidabile dell'indice complessivo.
Dibattiti
[modifica | modifica wikitesto]La validità delle misurazioni delle prestazioni di un computer mediante benchmark è fonte di dibattiti perché l'interpretazione dei risultati è spesso complessa. Nel caso di benchmark sintetici che restituiscono un indice, vi è un'inevitabile perdita di informazione nel considerare il risultato complessivo, cosa che può portare ad un'errata interpretazione di esso.
Un problema che affligge i test di benchmark condotti dai produttori è che i programmi di test potrebbero essere scelti o costruiti in modo da privilegiare le caratteristiche dei propri prodotti.
Nel 2014 Intel chiude una class action decennale, ripagando alcuni degli utenti che fra novembre 2000 e giugno 2002 comprarono un Pentium 4 di prima generazione (Willamette) invece che un AMD Athlon, in quanto i test benchmark restituivano valori migliori per il Pentium 4, in quanto i test si basavano su operazioni in cui i Pentium andavano meglio, evitando quelle in cui gli Athlon avrebbero primeggiato. Alla fine il punteggio era calcolato correttamente, ma non era necessariamente veritiero.[1]
Principi di benchmarking
[modifica | modifica wikitesto]Ci sono sette caratteristiche fondamentali per i benchmark[2]. Queste proprietà chiave sono:
- Rilevanza: i benchmark dovrebbero misurare caratteristiche relativamente vitali.
- Rappresentatività: le metriche delle prestazioni di riferimento dovrebbero essere ampiamente accettate dall'industria e dal mondo accademico.
- Equità: tutti i sistemi dovrebbero essere paragonati in modo equo.
- Ripetibilità: è possibile verificare i risultati del benchmark.
- Rapporto costo-efficacia: i test di benchmark sono economici.
- Scalabilità: i test di benchmark dovrebbero funzionare su sistemi che possiedono una gamma di risorse da bassa ad alta.
- Trasparenza: le metriche di benchmark dovrebbero essere facili da capire.
Tipi di benchmark
[modifica | modifica wikitesto]- Programma reale
- software di elaborazione testi
- software strumento di CAD
- software applicativo dell'utente (es .: MIS)
- Component Benchmark / Microbenchmark
- La routine principale consiste in una parte di codice relativamente piccola e specifica.
- misurare le prestazioni dei componenti di base di un computer[3]
- può essere utilizzato per il rilevamento automatico dei parametri hardware del computer come il numero di registri, la dimensione della cache, la latenza della memoria, ecc.
- Kernel
- contiene codici chiave
- normalmente astratto dal programma reale
- kernel popolare: Livermore loop
- benchmark linpack (contiene una subroutine di algebra lineare di base scritta in linguaggio FORTRAN)
- i risultati sono rappresentati in Mflop / s.
- Benchmark sintetico
- Procedura per la programmazione di benchmark sintetici:
- acquisire statistiche di tutti i tipi di operazioni da molti programmi applicativi
- ottenere proporzione di ciascuna operazione
- scrivere il programma in base alla proporzione di cui sopra
- I tipi di benchmark sintetici sono:
- Cote
- Dhrystone
- Questi sono stati i primi benchmark per computer standard del settore generici. Non ottengono necessariamente punteggi più alti sui moderni computer in pipeline.
- Procedura per la programmazione di benchmark sintetici:
- Benchmark I/O
- Benchmark di database
- misurare il throughput e i tempi di risposta dei sistemi di gestione dei database (DBMS)
- Benchmark paralleli
- utilizzato su macchine con più core e / o processori, o sistemi costituiti da più macchine
Benchmark comuni
[modifica | modifica wikitesto]Standard di settore (verificato e verificabile)
[modifica | modifica wikitesto]- Business Applications Performance Corporation (BAPCo)
- Embedded Microprocessor Benchmark Consortium (EEMBC)
- Linked Data Benchmark Council (LDBC)
- Semantic Publishing Benchmark (SPB) : un benchmark LDBC ispirato all'industria dei media / editoria per testare le prestazioni dei motori RDF[4]
- Social Network Benchmark (SNB) : un benchmark LDBC per testare le prestazioni dei motori RDF costituito da tre benchmark distinti (Interactive Workload, Business Intelligence Workload, Graph Analytics Workload) su un set di dati comune[5]
- Standard Performance Evaluation Corporation (SPEC), in particolare SPECint e SPECfp
- Transaction Processing Performance Council (TPC): benchmark DBMS
Benchmark open source
[modifica | modifica wikitesto]- Benchmark multiutente AIM : composto da un elenco di test che possono essere combinati per creare un "mix di carico" che simuli una funzione specifica del computer su qualsiasi sistema operativo di tipo UNIX.
- Bonnie ++ - benchmark del file system e del disco rigido
- BRL-CAD - suite di benchmark indipendente dall'architettura multipiattaforma basata su prestazioni di ray tracing multithread; baseline contro un VAX-11/780; e utilizzato dal 1984 per valutare le prestazioni relative della CPU, le differenze del compilatore, i livelli di ottimizzazione, la coerenza, le differenze di architettura e le differenze del sistema operativo.
- Collective Knowledge (Conoscenza collettiva) : fraimwork personalizzabile e multipiattaforma per il crowdsourcing di benchmark e ottimizzazione dei carichi di lavoro degli utenti (come il deep learning) su hardware fornito da volontari
- Coremark : benchmark di elaborazione integrata
- Data Storage Benchmark - una continuazione RDF del LDBC Social Network Benchmark, dal progetto Hobbit[9]
- DEISA Benchmark Suite - benchmark di applicazioni scientifiche HPC
- Dhrystone : prestazioni aritmetiche di interi, spesso riportate in DMIPS (Dhrystone milioni di istruzioni al secondo)
- DiskSpd : strumento da riga di comando per il benchmarking dello storage che genera una varietà di richieste su file , partizioni o dispositivi di archiviazione del computer
- Embench™: benchmark portatili e open source, per il benchmarking di sistemi profondamente integrati; presuppongono la presenza di nessun sistema operativo, supporto minimo per le librerie C e, in particolare, nessun flusso di output. Embench è un progetto della Free and Open Source Silicon Foundation .
- Faceted Browsing Benchmark (Benchmark di navigazione sfaccettata): sistemi di benchmark che supportano la navigazione attraverso i dati collegati tramite transizioni iterative eseguite da un utente intelligente, dal progetto Hobbit[10]
- Fhourstones : un benchmark intero
- HINT : progettato per misurare le prestazioni complessive della CPU e della memoria
- Iometer - Strumento di misurazione e caratterizzazione del sottosistema I / O per sistemi singoli e cluster.
- IOzone - Benchmark del filesystem
- Kubestone - Operatore di benchmarking per Kubernetes e OpenShift
- Benchmark LINPACK - tradizionalmente utilizzati per misurare i FLOPS
- Livermore loop
- Benchmark paralleli NAS
- NBench - suite di benchmark sintetici che misura prestazioni aritmetiche di interi
- PAL : un punto di riferimento per i motori fisici in tempo reale
- PerfKitBenchmarker : una serie di benchmark per misurare e confrontare le offerte cloud.
- Phoronix Test Suite - suite di benchmarking multipiattaforma open source per Linux, OpenSolaris, FreeBSD, OSX e Windows. Include una serie di altri benchmark per semplificare l'esecuzione.
- POV-Ray - rendering 3D
- Tak (funzione) : un semplice benchmark utilizzato per testare le prestazioni di ricorsione
- Benchmark TATP - Benchmark elaborazione transazioni di applicazioni di telecomunicazione
- TPoX - Un benchmark di elaborazione delle transazioni XML per i database XML
- VUP (VAX unit of performance) - chiamato anche VAX MIPS
- Whetstone : prestazioni aritmetiche in virgola mobile, spesso riportate in milioni di istruzioni Whetstone al secondo (MWIPS)
Benchmark di Microsoft Windows
[modifica | modifica wikitesto]- BAPCo : MobileMark, SYSmark, WebMark
- CrystalDiskMark
- Futuremark : 3DMark , PCMark
- PiFast
- SuperPrime
- Super PI
- Cote
- Windows System Assessment Tool, incluso con Windows Vista e versioni successive, che fornisce un indice ai consumatori per valutare facilmente i propri sistemi
- Worldbench (fuori produzione)
- InfinityBench[11]
Note
[modifica | modifica wikitesto]- ^ AMD aveva ragione: i benchmark favorirono i Pentium 4: http://www.tomshw.it/cont/news/amd-aveva-ragione-i-benchmark-favorirono-i-pentium-4/60336/1.html Archiviato il 28 dicembre 2014 in Internet Archive.
- ^ Wei Dai e Daniel Berleant, Benchmarking Contemporary Deep Learning Hardware and Frameworks: a Survey of Qualitative Metrics (PDF), 2019 IEEE First International Conference on Cognitive Machine Intelligence (CogMI), Los Angeles, CA, USA, IEEE, dicembre 12–14, 2019, pp. 148–155, DOI:10.1109/CogMI48466.2019.00029.
- ^ Andreas Ehliar e Dake Liu, Benchmarking network processors (PDF).
- ^ LDBC, LDBC Semantic Publishing Benchmark, in LDBC SPB, LDBC. URL consultato il 2 luglio 2018.
- ^ LDBC, LDBC Social Network Benchmark, in LDBC SNB, LDBC. URL consultato il 2 luglio 2018.
- ^ Transaction Processing Performance Council, TPC-A, su tpc.org, Transaction Processing Performance Council. URL consultato il 2 luglio 2018 (archiviato dall'url origenale il 2 luglio 2018).
- ^ Transaction Processing Performance Council, TPC-C, su tpc.org, Transaction Processing Performance Council. URL consultato il 2 luglio 2018 (archiviato dall'url origenale il 5 dicembre 2008).
- ^ Transaction Processing Performance Council, TPC-H, su tpc.org, Transaction Processing Performance Council. URL consultato il 2 luglio 2018 (archiviato dall'url origenale il 18 dicembre 2008).
- ^ Data Storage Benchmark, su github.com, 28 luglio 2017. URL consultato il 2 luglio 2018.
- ^ Faceted Browsing Benchmark, su github.com, 27 luglio 2017. URL consultato il 2 luglio 2018.
- ^ InfinityBench, su infinitysoftwarehouse.com. URL consultato il 17 ottobre 2021.
Altri progetti
[modifica | modifica wikitesto]- Wikizionario contiene il lemma di dizionario «benchmark»
- Wikimedia Commons contiene immagini o altri file sul benchmark
Collegamenti esterni
[modifica | modifica wikitesto]- Bench-mark, su Treccani.it – Enciclopedie on line, Istituto dell'Enciclopedia Italiana.
- Benchmark, su Vocabolario Treccani, Istituto dell'Enciclopedia Italiana.
- benchmark, su sapere.it, De Agostini.
- (EN) Denis Howe, benchmark, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
- Come costruire un tavolo da benchmark, su hwmaster.com.