Questo è uno script che ho iniziato a scrivere diverso tempo fa e piano piano si è evoluto ed ha preso una forma abbastanza finita. Ha avuto per me anche lo scopo di fare pratica con Bash.
Non è perfetto ma ci provo
, quindi qualsiasi stranezza notiate fatemela sapere.
Ha due funzioni al momento: Sospensione e Bunker
Incollo direttamente sotto il manuale (richiamabile anche con --help) per spiegare che cosa fa.
Per farlo funzionare è necessario l'editor di testo "ed", che ho usato per editare i file di configurazione. Alcune distribuzioni non lo hanno preinstallato ma è un semplice pacchetto di pochi KB.
L'ho messo su Github:
boincrig
Manuale:
boincrig - Script multifunzione per compiere operazioni sul client BOINC
SINTASSI
boincrig
boincrig --suspend PROJECT [APPLICATION ...]
boincrig --bunker PROJECT
boincrig --list|--help
DESCRIZIONE
Questo script ha queste modalità principali:
suspend
Mette in sospensione unità di lavoro di un determinato progetto, o di applicazioni specifiche di tale progetto.
La sospensione viene attivata al raggiungimento di un checkpoint.
La selezione di unità di lavoro da sospendere avviene in base alla percentuale di avanzamento.
bunker
Accumula unità di lavoro di un determinato progetto effettuando richieste consecutive, con la possibilità di simulare
più core di quanti siano realmente a disposizione.
Esegue diverse operazioni in modo che le richieste vadano a buon fine:
- Attiva ed abilita la richiesta di lavoro del progetto scelto
- Riattiva le unità di lavoro sospese per renderne possibile la richiesta di nuovo
- Attende il tempo notificato dal progetto tra un richiesta e l'altra
- Simula una quantità di core (ncpus) progressivamente maggiore ad ogni richiesta per ottenere più lavoro
L'impostazione viene mantenuta per il tempo minimo necessario per la richiasta in modo da minimizzare il rischio di saturazione delle risorse.
L'esecuzione termina quando il progetto restituisce un messaggio di negazione di ulteriore lavoro o dopo un certo numero di richieste con esito negativo.
Lo script funziona in modalità interattiva, chiedendo al utente i parametri necessari.
Se viene specificata da linea di comando la modalità di funzionamento non vengono fatte altre richieste all'utente e l'esecuzione procede con i parametri di default,
a meno che non siano stati specificati sempre da linea di comando.
Alcuni parametri particolari sono accessibili solo da linea di comando.
La directory di lavoro è individuata in base a una lista di nomi scelti abitualmente per l'installazione.
Per le installazioni effettuate con lo script autoestraente ufficiale la directory BOINC è cercata nella home utente, nella posizione corrente o nella directory superiore.
Se la directory è chiamata BOINC (in maiuscolo) è utilizzato l'eseguibile boinccmd presente nella stessa.
Nel caso non sia trovata una directory o quella trovata non sia quella corretta è possibile specificarla con l'opzione --dir o con la variabile BOINCDIR.
OPZIONI
--help
Stampa questo manuale ed esce.
--suspend PROJECT [APPLICATION ...]
Attiva la modalità sospensione. L'esecuzione procede in modo non interattivo.
E' possibile specificare uno o più applicazioni del progetto.
--bunker PROJECT
Attiva la modalità bunker. L'esecuzione procede in modo non interattivo.
--list
Restituisce la lista dei progetti con le relative applicazioni ed esce.
E' utile per ottenere i nomi da inserire come parametri per suspend e bunker.
--dir DIRECTORY
Specifica la directory di lavoro del client BOINC.
--port PORT
Specifica la porta di comunicazione con il client BOINC.
--percmin N
Imposta la percentuale oltre la quale le unità di lavoro saranno selezionate per essere sospese in modalità suspend.
--percmax N
Imposta la percentuale entro la quale le unità di lavoro saranno selezionate per essere sospese in modalità suspend.
--ncpus N
Simula un determinato numero di core massimo in modalità bunker.
--brute
Seleziona il valore massimo impostato di ncpus sin dalla prima richiesta anziché fare l'incremento progressivo
--delay N
Forza un determinato intervallo di secondi di attesa tra una richiesta e l'altra in modalità bunker.
E'possibile usare i moltiplicatori m ed h per minuti ed ore (esempio: 2m = 2 minuti).
ESEMPI
Utilizzo interattivo:
boincrig
Lo script chiede all'utente le impostazioni fondamentali per l'esecuzione
Utilizzo non interattivo:
boincrig --suspend rosetta@home --percmin 90
Sospende le unità di lavoro del progetto Rosetta che hanno raggiunto il 90% di esecuzione
boincrig --suspend 'World Community Grid' cep2 --percmax 90
Sospende le unità di lavoro dell'applicazione Clean Energy Project (Phase 2) del progetto World Community Grid che non hanno superato il 90% di esecuzione
boincrig --bunker SETI@home --ncpus 64
Accumula il maggior numero di unità di lavoro possibili del progetto SETI@home simulando fino a 64 core
Chi morisse dalla voglia di provarlo su Windows può farlo (senza garanzia
) con
Cygwin
(provato solo brevemente su Windows 7). Istruzioni: