Usare la cpu per qualcosa di buono - BOINC

boinc logoSpesso (o forse dovrei dire sempre), usiamo il computer lasciando praticamente inutilizzato il processore.
Ad esempio, mentre scrivo questo articolo sul browser il processore si sta girando i pollici.
Lo stesso avviene quando lo lascio acceso la notte per scaricare un dvd di una distro Linux.
Mi piacerebbe poter rendere più utile questo cavolo di dual core super pomposo.
Non facendo grafica 3D o altre cose che richiedono tempi di rendering assurdi non saprei cosa fargli fare.

Con un pizzico di altruismo ho deciso di provare BOINC. La home page riporta

Usa il tempo di inattività del tuo computer (Windows, Mac o Linux) per curare malattie, studiare il riscaldamento globale, scoprire pulsar e fare molti altri tipi di ricerche scientifiche. E' sicuro, garantito e facile:

E aggiungo io, "open source".
Penso non ci sia altro da aggingere in questa frase. Ho installato 'boinc manager' dai repository di debian e cliccato su 'add project'.
Ho scelto un progetto che ha richiesto la creazione di un utente o poi ho guardato le varie opzioni del programma.
Non mi metto a commentarle tutte ma vi posso dire che potete decidere in maniera minuziosa quante risorse dare a boinc e quando farlo calcolare.

Il mio dubbio era che facesse scaldare tanto il processore (dando il 100%, ma si può scegliere la % che si vuole).
Ebbe sono rimasto sorpreso dal facco che la temperatura aumenta di pochi gradi (vedi in fondo all'articolo).

Vi riporto e commento l'ouput del comando 'top' che mostra le risorse di sistema usate

Output di top con binc attivo, usando il 100% della cpu.

Cpu0  :  2.3%us,  0.3%sy, 97.3%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  7.0%us,  0.7%sy, 92.4%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4060892k total,  3960492k used,   100400k free,    67828k buffers
Swap:  4194296k total,        0k used,  4194296k free,  3080084k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                         
24333 boinc     39  19 80548  62m 4484 R   96  1.6 398:15.12 wcg_hpf2_rosett                                                 
24859 boinc     39  19 82588  60m 4484 R   93  1.5  24:54.04 wcg_hpf2_rosett

Come potete notare la %ni (che dovebbe significare 'not idle') usa praticamente la totalità del tempo.
%us significa 'user space'. Applicazioni quali firefox e altro usano lo 'user space' e lo potete vedere meglio nella successiva schermata.
Le applicazioni rispondo in maniera fluida, come se il processo non stesse facendo nulla, probabilmente merito dell'altro valore di nice "NI" che è 19.
Nice è la priorità di un processo. Il valore 19 è la priorità più bassa possibile. In altre parole quando lanciate qualsiasi altra applicazione, boinc non usa più la cpu fin tanto che non termina la richiesta da parte di un applicazione con nice più basso.


 

Output di top con binc inattivo.

Cpu0  : 11.0%us,  1.0%sy,  0.0%ni, 88.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  8.5%us,  1.3%sy,  0.3%ni, 89.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4060892k total,  3976248k used,    84644k free,    67828k buffers
Swap:  4194296k total,        0k used,  4194296k free,  3092024k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                         
 1676 root      20   0  134m  48m  17m S   10  1.2  39:54.36 Xorg                                                            
24826 sirio81   20   0  780m 184m  33m S    6  4.6   1:57.83 firefox-bin

Come potete vedere ora il processore è costantemente in 'idle', cioè cicla senza far niente.
Notare il valore di 'nice' pari a 0 delle applicazioni xorg e firefox che sono le uniche a richiedere un po' di risorse.


Boinc Attivo

temp1:       +50.0°C  (crit = +106.0°C)                 
temp2:       +40.0°C  (crit = +106.0°C)                 
temp3:       +40.0°C  (crit = +106.0°C)                 
temp4:       +44.0°C  (crit = +106.0°C)


Boinc inattivo

temp1:       +41.0°C  (crit = +106.0°C)                 
temp2:       +43.0°C  (crit = +106.0°C)                 
temp3:       +44.0°C  (crit = +106.0°C)                 
temp4:       +41.0°C  (crit = +106.0°C)