Questo thread nasce da uno scambio di idee con Curious e un suggerimento da parte di sabayonino.
L'idea è quella di sfruttare la RAM per salvare i progressi delle workunit che normalmente vengono salvati nella directory
slots. Infatti, esistono progetti (al momento si parla del sottoprogetto CEP2 di WCG) che scrivono una grande mole di dati in un breve lasso di tempo, cosa che alla lunga può usurare in maniera significativa le periferiche di archiviazione (hdd, ssd...). Si potrebbe quindi creare una partizione di dimensione fissa all'interno della RAM nella quale BOINC dovrà scrivere i file, in modo da preservare tali periferiche. Ne deriverebbe anche l'indubbio vantaggio di accelerare le applicazioni che sono "collo-bottigliate" da una bassa velocità di scrittura dei dati.
Ho scritto una bozza di codice con tanto di commenti (per Linux). Questa va adattata alla versione di BOINC installata per quanto riguarda i comandi. Occorre anche verificare se c'è qualche comando che richiede privilegi superiori a quelli di semplice utente. Per ora non ho testato nulla.
Se funzionasse e si possedesse abbastanza ram, sarebbe possibile elaborare molte più wu del progetto CEP2 che al momento limita a 1 il numero di wu contemporanee.
cd /path/boinc #da ora in poi saremo sempre nella directory di BOINC
mv slots slots.backup #rinomina la directory 'slots' in 'slots.backup' (da ora in poi sara' il nostro backup)
sudo mount -t tmpfs -o size=2G tmpfs /ramdir #monta una partizione di 2G sulla ram
ln -s /ramdir slots #crea un collegamento chiamato 'slots' che punta alla partizione sulla ram
cp slots.backup slots #copia il contenuto del backup nella ram
./boinc --skip_cpu_benchmarks #avvio boinc
[...elaborazione...]
[...backup saltuario...]
./boinccmd --quit #chiusura boinc
rsync -rvu --delete slots/ slots.backup/ #sincronizza il contenuto della ram con il backup
sudo umount /ramdir #smonta la partizione
mv slots.backup slots #ripristina la directory 'slots'
Backup periodico:
while true
do
rsync -rvu --delete slots/ slots.backup/ #sincronizza il contenuto della ram con il backup
sleep 1800 #ripetizione backup dopo 1/2 ora
done
P.S. ho sbagliato sezione... se qualche buon'anima potesse spostare in BOINC (Tutto sulla piattaforma BOINC e sul suo utilizzo: informazioni, guide, addon). Grazie!
Edit:______________________
PROCEDURA TESTATA
Questa è la procedura da me testata (e che funziona) per la versione di boinc senza installazione. Questa cosa si può fare in tante maniere, per esempio smanettando sul file /etc/fstab. Il vantaggio del mio procedimento è che non richiede il riavvio del sistema.
0.
Consiglio di bloccare le elaborazioni e chiudere boinc prima di cominciare.
cd /path/to/boinc
./boinccmd --set_run_mode never
./boinccmd --quit
1. Creazione backup della directory 'slots'
rsync -av --delete-after slots/ slots.backup/
2. Montaggio partizione (es. 6GiB) in ram + copia dati/permessi
sudo mount -t tmpfs -o size=6G tmpfs slots
sudo rsync -av --delete-after slots.backup/ slots/
Nota: una volta montata 'slots' (nella ram) i file scompaiono. Ciò è dovuto al fatto che la cartella 'slots' adesso non punta più nell'hard disk. Non vi preoccupate, a tempo debito si può ripristinare il tutto. Anche per questo motivo occorre ricopiare il contenuto di 'slots.backup' in 'slots'. Questa volta la copia finisce nella ram.
3. Esecuzione boinc + backup
#Avvio:
./boinc
./boinccmd --set_run_mode auto
#Backup orario con cron (non testato):
crontab -l > mycron
echo "0 * * * * rsync -av --delete-after /path/to/boinc/slots/ /path/to/boinc/slots.backup/" >> mycron
crontab mycron
rm mycron
#Chiusura:
./boinccmd --set_run_mode never
./boinccmd --quit
Nota: questo passaggio non va eseguito in maniera procedurale. Scegliete passo-passo quali istruzioni eseguire. Potreste non fare alcun backup così come eseguire altre istruzioni nel mezzo. L'importante è chiudere boinc (o perlomeno bloccare le elaborazioni) prima di passare alla passaggio 4.
4. Aggiornamento backup + smontaggio partizione in ram + ripristino dati/permessi
rsync -av --delete-after slots/ slots.backup/
sudo umount slots
rsync -av --delete-after slots.backup/ slots/
rm -r slots.backup
Se non smonta, prima di proseguire assicurarsi che la partizione venga smontata con
oppure