View previous topic :: View next topic |
Author |
Message |
Cazzantonio Bodhisattva
Joined: 20 Mar 2004 Posts: 4514 Location: Somewere around the world
|
Posted: Wed Jun 14, 2006 3:22 pm Post subject: [TIP] emergere tenendo d'occhio la temperatura |
|
|
Ho fatto uno script idiota sostanzialmente per fare emerge -e world senza preoccuparmi di fondere il portatile
Siccome sto sperimentando problemi di surriscaldamento ho fatto uno script (io l'ho chiamato emerge_controllato) che sostanzialmente non fa altro che mettere in pausa emerge dopo l'emersione di ogni pacchetto se la temperatura è troppo alta. Se la temperatura raggiunge valori limite può anche spengere del tutto il pc per sicurezza.
ovviamente durante l'emersione di un singolo pacchetto fa ben poco, tuttavia anche nel caso il computer crashi potete riprendere l'emersione lasciata a metà semplicemente lanciando nuovamente lo script (con gli stessi parametri... ovviamente...)
Leggetevi comunque i commenti che ho cercato di essere più chiaro possibile
Lo posto anche se è una cosa idiota nel caso altri avessero i miei stessi problemi (gli evito 15 minuti per scrivere lo script )
si lancia in modo molto banale tipo:
Code: | emerge_controllato -e world |
o qualsiasi altro parametro vogliate passare (tipo -vDNu world)
Siccome gli eye-candy tipo i commenti e i path modificabili li ho aggiunti dopo senza testare potrebbe non funzionare per errori di battitura o quant'altro... in caso fatemi sapere.
Code: | #!/bin/bash
#Questo script lancia un emerge controllato. Dopo l'emersione di ogni
#pacchetto controlla la temperatura e vede se è il caso di lasciare
#raffreddare il pc o spengerlo del tutto.
#prende come parametri da dare ad emerge fino a 8 parametri passati da
#riga di comando allo script
#ad esempio:
#emerge_controllato -vDuN world
#oppure
#emerge_controllato -e world
#potete anche creare una lista personalizzata di pacchetti da compilare
#non è difficile e sicuramente capirete come ;-)
#Si appoggia a tre file temporanei che vengono creati nella directory
#in cui viene lanciato il processo.
#I file sono "pacchetti", "pacchetti_compilati" e "attenzione".
#Nel primo si trovano tutti i pacchetti da emergere (o quelli rimasti
#da emergere); nel secondo ci sono quelli già compilati, nel terzo ci
#sono gli avvertimenti stampati al momento dell'avvio del processo,
#alla fine e nell'eventualità che il pc venga spento per eccesso di
#calore.
#Questo script può essere stoppato e ripreso. Riprenderà dall'ultimo
#pacchetto che stava compiland prima di essere stoppato.
#Non cancellare i files temporanei se si vuole riprendere un processo
#stoppato per qualsiasi motivo
#!!!! ATTENZIONE !!!!
#I files temporanei vanno rimossi a mano nel caso si voglia lanciare
#daccapo una nuova emersione senza riprendere l'ultima eventualmente
#stoppata o conclusa
########################DEFINIZIONE PARAMETRI#########################
#I file che contengono le temperature da tenere sotto controllo.
#Tipicamente i computer hanno due temperature, una della CPU e una
#della matherboard.
#Definite qua sotto i file in /proc che vi interessano (ovviamente
#abilitato l'acpi suppongo....).
TEMP1=/proc/acpi/thermal_zone/THZN/temperature
TEMP2=/proc/acpi/thermal_zone/THZV/temperature
#Le temperature di allarme per cui si deve sospendere l'emersione
#in modo da consentire al sistema di raffreddarsi.
#Sono riferite rispettivamente alla TEMP1 e alla TEMP2.
WARN1=90
WARN2=70
#Le temperature di allarme per cui è meglio spengere il pc del tutto
#e aspettare l'intervento dell'amministratore.
#Sono riferite rispettivamente alla TEMP1 e alla TEMP2.
MAX1=95
MAX2=74
######################################################################
if `test -e pacchetti || test -e pacchetti_compilati || test -e attenzione`
then
echo "Ci sono alcuni file temporanei presenti. il programma sta per"
echo "riprendere la precedente emersione. Siete sicuri che è questo"
echo "quello che volete? Avete 10 secondi per fermare il processo"
echo "prima che parta".
fi
echo "processo partito"
echo `date` >> attenzione
echo "INIZIO COMPILAZIONE" >> attenzione
echo " " >> attenzione
NUMERO=$(echo "0")
if `test -e pacchetti`
then
NUMFIN=$(cat pacchetti |wc -l)
if `test -e pacchetti_compilati`
then
FATTI=$(cat pacchetti_compilati |wc -l)
DAFARE=$(echo "$NUMFIN -$FATTI"|bc)
tail -n $DAFARE pacchetti > pacchetti_2
mv pacchetti_2 pacchetti -f
fi
else
emerge -p $1 $2 $3 $4 $5 $6 $7 $8|grep ebuild|cut -d"]" -f2|cut -d" " -f2 >pacchetti
sleep 5s
NUMFIN=$(cat pacchetti |wc -l)
fi
for i in `cat pacchetti`
do
if [ `cat $TEMP1 |tr -s " "|cut -d" " -f2` -ge $MAX1 ]
then
echo `date` >> attenzione
echo "spento per THZN che ha superato 95 gradi" >> attenzione
echo " " >> attenzione
/sbin/halt
fi
if [ `cat $TEMP2 |tr -s " "|cut -d" " -f2` -ge $MAX2 ]
then
echo `date` >> attenzione
echo "spento per THZV che ha superato 74 gradi" >> attenzione
echo " " >> attenzione
/sbin/halt
fi
if [ `cat /proc/acpi/thermal_zone/THZN/temperature |tr -s " "|cut -d" " -f2` -le $WARN1 ]&&[ `cat /proc/acpi/thermal_zone/THZV/temperature |tr -s " "|cut -d" " -f2` -le $WARN2 ]
then
NUMERO=$(echo "$NUMERO +1"|bc)
emerge --oneshot =$i
sleep 5s
echo $i >> pacchetti_compilati
echo "compilati il seguente numero di pacchetti:" $NUMERO
RIMANENTI=$(echo "$NUMFIN - $NUMERO"|bc)
echo "ne rimangono da compilare:" $RIMANENTI
echo " "
echo " "
echo " "
sleep 5s
else
sleep 1m
fi
done
echo `date` >> attenzione
echo "FINITO TUTTO" >> attenzione
echo " " >> attenzione |
_________________ Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne
Last edited by Cazzantonio on Wed Jun 14, 2006 10:21 pm; edited 1 time in total |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4809 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Wed Jun 14, 2006 7:56 pm Post subject: |
|
|
Secondo me, questo script fa il suo dovere, ma non è ottimale per una protezione adeguata della macchina.
L'emersione di un pacchetto può durare a lungo e un controllo alla fine di ogni singola compilazione mi sembra poco efficacie.
Inoltre, se non ho letto male, mi pare che l'unico strumento per determinare il raffreddamento sarebbe l'istruzione sleep.
Ma non è affatto detto che basti. A meno che il sistema non abbia un meccanismo di autoriduzione delle frequenze, come ad esempio il cpu frequency scaling, in caso di bassa utilizzazione.
Ancora, se durante la compilazione, l'utente sta contemporaneamente lavorando a un processo grafico impegnativo, non otterrebbe alcun miglioramento.
La cosa che dovrebbe fare un programma, piuttosto, è proprio quella di utilizzare il cpu frequency scaling, modificando i parametri in sys/devices/system/cpu/cpu0/cpufreq, accessibili in modalità userspace .
La temperatura va testata indipendentemente dalla compilazione e quando sale si abbassa la frequenza, senza interrompere alcun processo.
Se questo non basta, allora sì, si spegne la macchina. _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
topper_harley Guru
Joined: 05 Apr 2006 Posts: 363 Location: Treviso / Udine (Italy)
|
Posted: Wed Jun 14, 2006 9:54 pm Post subject: |
|
|
Io utilizzo una soluzione a mio avviso più efficace, benchè molto semplice.
Ho notato che la maggiore causa di surriscaldamento del mio portatile è la frequenza della cpu. Portatndola al minimo la temperatura resta sempre a valori accettabili (ovviamente non se lascio il portatile in macchina ad agosto mentre emergo xorg )
Di default uso cpufreqd e la configurazione consigliata nella guida alla gestione energetica di gentoo (http://www.gentoo.org/doc/it/power-management-guide.xml#doc_chap3)
Ho però aggiunto al file /etc/cpufreqd.conf, nella riga dei plugin "acpi_temperature" facendola diventare così:
Code: | enable_plugins=acpi_ac, acpi_battery, acpi_temperature |
ho aggiunto poi questo profilo
Code: |
[Profile]
name=ondemand_lo
minfreq=0%
maxfreq=25%
policy=ondemand
[/Profile] |
e questa regola
Code: | [Rule]
name=overheat
acpi_temperature=75-100
cpu_interval=0-100
battery_interval=0-100
profile=ondemand_lo
[/Rule] |
Ho poi aggiunto "acpi_temperature=0-75" a tutte le altre rules.
Per rendere attivi i cambiamenti è necessario riavviare cpufreqd
Code: | /etc/init.d/cpufreqd restart |
Così facendo quando la temperatura supera il 75% la cpu viene portata al minimo.
In questo modo anche durante emersioni "pesanti" non ho mai avuto problemi... _________________ http://topperh.ath.cx
Jabber: topper_harley@jabber.org
ICQ: 224179391
MSN: Topper_Harley80@gmail.com
Last FM |
|
Back to top |
|
|
Cazzantonio Bodhisattva
Joined: 20 Mar 2004 Posts: 4514 Location: Somewere around the world
|
Posted: Wed Jun 14, 2006 10:17 pm Post subject: |
|
|
cloc3 wrote: | Secondo me, questo script fa il suo dovere, ma non è ottimale per una protezione adeguata della macchina. |
è il meglio che sono riuscito a fare in 15 minuti
Quote: | Inoltre, se non ho letto male, mi pare che l'unico strumento per determinare il raffreddamento sarebbe l'istruzione sleep.
Ma non è affatto detto che basti. A meno che il sistema non abbia un meccanismo di autoriduzione delle frequenze, come ad esempio il cpu frequency scaling, |
Ovviamente... infatti è pensato soprattutto per un portatile...
comunque anche se tieni un fisso a riposo per un minuto (e ha una ventola) qualcosa gli fa comunque....
In ogni caso penso che per raffreddare un fisso sia meglio comprare una ventola più grossa
Quote: | Ancora, se durante la compilazione, l'utente sta contemporaneamente lavorando a un processo grafico impegnativo, non otterrebbe alcun miglioramento. |
Se hai problemi di temperatura magari evita di ingolfare il processore...
Sennò significa che ti vuoi male...
E' pensato per portatili che abbiano problemi di temperatura... problemi che non dovrebbero essitere se il portatile fosse perfettamente funzionante (pulito e con ventola al 100% della funzionalità)
Quote: | La cosa che dovrebbe fare un programma, piuttosto, è proprio quella di utilizzare il cpu frequency scaling, modificando i parametri in sys/devices/system/cpu/cpu0/cpufreq, accessibili in modalità userspace . |
buona idea
Quote: | La temperatura va testata indipendentemente dalla compilazione e quando sale si abbassa la frequenza, senza interrompere alcun processo. |
Sicuramente meglio....
Ottima anche la soluzione di topper_harley
Una sola cosa... acpi_temperature che temperatura guarda?
Io ho due temperature e mi è capitato di sforarle entrambe anche non contemporaneamente.... _________________ Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne |
|
Back to top |
|
|
Ic3M4n Advocate
Joined: 02 Nov 2004 Posts: 3489 Location: Bergamo.
|
Posted: Wed Jun 14, 2006 10:48 pm Post subject: |
|
|
anche io utilizzo dalla rc1 speedfreq con il controllo sulla temperatura. io però l'ho configurato che parte ad una determinata soglia e mi scala a 1,2 GHz al posto che 1,6. in questo modo posso impostare una soglia che non devo mai superare. è possibile impostare differenti regole con soglie differenti. per esempio potrebbe essere che in determinate situazioni di calura anche l'1,2GHz non sia sufficiente per mantenere la temperatura entro limiti accettabili e quindi si potrebbe abbassare ulteriormente.
per quanto riguarda la temperatura ho notato che il mio processore solitamente durante compiti pesanti rimane intorno ai 78 gradi. la cosa un po' mi spaventa, mi sembrano tantissimi ma vedendo le impostazioni del bios sembrerebbe reggere fino ai 105. in ogni caso ho fatto in modo che non passi mai i 70° |
|
Back to top |
|
|
Cazzantonio Bodhisattva
Joined: 20 Mar 2004 Posts: 4514 Location: Somewere around the world
|
Posted: Wed Jun 14, 2006 11:54 pm Post subject: |
|
|
effettivamente tutte queste cose si possono fare con cpufreqd... non ci avevo pensato perché lo avevo sempre considerato solo un tool per salvare la batteria
bene mi sa che è un TIP inutile... pazienza... _________________ Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne |
|
Back to top |
|
|
topper_harley Guru
Joined: 05 Apr 2006 Posts: 363 Location: Treviso / Udine (Italy)
|
Posted: Wed Jun 14, 2006 11:58 pm Post subject: |
|
|
Cazzantonio wrote: |
Ottima anche la soluzione di topper_harley
Una sola cosa... acpi_temperature che temperatura guarda?
Io ho due temperature e mi è capitato di sforarle entrambe anche non contemporaneamente.... |
Il man non è molto chiaro a riguardo, comunque ho fatto delle prove impostando il file di conf a 62 invece che 75 (era decisamente alto per il mio portatile). Adesso ho lanciato una compilazione grossa e vedo che TZVL e TZCL (che sembrano essere sempre uguali) restano bloccate a 61/62° mentre la freq varia nel caso si alzi o si abbassi.
TZCR e TZVR comunque hanno un oscillazione di + - 2°, quindi nulla di preoccupante.
Code: |
andrea@localhost ~ $ cat /proc/acpi/thermal_zone/TZVL/temperature
temperature: 61 C
andrea@localhost ~ $ cat /proc/acpi/thermal_zone/TZCL/temperature
temperature: 61 C
andrea@localhost ~ $ cat /proc/acpi/thermal_zone/TZCR/temperature
temperature: 72 C
andrea@localhost ~ $ cat /proc/acpi/thermal_zone/TZVR/temperature
temperature: 64 C |
_________________ http://topperh.ath.cx
Jabber: topper_harley@jabber.org
ICQ: 224179391
MSN: Topper_Harley80@gmail.com
Last FM |
|
Back to top |
|
|
Ic3M4n Advocate
Joined: 02 Nov 2004 Posts: 3489 Location: Bergamo.
|
Posted: Thu Jun 15, 2006 12:36 am Post subject: |
|
|
se può essere utile posto anche la mia conf:
Code: | [Rule]
name=CPU Too Hot
acpi_temperature=74-77
cpu_interval=0-100
profile=Performance Low
[/Rule]
[Rule]
name=CPU Too Hot2
acpi_temperature=78-100
cpu_interval=0-100
profile=Powersave Low
[/Rule]
|
cpu too hot è già presente nel file di conf, ho solo modificato i valori per rendere possibile l'inserimento della seconda regola che prende il sopravvento se la temperatura sale oscenamente, cosa che non dovrebbe mai accadere ma che per la legge di Murphy può succedere. in questo caso il processore scala a 600MHz. che con il ventolone spento mi mantiene il processore sui 65°.
@topper_harley: io gli altri governor non li ho modificati e tutto funziona. se controlli la man puoi vedere che viene utilizzato il governor con il maggior punteggio, e quindi essendoci cpu too hot identico a performance high ma con l'aggiunta del punteggio per la temperatura viene attivato quest'ultimo che quindi scala la frequenza. l'inserire la temperatura negli altri governor è un di più che crea ridondanza e null'altro. |
|
Back to top |
|
|
topper_harley Guru
Joined: 05 Apr 2006 Posts: 363 Location: Treviso / Udine (Italy)
|
Posted: Thu Jun 15, 2006 4:56 am Post subject: |
|
|
Ic3M4n wrote: |
@topper_harley: io gli altri governor non li ho modificati e tutto funziona. se controlli la man puoi vedere che viene utilizzato il governor con il maggior punteggio, e quindi essendoci cpu too hot identico a performance high ma con l'aggiunta del punteggio per la temperatura viene attivato quest'ultimo che quindi scala la frequenza. l'inserire la temperatura negli altri governor è un di più che crea ridondanza e null'altro. |
Hai ragione
Gtazie!!! _________________ http://topperh.ath.cx
Jabber: topper_harley@jabber.org
ICQ: 224179391
MSN: Topper_Harley80@gmail.com
Last FM |
|
Back to top |
|
|
|