Pagina 1 di 3

WDSaver

Inviato: domenica 14 novembre 2010, 17:41
da nakki
Apro questa topic per continuare in modo più ordinato il discorso iniziato nella discussione Notebook serie Dv-5 sull'utilizzo e la configurazione di wdsaver, un'interessante applet (si può chiamare così?) per trovare un giusto compromesso tra temperatura e numero di cicli (parcheggio della testina) nei dischi Western Digital su computer portatili.

Molti, come il sottoscritto, hanno notato che con un disco WD utilizzando ubuntu senza modifiche, in particolare usando il pc a batteria il disco iniziava inesorabilmente a ciclare. Scoprii che l'eccessivo parcheggio della testina del disco non va bene, il rischio è di rottura o di logoramento prematuro, in quanto ogni hd ha un numero di cicli medio nel corso della propria vita.
All'inizio si puntava, per cercare di risolvere il problema, sul settaggio di certi valori di risparmio energetico, e in particolare il valore di APM (advanced power management), che in ubuntu è rappresentato dal comando hdparm -B.
Quest'ultimo setta un valore numerico che va da 0 a 255. A 0 risparmio energetico massimo, a 255 risparmio energetico disattivato. La soglia teorica per il parcheggio delle testine dovrebbe essere il valore 128. Nei nostri dischi WD però la situazione (almeno nel mio) è che solo con 254 o 255 il disco non cicla, con qualsiasi altro valore il disco parcheggia all'impazzata.
Prima ho detto che il problema del parcheggio si verificava a batteria, in quanto, di default ubuntu imposta i valori di hdparm -B a 254 attaccato alla corrente e 128 per il pc a batteria.
Un'altro problema, riscontrato in particolare dai possessori di HP serie dv-5, è la temperatura eccessiva del disco e dell'intero computer.
In particolare con un valore di 254 (per evitare parcheggi) il disco tende a scaldarsi.

Un buon compromesso (e qui arrivo al dunque dopo questo riassunto mal fatto) è l'utilizzo di wdsaver!
Wdsaver effettua delle letture e delle scritture sul disco, in modo da non mandare la testina in parcheggio, quindi si possono abbassare i valori di APM, mantenendo il disco più fresco.
Wdsaver è reperibile qui. Una volta scaricato il pacchetto bz2 ed estratto vi troverete con vari file di testo, aprite il readme (mal scritto) e seguite le istruzioni:
1. Compilazione dei sorgenti di wdsaver: Aprire un terminale, recarsi nella cartella in cui si trova il file wdsaver.c, e dare il camando cc wdsaver.c -o wdsaver,  es:

Codice: Seleziona tutto

cd Scaricati
cd wdsaver-v1.0
cc wdsaver.c -o wdsaver
2. Test:

Codice: Seleziona tutto

sudo ./wdsaver -t 40 -v
(qui nel readme c'è un errore sostanziale, scrivono wdparm invece di wdsaver)
In un'altro terminale controllare se il disco parcheggia con

Codice: Seleziona tutto

sudo smartctl -a /dev/sda | grep Load_Cycle_Count && sleep 300 && sudo smartctl -a /dev/sda | grep Load_Cycle_Count
il quale controlla il numero di cicli del disco, aspetta 5 min e ricontrolla il valore, se resta invariato, il disco non ha parcheggiato la testina, se aumenta, con la differenza si può capire quanti cicli ha effettuato in 5 min.
Tutta questa procedura è da affiancare ad un valore noto di APM, in quanto, arrivati a questo punto abbiamo 2 variabili che possiamo cambiare: il timeout (che non ho ben capito a cosa si riferisce) di wdsaver, rappresentato nell'esempio sopra dal valore 40 e il valore di hdparm -B (APM).
Una volta soddisfatti dei valori sperimentati, si passa al test in live mode (non chiedetemi cosa cambia) dando

Codice: Seleziona tutto

sudo ./wdsaver -t 40 -v -l
(qui ho mantenuto sempre il valore 40 di esempio)
Anche in questo caso sono da controllare gli eventuali cicli.
3. Mettere wdsaver all'avvio del sistema: trovati i valori più consoni dare

Codice: Seleziona tutto

sudo cp -i ./wdsaver /usr/bin
sudo chmod 700 /usr/bin/wdsaver

poi

sudo gedit /etc/rc.local
dall'editor di testo aperto con l'ultimo comando aggiungere una riga subito prima di "exit 0" e incollarci

Codice: Seleziona tutto

/usr/bin/wdsaver -t 40 -l -b

dove al posto del 40 mettete il valore di timeout trovato dai test. Salvate, riavviate e il gioco è fatto.

Aggiungo due precisazioni non fatte nel settaggio dell'APM: esso può essere modificato temporaneamente con il comando

Codice: Seleziona tutto

sudo hdparm -B XXX /dev/sda
al posto di XXX mettere il valore numerico desiderato.
Per sapere su che valore è impostato dare

Codice: Seleziona tutto

sudo hdparm -I /dev/sda |grep Advanced
Per modificare i valori di APM di default del sistema andare a modificare il file /etc/hdparm.conf

Codice: Seleziona tutto

sudo gedit /etc/hdparm.conf
ed aggiungere alla fine

Codice: Seleziona tutto

/dev/sda {
    apm = XXX
    apm_battery = YYY
}
Dove XXX è il valore di APM a corrente e YYY a batteria.

Scusate se sono stato prolisso ma credo che una visione d'insieme era dovuta per cercare di capirci qualcosa.

Re: WDSaver

Inviato: domenica 14 novembre 2010, 18:00
da -TopGun-
Non sei stato prolisso per niente, anzi.
Sei arrivato subito al nocciolo della questione.

Adesso mi è più chiaro il lavoro di Wdsaver.

premettendo che io sono su Debian Squeeze amd64 con i valori di hdparm a 128 sia a batteria che a rete,
valori rilevati a batteria e poi collegando il portatile alla rete elettrica con il comando:

Codice: Seleziona tutto

sudo hdparm -I /dev/sda |grep Advanced 
che mi ha restituito in tutti e due i casi il valore

Codice: Seleziona tutto

	Advanced power management level: 128
	   *	Advanced Power Management feature set

inizialmente avevo escogitato due sistemi per ovviare al problema.

1) lasciare rhytmbox sempre in riproduzione (cosa che comunque capita nel 99% dei casi quando sono al pc)
2) impostare boinc manager (client per il calcolo distribuito) in maniera tale che scrivesse sul disco ogni 7 secondi

per ora sembra che il mio workaround da incompetente stia funzionando.

va da se che non è una soluzione più definitiva e studiata come wdsaver.


grazie ancora per aver sistemato l'analisi di wdsaver ed aver spiegato meglio il suo funzionamento.

Re: WDSaver

Inviato: domenica 14 novembre 2010, 18:11
da fabrixx
Ottimo riassunto  :)

A parte la capienza del disco sono nella stessa situazione di -TopGun-  ed ho installato wdsaver.
I cicli sembrano diminuiti ad ho un paio di gradi in più di temperatura del disco.

Ho notato però un errore al boot, compaiono due scritte rosse relative ad hdparm in particolare:
..unknown battery..
failure..:startpar returned failure hdparm


Non vorrei ci fosse un qualche problema..

Re: WDSaver

Inviato: domenica 14 novembre 2010, 18:12
da FioPos
Ottimo riepilogo su wdsaver!  :)
-TopGun- ha scritto: .... inizialmente avevo escogitato due sistemi per ovviare al problema.

1) lasciare rhytmbox sempre in riproduzione (cosa che comunque capita nel 99% dei casi quando sono al pc)
...
Era anche il mio salvagente per l'estate!  ;D
Però da me notavo cose strane, tipo che con alcuni specifici file .mp3, pur in esecuzione, il disco ciclava lo stesso, come se non stesse avvenendo lettura del disco (e infatti il grafico di uso disco era del tutto nero...)  ???

Vabbè speriamo che ora 'ste pippe mentali siano solo un ricordo  (b2b)

Re: WDSaver

Inviato: domenica 14 novembre 2010, 18:16
da -TopGun-
FioPos la strada ce lo dirà  ;D.

Ho dimenticato di dire che io ho un Dv5 1013 EL che monta un WD scorpio blue da 5400rpm e 160gb di capienza.

Re: WDSaver

Inviato: domenica 14 novembre 2010, 19:23
da fabrixx
Sono passato ai settaggi timeout 60/apm 140 (prima avevo 40/128) ma non noto miglioramenti.

Indagherò sugli errori al boot, li ho tirati fuori con bootlogd:

Codice: Seleziona tutto

 Sun Nov 14 19:16:50 2010: Setting parameters of disc:Unknown option apm_battery ... ^[[31mfailed!^[[39;49m
Sun Nov 14 19:16:52 2010: startpar: service(s) returned failure: hdparm ... ^[[31mfailed!^[[39;49m 
Wdsaver mi compare nei processi anche se non noto cambiamenti di attivita nei 60 secondi:
Immagine

Re: WDSaver

Inviato: domenica 14 novembre 2010, 19:51
da -TopGun-
scusate ma la riga di comando da aggiungere a rc.local deve essere così?:

Codice: Seleziona tutto

#!/bin/sh -e/usr/bin/wdsaver -t 40 -l -b

fabrixx anche me il processo wdsaver è assolutamente inattivo.

Re: WDSaver

Inviato: domenica 14 novembre 2010, 19:56
da fabrixx
Il file effettivamente era corretto, il processo appare nella lista anche se all'apparenza non attivo

Re: WDSaver

Inviato: domenica 14 novembre 2010, 20:24
da -TopGun-
io ho riavviato, ed il processo adesso non è presente...
la riga di comando è giusta?

Re: WDSaver

Inviato: domenica 14 novembre 2010, 20:57
da fabrixx
Io ho dato (da root):

Codice: Seleziona tutto

# gedit /etc/rc.local
e ho aggiunto prima di exit 0 il righo:

Codice: Seleziona tutto

/usr/bin/wdsaver -t 60 -l -b
Hai verificato di avere effettivamente il file /usr/bin/wdsaver ?

Ciao  :)

Re: WDSaver

Inviato: domenica 14 novembre 2010, 21:27
da -TopGun-
fabrixx ha scritto: Io ho dato (da root):

Codice: Seleziona tutto

# gedit /etc/rc.local
e ho aggiunto prima di exit 0 il righo:

Codice: Seleziona tutto

/usr/bin/wdsaver -t 60 -l -b
Hai verificato di avere effettivamente il file /usr/bin/wdsaver ?

Ciao  :)
io invece che di operare da root preferisco dare sudo, giusto per non prendere la brutta abitudine di fare tutto da root.

quindi ho dato lo stesso tuo comando, (parametro -t 40 però perché a me in base ai test non cicla) ma con le iniziali di riga seguenti:

Codice: Seleziona tutto

e/usr/bin/wdsaver -t 40 -l -b
dici che devo levare

Codice: Seleziona tutto

#!/bin/sh - :-\
dalla riga di comando???

provo.

Re: WDSaver

Inviato: domenica 14 novembre 2010, 21:34
da FioPos
Io invece non vedo per niente wdsaver nella lista processi, è così fin dall'inizio, eppure sono sicuro che sta funzionando (altrimenti col cavolo tenevo queste temperature e sopratutto apm 140 senza cicli...)  ???

Io la riga #!/bin/sh - :-\ NON l'ho decommentata... c'entrerà qualcosa?

Re: WDSaver

Inviato: domenica 14 novembre 2010, 21:39
da -TopGun-
FioPos ha scritto: Io invece non vedo per niente wdsaver nella lista processi, è così fin dall'inizio, eppure sono sicuro che sta funzionando (altrimenti col cavolo tenevo queste temperature e sopratutto apm 140 senza cicli...)  ???

Io la riga #!/bin/sh - :-\ NON l'ho decommentata... c'entrerà qualcosa?
1) sorge quindi il dubbio...come facciamo a sapere per certo che wdsaver sta lavorando?

2) è giusta la riga che ho aggiunto io oppure quella senza #!/bin/sh -e che ha inserito fabbrixx??

qualcuno ci illumini per favore!  ;D

Re: WDSaver

Inviato: domenica 14 novembre 2010, 21:53
da FioPos
-TopGun- ha scritto:
FioPos ha scritto: Io invece non vedo per niente wdsaver nella lista processi, è così fin dall'inizio, eppure sono sicuro che sta funzionando (altrimenti col cavolo tenevo queste temperature e sopratutto apm 140 senza cicli...)  ???

Io la riga #!/bin/sh - :-\ NON l'ho decommentata... c'entrerà qualcosa?
1) sorge quindi il dubbio...come facciamo a sapere per certo che wdsaver sta lavorando?

2) è giusta la riga che ho aggiunto io oppure quella senza #!/bin/sh -e che ha inserito fabbrixx??

qualcuno ci illumini per favore!  ;D
un attimo, non avevo visto il tuo precedente post...
Se la riga l'hai aggiunta così come hai riportato:   #!/bin/sh -e/usr/bin/wdsaver -t 40 -l -b
cioè di seguito, e non alla riga successiva, rispetto a #!/bin/sh, non può funzionare in quanto tutta la riga viene vista come commentata.
L'aggiunta devi farla alla riga sottostante

Re: WDSaver

Inviato: domenica 14 novembre 2010, 22:00
da fabrixx
Io non ho tolto niente da quel file, ho solo aggiunto il rigo.
Questo è il mio file /etc/rc.local:

Codice: Seleziona tutto

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/usr/bin/wdsaver -t 60 -l -b

exit 0
Avete fatto Visualizza>Tutti i processi dal monitor di sistema?

Re: WDSaver

Inviato: domenica 14 novembre 2010, 22:11
da -TopGun-
FioPos ha scritto:
-TopGun- ha scritto:
FioPos ha scritto: Io invece non vedo per niente wdsaver nella lista processi, è così fin dall'inizio, eppure sono sicuro che sta funzionando (altrimenti col cavolo tenevo queste temperature e sopratutto apm 140 senza cicli...)  ???

Io la riga #!/bin/sh - :-\ NON l'ho decommentata... c'entrerà qualcosa?
1) sorge quindi il dubbio...come facciamo a sapere per certo che wdsaver sta lavorando?

2) è giusta la riga che ho aggiunto io oppure quella senza #!/bin/sh -e che ha inserito fabbrixx??

qualcuno ci illumini per favore!  ;D
un attimo, non avevo visto il tuo precedente post...
Se la riga l'hai aggiunta così come hai riportato:   #!/bin/sh -e/usr/bin/wdsaver -t 40 -l -b
cioè di seguito, e non alla riga successiva, rispetto a #!/bin/sh, non può funzionare in quanto tutta la riga viene vista come commentata.
L'aggiunta devi farla alla riga sottostante
quindi com'è la sintassi corretta???????

Re: WDSaver

Inviato: domenica 14 novembre 2010, 23:10
da FioPos
@ TopGun: la sintassi giusta è quella di fabrixx, per lo meno per quanto riguarda il fatto di non aggiungere di seguito alla prima riga. Il mio file risulta identico al suo

@ fabrixx: ok ora lo vedo... non sapevo della possibilità di vedere altri processi. Risulta anche da me "sleeping" e con 0% di cpu, ma non direi che ciò significhi che non sia attivo, visto che a quanto vedo sono nella stessa situazione la strgrande maggioranza dei processi, compreso ad esempio network manager...

Re: WDSaver

Inviato: domenica 14 novembre 2010, 23:17
da -TopGun-
FioPos ha scritto: @ TopGun: la sintassi giusta è quella di fabrixx, per lo meno per quanto riguarda il fatto di non aggiungere di seguito alla prima riga. Il mio file risulta identico al suo

@ fabrixx: ok ora lo vedo... non sapevo della possibilità di vedere altri processi. Risulta anche da me "sleeping" e con 0% di cpu, ma non direi che ciò significhi che non sia attivo, visto che a quanto vedo sono nella stessa situazione la strgrande maggioranza dei processi, compreso ad esempio network manager...
grazie mille, modifico subito.

Re: WDSaver

Inviato: domenica 14 novembre 2010, 23:31
da fabrixx
FioPos ha scritto: Risulta anche da me "sleeping" e con 0% di cpu, ma non direi che ciò significhi che non sia attivo, visto che a quanto vedo sono nella stessa situazione la strgrande maggioranza dei processi, compreso ad esempio network manager...
Io l'ho osservato con attenzione per i 60 secondi impostati senza vedere variazioni, immaginavo che avrei dovuto notare una se pur minima attività del processore.

Comunque dai dovrebbe andare, la tua temperatura lo conferma, il discorso è trovare appunto il settaggio giusto.

Ciao  :)

Re: WDSaver

Inviato: domenica 14 novembre 2010, 23:32
da -TopGun-
ok,
in monitor di sistema adesso c'è wdsaver.

non sono intervenuto su hdparm (provo una cosa alla volta), i valori apm sia a batteria che alimentando il portatile da rete li ho lasciati come da default a 128 (non so perché gli sviluppatori di Debian abbiano fatto questa scelta) e il valore di wdsaver a 40 come predefinito.

vi aggiorno nei prossimi giorni.