Door open source zijn community-bijdragen aan softwareprojecten een bekend fenomeen geworden. Maar ook wetenschappers weten dat vele handen licht werk maken. Daarom gebruiken speurders naar buitenaards leven al sinds 1999 de onbenutte rekenkracht van thuis-pc’s. Dankzij BOINC kost het meehelpen aan dergelijk wetenschappelijk onderzoek je eigenlijk geen moeite. Hoe dat werkt, lees je in dit artikel.
Auteur: Serge Gielkens
BOINC staat voor Berkeley Open Infrastructure for Network Computing. Het is een platform voor gedistribueerd rekenen dat ontstaan is vanuit het project SETI@home. SETI betekent Search for Extra-Terrestrial Intelligence, een vakgebied dat zoekt naar buitenaards leven. Dat doen ze onder andere door radiosignalen te analyseren. Het gaat om bergen data en daarom werd dit project gestart om de ongebruikte CPU cycles van de community te benutten. Inmiddels is BOINC niet meer beperkt tot SETI@home. Je kunt allerlei wetenschappelijk onderzoek steunen, variërend van wiskundige tot biomedische projecten.
Om bij te dragen aan aangesloten projecten heb je de BOINC client nodig. Installeer daartoe het pakket boinc-client. Dit is eigenlijk een daemon-proces dat op de achtergrond draait om taken van projecten uit te voeren. De instructies met invoer en de code haalt de client op bij het project. Na het voltooien van zo’n taak stuurt hij het resultaat terug. Vervolgens begint deze cyclus weer opnieuw.
Om de client te beheren gebruik je de BOINC Manager. Voor deze GUI-applicatie is er een apart pakket: boinc-manager. Na installatie vind je de Manager bij KDE in het startmenu onder Applications -> System. Op Mint ga je naar Menu -> Administration. Wacht nog even met het opstarten van de manager om wat voorbereidingen te treffen.
Bij een distributie als Fedora draait de client namelijk nog niet. Als je dan meteen met de manager aan de slag gaat, start die automatisch een client onder jouw user id op. Als gevolg daarvan draait de code van projecten onder jouw gebruikersnaam en komen allerlei directories en bestanden in je home directory terecht. Dat vervuilt niet alleen je eigen werkplek, maar ook vanuit veiligheidsoogpunt is het beter om de code onder een apart user id te draaien. Ga eerst na of de client al draait:
sudo systemctl status boinc-client
Als die nog niet actief is, dan start je hem op met:
sudo systemctl start boinc-client
Om de client voortaan automatisch te starten bij iedere boot van je computer doe je het volgende:
sudo systemctl enable boinc-client
Het pakket boinc-client heeft al een speciale gebruiker en groep boinc aangemaakt. De zojuist opgestarte client draait onder dit user id. Voeg jezelf toe aan deze groep:
sudo usermod -a -G boinc <je_gebruikersnaam>
Het groepslidmaatschap is niet meteen actief. Log daarom uit en meteen weer in.
De gebruiker boinc heeft als werkdirectory /var/lib/boinc. Verruim daarvan de groepspermissies, zodat jij er ook leesrechten hebt:
sudo chmod -R g+r /var/lib/boinc
De optie -R zorgt ervoor dat dit recursief gebeurt. De client heeft namelijk al bestanden en directories aangemaakt. Onder andere is dat een wachtwoordbestand:
/var/lib/boinc/gui_rpc_auth.cfg
Dit bevat een lange string aan tekens. In de manager moet je dat intikken om verbinding met de client te krijgen. Met een teksteditor pas je het wachtwoord aan of je maakt het jezelf iets gemakkelijker. Het opgeven van een wachtwoord is namelijk te vermijden door de volgende link:
ln -s /var/lib/boinc/gui_rpc_auth.cfg ~/gui_rpc_auth.cfg
De manager zoekt standaard naar het wachtwoordbestand in jouw home directory. Door deze link wordt dit gevonden en maakt het automatisch verbinding met de client zonder nog om een wachtwoord te vragen.
Als je de manager de allereerste keer opstart, verschijnt een wizard om je eerste project te kiezen. Je ziet een overzicht van alle onderzoeksprojecten. Selecteer een projectcategorie bij Categories om de lijst in te perken. Als je bijvoorbeeld geïnteresseerd bent in natuurkundige projecten, kies je hier Physical Science. In deze categorie valt SETI@home, dat we in dit artikel als voorbeeld zullen nemen.
Door het project te selecteren, krijg je rechts een korte beschrijving te zien. Daaronder staat welke organisatie het project uitvoert met een link naar de bijbehorende website. Verder zie je door een rij icoontjes welke systemen het project ondersteunt. Behalve besturingssystemen, zoals Linux en Microsoft Windows, zie je ook vaak Android. Als je de BOINC app installeert, kun je zelfs met je mobieltje bijdragen.
Daarnaast kom je geregeld de iconen van Nvidia en AMD tegen. Grafische processoren zijn immers belangrijke dataverwerkers geworden. Daarvoor heb je wel de juiste libraries op je systeem nodig. Wat je moet installeren, varieert sterk per distributie. Mint levert voor Nvidia het pakket boinc-client-nvidia-cuda, terwijl dat voor AMD boinc-client-opencl is.
Klik op Next. Vervolgens moet je een account aanmaken. Dat bestaat uit je e-mailadres met een wachtwoord. Klik weer op Next. Nadat wat gegevens opgehaald zijn, is het project meteen actief op je pc en draag je eraan bij. Klik tot slot op Finish, waarna de manager de webbrowser opent.
Je bent nu ingelogd op de website van SETI@home (zie afbeelding 1). Pas hier je accountgegevens naar wens aan. Houd er rekening mee dat je naam in de lijst van deelnemers verschijnt, dus gebruik een nickname om anoniem te blijven. Klik op OK. Je krijgt dan de keuze om je aan te sluiten bij een team. Dat is bijvoorbeeld nuttig als je vanuit een instituut als groep wilt bijdragen. Wij slaan dit over door linksonder te klikken op I’m not interested in joining a team right now.
De webpagina toont nu een overzicht van je account. Niet alleen kun je hier gegevens wijzigen, maar ook verwijder je hier je account als je niet meer wilt meedoen. Dat doe je onder het kopje Account information. Klik daar bij Change helemaal aan het eind op delete account.
Onder het kopje Preferences bepaal je hoeveel je wilt bijdragen aan het project. De opgegeven waarden gelden voor alle computers, die dit account gebruiken. Je hoeft dus niet per pc een project-account aan te maken. Deze instellingen zijn ook beschikbaar in de manager via het menu Options -> Computing preferences. Die waarden gelden alleen voor de pc waarop de betreffende manager draait.
De meeste standaardwaarden voldoen prima. Het is daarentegen wel nuttig om het CPU-gebruik aan te passen, want SETI draait nu op volle toeren op je pc. Om dat terug te schroeven, klik je op Computing preferences. Op de overzichtspagina zie je bovenaan bij Usage limits op de eerste regel 100% of the CPUs staan. Dat betekent dat het project alle beschikbare cores en CPU’s gebruikt. Op de regel daaronder staat 100% of CPU time. Dat houdt in dat alle vrije rekenkracht ingezet wordt.
Om dat te wijzigen scroll je helemaal naar beneden en klik je daar op de groene knop Edit preferences. Wij kiezen voor 50% of the CPUs, zodat nog maar de helft van het aantal cores beschikbaar is voor SETI@home. Verder stellen we 25% of CPU time in. Zodoende hebben de gebruikte cores driekwart van de tijd rust. Klik tenslotte weer helemaal onderaan op de groene knop. Nu heet die Update preferences.
Hoewel dit op de website geregeld is, weet de manager nog niets van de aangepaste waarden. Pas als die weer met het project communiceert, bijvoorbeeld om een nieuwe taak op te halen, krijgt hij de bijgewerkte gegevens. Om dit terstond te forceren, klik je in de manager onderaan op Project Commands en kies je in het contextmenu Update. Omdat we met de manager verder gaan, is de webpagina niet meer nodig. Log daarom uit.
De manager gebruikt standaard de Simple View (zie afbeelding 2). Hierin zie je alleen essentiële informatie. Zo zie je per taak hoe veel procent daarvan al gedaan is en hoe lang het afronden nog duurt. Hoewel je maar aan één project bijdraagt, zie je mogelijk meerdere taken. Dat is het geval als je meerdere cores beschikbaar hebt gesteld.
Verder zijn er enkele beheermogelijkheden. Om bijvoorbeeld een taak tijdelijk te onderbreken, klik je op Task Commands en kies je vervolgens Suspend in het contextmenu. Je ziet meteen bovenin bij Tasks het groene bolletje in rood veranderen. Gebruik in het contextmenu Resume om de taak weer verder te laten werken. Via de knop Project Commands rechtsonder kun je dit voor alle taken van een project regelen.
Wat meer mogelijkheden heb je met de geavanceerde view. Ondanks de naam valt het gebruik reuze mee. Ga naar View -> Advanced View. Standaard staat het tabblad Projects open. Zodra je in de lijst een project selecteert, wordt het menu links pas actief. Daar verschijnen exact dezelfde commando’s als die je zojuist in de Simple View zag bij de contextmenu’s onder de knoppen Task Commands en Project Commands.
Voor een overzicht van alle taken ga je naar tabblad Tasks. Om de lijst te beperken tot alleen de lopende taken klik je links op Show active tasks. Klik op een kolomnaam om het overzicht op de gewenste informatie te sorteren. Als je bijvoorbeeld wilt zien welke taken het meest gevorderd zijn, dan klik je op de naam Progress. De kolom Deadline bepaalt wanneer een taak klaar moet zijn. Lukt dit niet, dan stuurt BOINC die taak ook naar een andere gebruiker. Dit voorkomt dat taken nooit afgerond worden.
In tabblad Transfers zie je alleen iets op het moment dat een nieuwe taak begint of als die resultaten naar het project terugstuurt. Meestal is die leeg, omdat het overgrote deel van een taak opgaat aan CPU-tijd. Verder zie je nog bij Statistics een grafiek van de opgebouwde credits (zie afbeelding 3). Deze berekent BOINC op basis van de hoeveelheid CPU-tijd, die een taak heeft gekost. De absolute waarde zegt weinig, maar je krijgt wel een beeld van het tijdsverloop van jouw bijdrage.
Via BOINC draag je gemakkelijk bij aan wetenschappelijk onderzoek. Je hoeft niet veel meer te doen dan je via de manager aan te melden bij een project. De software doet daarna de rest, zonder dat je er verder iets van merkt tijdens het werken op je computer.