Benčmark (računarstvo)

U računarstvu, **benčmark** je čin izvršavanja programa, grupe programa, ili drugih operacija, radi procene relativne **performanse** objekta, izlažući ga određenom broju standardnih testova i zadataka. Termin 'benčmark' se takođe uglavnom koristi u svrhe samih razrađeno-dizajniranih samih benčmark programa.

Benčmarkovanje je često povezano sa procenom performansnih karakteristika računarskog hardvera, na primer, performansi procesora pri operacijama sa pokretnim zarezom, ali ima slučajeva kada je tehnika primenljiva i na softver. Softverskim benčmarkovima se, na primer, testiraju kompajleri ili sistemi baza podataka.

Benčmark takođe omogućava poređenje performansi različitih podsistema na različitim čipovima ili sistemskim arhitekturama.

Paketi testova su tip sistema za procenu **korektnosti** softvera.

## Svrha
Kako je arhitektura računara napredovala, postalo je teže upoređivati performanse različitih računarskih sistema jednostavno na osnovu njihove specifikacije. Usled toga, razvijeni su testovi koji su omogućili upoređivanje različitih arhitektura. Na primr, Pentium 4 procesori generalno rade na višem radnom taktu od Athlon XP procesora, što ne znači da oni imaju više računarske moći. Procesor sa sporijim radnim taktom može imati podjednaku performansu kao procesor sa višom radnom frekvencijom. Pogledajte BogoMips i mit megaherca.

Benčmarkovi su dizajnirani da simuliraju specifičan tip opterećenja na komponentu ili sistem. Sintetički benčmarkovi ovo postižu specifično dizajniranim programima koji opterećuju komponentu. Benčmarkovi aplikacija izvršavaju stvarne aplikacije na sistemu. Dok benčmarkovi aplikacija daju mnogo bolji uvid u realne performanse na datom sistemu, sintetički benčmarkovi su korisni za testiranje individualnih komponenti, kao što su tvrdi disk, grafička kartica ili mrežni uređaj.

Benčmarkovi su posebno važni pri dizajnu procesora, jer daju arhitektama mogućnost da procenjuju i prave kompromise pri dizajnu mikroarhitekture. Na primer, ako benčmark izdvoji ključne algoritme aplikacije, on će sadržati performansno-osetiljive aspekte te aplikacije. Izvršavanje ovog manjeg dela aplikacije na ciklus-preciznom simulatoru može pomoći u cilju poboljšanja performanse.

Do 2000, arhitekte računara i procesora su koristile SPEC u ovu svrhu, ali su SPEC-ovi Unix-bazirani benčmarkovi bili prilično dugački i stoga nezgrapni za korišćenje.

Proizvođači računara su poznati po tome da podešavaju svoje sisteme tako da daju znatno više performanse ne benčmarkovima nego što je moguće u praktičnoj primeni. Na primer, tokom 1980ih neki kompajleri su mogli da detektuju specifičnu matematičku operaciju korišćenu u dobro poznatim testovima operacija sa pokretnim zarezom i istu zamene sa bržom matematički ekvivalentnom operacijom. Međutim, takva transformacija je retko bila korisna van benčmark testova sve do polovine 1990ih, kada RISC i VLIW arhitekture naglašavaju važnost kompajlerske tehnologije u vezi sa performansom. Noviji slučajevi ovakvih industrijskih prevara su otkriveni kod proizvođača Android telefona kao što su Samsung i HTC, koji su podešani da detektuju izvršavanje benčmark aplikacija i u tom slučaju naprave poveđanja performansi žrtvovanjem uštede energije, kakva se inače ne rade kod ostalih aplikacija. Benčmarkovi se danas redovno koriste od strane kompajlerskih kompanija radi poboljšanja ne samo svojih benčmark rezultata, već i stvarih performansi aplikacije.

Procesori koji imaju puno izvršnih jedinica — kao što su superskalarni procesori, VLIW procsori, ili rekonfigurabilni procesori — tipično imaju niži radni takt od sekvencijalnih procesora sa jednom ili dve izvršne jedinice kada se prave od tranzistora koji su podjednako brzi. Uprkos tome, procesori sa više izvršnih jedinica često izvode praktične probleme i benčmark testove mnogo brže od navodno bržih procesora sa višim radnim taktom.

S obzirom na veliki broj benčmark testova, proizvođač uglavnom može da nađe bar jedan koji će dati prednost njegovom sistemu u odnosu na neki drugi; drugi sistemi pak mogu biti značajno brži pod nekim drugim benčmark testom.

Proizvođači često iznose rezultate samo onih benčmarkova (ili njihovih aspekata) koji njihov proizod prikazuju u najboljem svetlu. Takođe su poznati po tome što pogrešno predstavljaju važnost benčmarkova, opet radi prikazivanja svog proizvoda u najboljem svetlu. Ova praksa se popularno zove *benč-marketing*.

U idealnom slučaju benčmarkovi bi trebalo da zamenjuju stvarne aplikacije samo ako je aplikacija nedostupna, ili previše komplikovana i skupa za portovanje na specifičan procesor ili računarski sistem. Ukoliko su performanse od kritične važnosti, jedini benčmark koji je bitan je sama aplikacija koja će raditi na tom sistemu.

## Izazovi
Benčmarkovanje nije lako i često zahteva nekoliko uzastopnih izvršavanja istog testa da bi se došlo do realnih i korisnih zaključaka. Interpretacija rezultata benčmark testova je takođe natprosečno tešpka. Ovo je parcijalna lista čestih izazova:
* Proizvođači se trude da optimizuju svoje proizvode za industrijski-standardne benčmarkove. Posebno je laka optimizacija za Norton SysInfo (SI), s obzirom da se uglavnom bazira na brzini višestrukih operacija. Budite jako oprezni pri interpretaciji tih rezultata.
* Neki proizvođači su optuženi za prevaru u benčmarkovima — korišćenjem tehnika koje daju dosta bolje benčmark rezultate, ali čine stvari još gorim kod stvarnih zadataka.
* Dosta benčmarkova se fokusira u potpunosti na računarske performanse, zapostavljajući druge važne osobine računarskog sistema kao što su:
** Kvalitet usluge, za razliku od sirove performanse. Primeri neizmerenih kvaliteta usluge uključuju sigurnost, dostupnost, pouzdanost, integritet izvršenja, servisabilnost, skalabilnost (posebno sposobnost da se brzo i neometano doda ili realocira kapacitet), i tako dalje. Često ima pravih kompromisa među ovim kvalitetima usluge, i svi su važni u poslovnom računarstvu. Transaction Processing Performance Council Benchmark specifikacije delimično regulišu ove probleme definisanjem ACID svojstvenih testova, pravila skaliranja baza podataka, i zahteva nivoa servisa.
** Uglavnom, benčmarkovi ne mere ukupnu cenu vlasništva. Transaction Processing Performance Council Benchmark specifikacije delimično regulišu ovaj problem definisanjem da odnos cena/performanse mora biti izdat pored mere sirovih performansi, korišćenjem pojednostavljene TCO formule. Međutim, cene su po potrebi samo delimične, i proizvođači su poznati po tome da konfigurišu jeftine sisteme specifično (i samo za) benčmarkove. Čak i najsitnije odskakanje od benčmark konfiguracije rezultuje u mnogo višoj ceni u praktičnoj upotrebi.
** Troškovi postrojenja (prostor, električna energija, i hlađenje). Kada se koristi više energije, prenosivi sistem će imati kraći životni vek baterije i zahtevati češće punjenje. Server koji koristi više energije i/ili prostora možda neće pasovati unutar postojećih resursnih ograničenja centra podataka, uključujući ograničenja hlađenja. Ima stvarnih kompromisa s obzirom da većina poluprovodnika zahteva više energije pri većem radnom taktu.
** Kod nekih ugrađenih sistema, gde memorija drži značajnu cenu, veća gustina koda može značajno smanjiti cenu.
* Benčmarkovi proizvođača teže da ignorišu zahteve za razvoj, testiranje, i računarski kapacitet za povraćaj iz otkazivanja uređaja. Proizvođači saopštavaju samo ono što može biti usko neophodno za proizvodni kapacitet da bi cena inicijalnog usvajanja izgledala što niža.
* Benčmarkovi imaju problema da se prilagode na široko distribuirane servere, posebno na one sa velikom osteljivošću na mrežne topologije. Pojava Grid računarstva, posebno komplikuje benčmarkovanje s obzirom da su neka opterećenja "grid optimizovana", dok druga nisu.
* Korisnici mogu imati drugačiju percepciju performansi od onoga na šta benčmarkovi ukazuju. Posebno, korisnici cene predvidljivost — serveri koji uvek zavodoljavaju ili prevazilaze ugovore o nivou servira. Benčmarkovi teže da naglašavaju prosečne rezultate, pre nego maksimalna vremena odziva u najgorem slučaju, ili nisko standardna odstupanja.
* Puno serverskih arhitektura se značajno degradiraju pri visokim (skoro 100%) nivoima opterećenja — "pad sa litice" — i benčmarkovi bi trebalo (ali uglavnom ne) da to uzmu u obzir. Proizvođači teže da izdaju serverske benčmarkove pri kontinualnim opterećenjem od 80% — što nije praktična situacija — i ne beleže šta se dešava celokupnom sistemu kada opterećenje skoči preko tog nivoa.
* Puno benčmarkova se fokusira na jednu aplikaciju, ili čak jednu vrstu aplikacije, do izuzimanja ostalih aplikacija. Većina centara podataka danas ekstenzivno implementira viruelizaciju iz više razloga, i benčmarkovanje idalje pokušava da sustigne takvu praksu gde se višestruke aplikacije i vrste aplikacija konkurentno izvršavaju na konsolidovanim serverima.
* Ima nekoliko (ako ih ima uopšte) visoko kvalitetnih benčmarkova koji mogu meriti performansu serijskog računarstva, posebno višestrukog konkurentnog serijskog i mrežnog računarstva. Serijsko računarstvo teži da bude više fokusirano na predvidljivost ispravnog završetka dugačkih zadataka pre roka, kao što su kraj meseca ili fiskalne godine. Puno ključnih poslovnih procesa su serijski (paketno) orijentisani i verovatno će uvek i biti, kao što je naplata.
* Benčmark institucije često odbacuju ili ne prate osnovne naučne metode. Ovo uključuje, ali nije ograničeno na: malu veličinu uzorka, nedostatak promenljive kontrole, i ograničenu ponovnost rezultata.

## Tipovi benčmarkova
# Pravi programi
#* softver za obradu teksta
#* CAD programi
#* korisnički softver (i.e.: MIS)
# Mikrobenčmark
#* Dizajnirani da mere performanse jako malog i specifičnog dela koda
# Kernel
#* sadrži ključne kodove
#* uglavnom izdvojen od glavnog programa
#* popularni kernel: Livermore petlja
#* linpack benčmark (sadrži osnovnu linearnu algebarsku podrutinu pisanu u FORTRAN jeziku)
#* rezultati su prikazani u broju MFLOPS
# Komponentni benčmark/ mikro-benčmark
#* programi dizajnirani da mere performanse osnovnih računarskih komponenti
#* automatska detekcija parametara računarskog hardvera kao što su broj registara, veličina keša, memorijsko kašnjenje
# Sintetički benčmark
#* Procedura programiranja sintetičkog benčmarka:
#** sakupiti statistiku svih tipova operacija iz puno aplikativnog softvera
#** uzeti proporciju svake operacije
#** napisati program na osnovu gornje proporcije
#* Tipovi sintetičkih benčmarka su:
#** Whetstone
#** Dhrystone
#* To su bili prvi opštenamenski industrijski benčmarkovi. Oni neće nužno dobiti visok rezultat na modernim računarima sa protočnom obradom.
# Ulazno/Izlazni benčmarkovi
# Benčmarkovi baza podataka: za merenje propusnosti i brzine odziva sistema za upravljanje bazama (DBMS)
# Paralelni benčmarkovi: koriste se na mašinama sa više jezgara, procesorima ili sistemima koji se sadrže od više mašina

## Najčešći benčmarkovi
### Industrijski standard (proverljivi)
* Business Applications Performance Corporation (BAPCo)
* Embedded Microprocessor Benchmark Consortium (EEMBC)
* Standard Performance Evaluation Corporation (SPEC), posebno njihov SPECint i SPECfp
* Transaction Processing Performance Council (TPC)
* Coremark: Standard za ugrađene računarske sisteme

### Benčmarkovi otvorenog koda
* DEISA Benchmark Suite: benčmark za naučne aplikacije visokih performansi
* Dhrystone: aritmetičke performanse sa celim brojevima
* Fhourstones: benčmark sa celim brojevima
* HINT: meri ukupnu procesorsku i memorijsku performansu
* Iometer: benčmark za ulazno/izlazni podsistem jednostrukih i klasterovanih sistema
* Linpack, tradiocionalno korišćen za merenje FLOPS
* LAPACK
* Livermore loops
* NAS parallel benchmarks
* NBench: sintetički benčmark paket za merenje aritmetike sa celim brojevima, memorijske operacije, i aritmetiku sa pokretnim zarezom
* PAL: benčmark za mašine sa fizikom u realnom vremenu
* Phoronix Test Suite: višeplatformski benčmark otvorenog koda za Linuks, OpenSolaris, FreeBSD, OSX i Windows. Sadrži nekoliko drugih benčmarkova navedenih na ovoj strani radi jednostavnijeg izvršenja
* POV-Ray: 3D render
* Tak (function): jednostavan benčmark za merenje performansi rekurzije
* TATP Benchmark: Telecommunication Application Transaction Processing benčmark
* TPoX: benčmark za merenje obrade XML transakcije za XML baze podataka
* Whetstone: aritmetika sa pokretnim zarezom
* Geek Benchmark: merenje aritmetike celih brojeva, brojeva sa pokretnim zarezom i memorijske performanse
* Rodinia: benčmark za paralelne arhitekture baziran na akceleratorima
* Parsec : benčmark za sisteme sa paralelno deljenom memorijom
* Splash2 : benčmark za paralelne sisteme
* STREAM: benčmark za merenje propusne moći memorije sistema
* LLCbench : paket za nisu arhitektonsku karakterizaciju, za merenje procesorske i memorijske performanse sistema

### Microsoft Windows benčmarkovi
* BAPCo: MobileMark, SYSmark, WebMark
* Futuremark: 3DMark, PCMark
* Whetstone
* Worldbench (prevaziđen)
* PiFast
* SuperPrime
* Super PI
* Windows System Assessment Tool, ugrađen sa Microsoft Windows Vista i novijim Windows operativnim sistemima, obezbeđuje indeks performansi svih glavnih komponenti računara

### Drugi
* BRL-CAD
* Khornerstone
* iCOMP, Intel comparative microprocessor performance, izdat od strane Intela
* Performance Rating, šema modelovanja korišćena od strane AMD-a i Cyrix-a da prikaže relativne performanse uglavnom poređene sa konkurentnim proizvodima
* VMmark, virtuelizacioni benčmark
* Sunspider, test brzine internet pretraživača (Browser)
* BreakingPoint Systems, modelovanje i simulacija saobraćaja mrežnih aplikacija radi benčmarka servera i mrežne opreme
* , benčmark za testiranje masivno paralelnih računarskih sistema pod istovremenim visokim opterećenjem mreže, procesora i memorije

## Reference

## Literatura
* 
* 
* 

## Vanjske veze
* [news:comp.benchmarks benchmark newsgroup]
* 3DMark Vantage, 3DMark06, 3DMark05, 3DMark03, 3DMark01, Aquamark and Super PI benchmark database
* Linux benchmark suite
* Open source benchmark programs
* A site dedicated to benchmarking and overclocking of CPUs and GPUs.