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
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
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
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.
Principi di benchmarking
Ci sono sette caratteristiche fondamentali per i benchmark. 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
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
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.
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
Standard di settore (verificato e verificabile)
Business Applications Performance Corporation (BAPCo)
Semantic Publishing Benchmark (SPB): un benchmark LDBC ispirato all'industria dei media / editoria per testare le prestazioni dei motori RDF
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
Standard Performance Evaluation Corporation (SPEC), in particolare SPECint e SPECfp
TPC-A: misura le prestazioni in ambienti di database ad alta intensità di aggiornamento tipici delle applicazioni di elaborazione delle transazioni in linea (OLTP)
TPC-C: un benchmark di elaborazione delle transazioni in linea (OLTP)
TPC-H: un benchmark di supporto decisionale
Benchmark open source
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.
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): framework 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
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
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
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
↑Andreas Ehliar e Dake Liu, Benchmarking network processors (PDF). URL consultato il 15 febbraio 2021 (archiviato dall'url originale il 3 novembre 2013).
↑Transaction Processing Performance Council, TPC-A, su tpc.org, Transaction Processing Performance Council. URL consultato il 2 luglio 2018 (archiviato dall'url originale 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 originale 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 originale il 18 dicembre 2008).