Vabatahtlik arvutusteenus

Vabatahtlik arvutusteenus (ingl. Volunteer computing) on hajusarvutuse tüüp, kus inimesed annetavad oma arvutite kasutamata ressursse teaduslikule projektile, mis kasutavad neid ressursse hajutatud arvutamiseks ja/või salvestamiseks.

Enamjaolt on vabatahtlikud tavainimesed kellel on isiklikud arvutid, mis on ühendatud internetiga. Lisaks võivad ka organisatsioonid, nagu koolid ja ettevõtted, pakkuda oma arvutite ressursse. Projektid on tavaliselt akadeemilised (ülikoolipõhised) ja teostavad teadusuuringuid. Siiski on erandeid, nagu näiteks GIMPS ja distributed.net mis ei ole akadeemilised.

## Ajalugu
Esimene vabatahtliku arvutustehnoloogia projekt oli Suur Interneti Mersenne'i algarvu otsing (ingl. *Great Internet Mersenne Prime Search* GIMPS), mis algas jaanuaris 1996. Sellele järgnes 1997. aastal distributed.net. Aastatel 1997 ja 1998 arendas mitu akadeemilist uurimisprojekti vabatahtliku arvutustehnoloogia jaoks Java-põhiseid süsteeme; näiteks Bayanihan, Popcorn, Superweb.

Aastatel 1998 kuni 2002 loodi mitmed ettevõtted mille ärimudelid kasutasid vabatahtlikku arvutusteenust, näiteks Porivo, Popular Power, United Devices, Entropia.

Aastal 2002 loodi *Berkeley Open Infrastructure for Network Computing* (BONIC), mille vabatahtliku arvutustehnoloogia raamistikku kasutatakse erinevate teaduslike simulatsiooniprojektide jaoks, sealhulgas valkude voltumine, kliimaprognoosid ja biomeditsiinilised arvutused.

## Vahetarkvara
Varajaste vabatahtliku arvutustehnoloogia projektid koosnesid ühest klientprogrammist, mis ühendas nii teadusliku arvutuse kui ka hajutatud arvutusinfrastruktuuri. Selline arhitektuur oli jäik ning uute klienttarkvarede versioonide kasutuselevõtt oli keeruline.

Viimasel ajal on vabatahtlik arvutustehnoloogia liikunud vahetarkvara süsteemidele, mis pakuvad teaduslikust arvutamisest sõltumatut hajutatud arvutusinfrastruktuuri.

Näited vahetarkvaradest:

* BOINC on kõige laialdasemalt kasutatav vahendusvara süsteem. See pakub klienttarkvara Windowsi, macOS-i, Linuxi, Androidi ja teiste Unixi variantide jaoks.
* XtremWeb'i kasutatakse peamiselt uurimistööriistana. Seda arendab rühm Pariisi Lõuna-Ülikoolis.
* Xgrid on Apple'i poolt välja töötatud. Selle klient- ja serverikomponendid töötavad ainult	macOS-i platvormil.
* Grid MP on kaubanduslik vahendusvara platvorm, mida arendab United Devices.

### Tööpõhimõte

Üks suurematest vabatahtliku arvutusteenuse vahetarkvaradest on BOINC server koosneb kahest põhiosast, nimelt põhiandmebaasist ja serveri deemonprotsessidest (*söötur, ülekandija, assimilaator, validaator, (failide) kustutaja, töö generaator ja planeerija*). 

Kui projektihaldur saadab töö BOINC-i serverisse, loob *töö generaator* mitu *tööülesannet* põhiandmebaasis. Seejärel teeb *ülekandija* andmebaasis *tööülesande-tulemuspaarid*. Paarid söödetakse *sööturi* poolt *planeeriasse* ja jaotatakse mitmele BOINC-i *töölisele* (vabatahtlikule). Kui iga *tööline* tagastab oma tulemuse, teatab planeerija selle *validaatorile*. Kui valideerimine on lõpule jõudnud, töödeldakse andmeid ning viimaks viiakse läbi *assimileerimine*. 

Lõpuks saab projektihaldur BOINC-i serverist assimileeritud tulemused.(lisa 1)
### Veakontroll
Arvutustulemuste veakontrolli saab teostada mitmel viisil, üheks meetodiks on hääletamine, teine aga sabotaažikontroll.

Hääletamise puhul iga ülesanne kopeeritakse ja eraldatakse mitmele klientprogrammile, et vahetarkvara saaks koguda mitmeid tulemusi ja võrrelda nende väärtusi. Ülesande jaoks kogutud tulemused klassifitseeritakse seejärel tulemusgruppidesse vastavalt tulemuste väärtusele. Vahendusprogramm otsustab hääletamise teel, millise tulemusgrupi tulemus peaks olema ülesande lõplik tulemus. 

Kaks levinud hääletamismeetodit on enamuse ja m-esimese hääletamine.

* Enamuse hääletamine: Kõige	rohkem tulemusi kogunud tulemusgrupp võetakse vastu kui lõplik	tulemus.
* m-esimese hääletamine: Esimesena m sobiva (sama väärtusega)	tulemust kogunud tulemusgrupp võetakse vastu kui lõplik tulemus.

Lihtsuse tõttu kasutatakse lihtsaid hääletamismeetodeid laialdaselt reaalsetes vabatahtliku arvutamise süsteemides nagu näiteks BOINC.

Töötaja sabotaažikontrolliks määrab vahetarkvara mõnikord kontrollülesande, mille õige tulemus on juba teada. Vahetarkvara saab tuvastada töötaja kui sabotööri, kui too tagastab vale tulemuse kontrollülesandele. 

Sabotööri tabamisel veakontrolliga võib kasutada järgmisi kahte meetodit:

* Tagasikeeramine: Juht tühistab	kõik sabotööri poolt tagastatud tulemused, sest igaüks võib	olla vale.
* Must nimekiri: Juht lisab sabotööri identifitseerimisinfo	(nt IP-aadress) musta nimekirja, et takistada sabotööri tulemuste	tagastamist või uute ülesannete saamist.

Tagasikeeramist ja musta nimekirja saab kasutada samaaegselt efektiivseks sabotaaži vältimiseks.

## Viited