Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[TIP] emergere tenendo d'occhio la temperatura
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Wed Jun 14, 2006 3:22 pm    Post subject: [TIP] emergere tenendo d'occhio la temperatura Reply with quote

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 :wink: (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
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4788
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Wed Jun 14, 2006 7:56 pm    Post subject: Reply with quote

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
View user's profile Send private message
topper_harley
Guru
Guru


Joined: 05 Apr 2006
Posts: 363
Location: Treviso / Udine (Italy)

PostPosted: Wed Jun 14, 2006 9:54 pm    Post subject: Reply with quote

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
View user's profile Send private message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Wed Jun 14, 2006 10:17 pm    Post subject: Reply with quote

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 :P
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... :roll:
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 :wink: (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
View user's profile Send private message
Ic3M4n
Advocate
Advocate


Joined: 02 Nov 2004
Posts: 3489
Location: Bergamo.

PostPosted: Wed Jun 14, 2006 10:48 pm    Post subject: Reply with quote

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
View user's profile Send private message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Wed Jun 14, 2006 11:54 pm    Post subject: Reply with quote

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
View user's profile Send private message
topper_harley
Guru
Guru


Joined: 05 Apr 2006
Posts: 363
Location: Treviso / Udine (Italy)

PostPosted: Wed Jun 14, 2006 11:58 pm    Post subject: Reply with quote

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
View user's profile Send private message
Ic3M4n
Advocate
Advocate


Joined: 02 Nov 2004
Posts: 3489
Location: Bergamo.

PostPosted: Thu Jun 15, 2006 12:36 am    Post subject: Reply with quote

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
View user's profile Send private message
topper_harley
Guru
Guru


Joined: 05 Apr 2006
Posts: 363
Location: Treviso / Udine (Italy)

PostPosted: Thu Jun 15, 2006 4:56 am    Post subject: Reply with quote

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 :D

Gtazie!!!
_________________
http://topperh.ath.cx
Jabber: topper_harley@jabber.org
ICQ: 224179391
MSN: Topper_Harley80@gmail.com
Last FM
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum