Compilazione Kernel - CPU Frequency Scaling

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
scartozzo
Packager
Packager
Messaggi: 254
Iscritto il: mar 8 feb 2005, 0:00
Nome Cognome: Flavio Gallucci
Kernel: 3.19
Desktop: fluxbox
Distribuzione: ScarTOzzoLinux
Località: Torino

Compilazione Kernel - CPU Frequency Scaling

Messaggio da scartozzo »

Ho un notebook e al fine di ottimizzare l'uso della batteria vorrei impostare i parametri del kernel in modo appropriato.

In "Default CPUFreq governor mi da due possibilità:
1) performance
2) userspace

e nelle righe successive inserisce
'performance' governor
'powersave' governor
'userspace' governor for userspace frequency scaling
'ondemand' cpu policy governor
'conservative' cpufreq governor

IGNORO:
1) la relazione tra "Default CPUFreq ..." e le scelte delle righe successive.
2) Vorrei attivare il powersave o il conservative (mi pare d'aver capito che sono la scelta migliore per il portatile)
3) Come faccio in ogni caso a regolare successivemente la frequenza della CPU (ammesso che sia necessario)?

Avatar utente
prometeo79
Linux 4.x
Linux 4.x
Messaggi: 1278
Iscritto il: gio 17 mar 2005, 0:00
Slackware: 12
Località: Torino

Messaggio da prometeo79 »

Default indica lo stato della cpu di...default, cioè se la mia cpu ha due frequenze di scaling, settando la modalità userspace come default, all'avvio del pc la mia cpu girerà alla frequenza più bassa, con performance alla frequenza più alta.
Gli altri governor puoi metterli pure tutti se ti va:

'performance' vedi sopra
'powersave' tiene la cpu sempre a regimi minimi
'ondemand' e 'conservetive' gestiscono la cpu in base alle esigenze del momento.

Puoi cambiare lo stato nella dir /sys/devices/system/cpu/cpu0/cpufreq/ o da kde con la comoda utility presente

Avatar utente
castcarlitos
Linux 0.x
Linux 0.x
Messaggi: 67
Iscritto il: mar 20 apr 2004, 0:00
Slackware: current
Località: Bergamo
Contatta:

Messaggio da castcarlitos »

No, default indica il governor della cpu che viene utilizzato di... default. Ovviamente, quando il sistema parte, la cpu deve avere un governor... quella voce indica quello di defautl, che può essere cambiato ad avviamento avvenuto...
cioè se la mia cpu ha due frequenze di scaling,
Gli stati di frequenza attraverso i quali una cpu può passare sono molti più di due... Normalmente sono ben otto...
'performance' vedi sopra
'powersave' tiene la cpu sempre a regimi minimi
'ondemand' e 'conservetive' gestiscono la cpu in base alle esigenze del momento.
Performance = max frequenza CPU possibile sempre dovunque e comunque :)
Powersave = minima frequenza CPU possibile sempre dovunque e comunque :)
Userspace = la frequenza CPU può essere modificata a piacere in user-space, con appositi software o scrivendo in un file in /sys/... (ora non ricordo);
Ondemand = "su richiesta" la frequenza si modifica in funzione delle richieste..
Conservetive = cerca di mantenere la frequenza della CPU il più in basso possibile, compatibilmente con il lavoro da svolgere...

Io sul mio laptop uso come default performance se alimentato, ondemand a betterie fino al 20% di carica residua e poi passa a powersave e dopo si spegne :) Guarda ad esempio l'applet di kde che ti viene mostrata nel pannello riguardante lo stato delle batterie/alimentazione, li puoi impostare i tuoi valori, tra cui il governor :P

Ho un P4 3200MHz che ha 8 throttling states, uno ogni 400MHz; percui il min è proprio 400MHz... Quando gira così i lavori che puoi fare sono veramente pochi....

Bye :)

Avatar utente
prometeo79
Linux 4.x
Linux 4.x
Messaggi: 1278
Iscritto il: gio 17 mar 2005, 0:00
Slackware: 12
Località: Torino

Messaggio da prometeo79 »

castcarlitos ha scritto:No, default indica il governor della cpu che viene utilizzato di... default. Ovviamente, quando il sistema parte, la cpu deve avere un governor... quella voce indica quello di defautl, che può essere cambiato ad avviamento avvenuto...
Mi sono espresso male, ma volevo dire questo
castcarlitos ha scritto:
cioè se la mia cpu ha due frequenze di scaling,
Gli stati di frequenza attraverso i quali una cpu può passare sono molti più di due... Normalmente sono ben otto...
Con slamd64 e un turion la mia cpu lavora solo a due frequenze
castcarlitos ha scritto:Userspace = la frequenza CPU può essere modificata a piacere in user-space, con appositi software o scrivendo in un file in /sys/... (ora non ricordo);
Mi potresti spiegare un pò meglio questa cosa? Mi servirebbe molto poter scalare verso il basso la mia cpu. Grazie

Avatar utente
castcarlitos
Linux 0.x
Linux 0.x
Messaggi: 67
Iscritto il: mar 20 apr 2004, 0:00
Slackware: current
Località: Bergamo
Contatta:

Messaggio da castcarlitos »

Con slamd64 e un turion la mia cpu lavora solo a due frequenze
Io Slamd l'ho instalata solo un paio di volte e ho avuto sempre un po' di problemi... Comunque la distro non influisce, è ilkernel che gestisce ovviamente il frequency scaling...

Prova a guardare qui:

Codice: Seleziona tutto

/sys/devices/system/cpu/cpu0/cpufreq/    
(se hai 2 cpu (tipo HT o dual-core) quella di riferimento è la 0)

I files che trovi sono ben descritti dal nome... Comunque per controllare quanti stati di scaling possiede la tua cpu guarda:

Codice: Seleziona tutto

scaling_available_frequencies
invece per sapere i governor che hai:

Codice: Seleziona tutto

scaling_available_governors
Per modivicare il governor in uso puoi utilizzare una semplicissima istruzione:

Codice: Seleziona tutto

#echo "NOME_GOVERNOR" > scaling_governor
se impostato su User-space allora puoi eseguire:

Codice: Seleziona tutto

#echo "FREQUENZA_VOLUTA" > scaling_setspeed
Dove "FREQUENZA_VOLUTA" deve essere una frequenza listata nel file: scaling_available_frequencies

ad esempio:

Codice: Seleziona tutto

#echo 2800000 > scaling_setspeed
Come software da utilizzare in userspace, invece di compiere queste operazioni a mano, non ne conosco molti, ho utilizzato qualche volta gkrellm2 con l'apposito plug-in per il frequency scaling...

Spero di essere stato chiaro :)

Bye :D

Avatar utente
prometeo79
Linux 4.x
Linux 4.x
Messaggi: 1278
Iscritto il: gio 17 mar 2005, 0:00
Slackware: 12
Località: Torino

Messaggio da prometeo79 »

castcarlitos ha scritto:
Con slamd64 e un turion la mia cpu lavora solo a due frequenze
Io Slamd l'ho instalata solo un paio di volte e ho avuto sempre un po' di problemi... Comunque la distro non influisce, è ilkernel che gestisce ovviamente il frequency scaling...

Prova a guardare qui:

Codice: Seleziona tutto

/sys/devices/system/cpu/cpu0/cpufreq/    
(se hai 2 cpu (tipo HT o dual-core) quella di riferimento è la 0)

I files che trovi sono ben descritti dal nome... Comunque per controllare quanti stati di scaling possiede la tua cpu guarda:

Codice: Seleziona tutto

scaling_available_frequencies
invece per sapere i governor che hai:

Codice: Seleziona tutto

scaling_available_governors
Per modivicare il governor in uso puoi utilizzare una semplicissima istruzione:

Codice: Seleziona tutto

#echo "NOME_GOVERNOR" > scaling_governor
se impostato su User-space allora puoi eseguire:

Codice: Seleziona tutto

#echo "FREQUENZA_VOLUTA" > scaling_setspeed
Dove "FREQUENZA_VOLUTA" deve essere una frequenza listata nel file: scaling_available_frequencies

ad esempio:

Codice: Seleziona tutto

#echo 2800000 > scaling_setspeed
Come software da utilizzare in userspace, invece di compiere queste operazioni a mano, non ne conosco molti, ho utilizzato qualche volta gkrellm2 con l'apposito plug-in per il frequency scaling...

Spero di essere stato chiaro :)

Bye :D
Ok. Questa roba ormai la conosco a memoria, il problema è che lo scaling_setspeed non prende valori inferiori a 800000, probabilmente perchè sto utilizzando le specifiche per athlon64, peccato non ci siano per il turion

Avatar utente
airex
Linux 1.x
Linux 1.x
Messaggi: 121
Iscritto il: sab 8 lug 2006, 11:03
Slackware: -current
Desktop: xfce
Distribuzione: Slackware64
Località: Milano
Contatta:

Messaggio da airex »

i vari lvielli di ferquenza (e relativi voltaggi) permessi sono cablati nel kernel /usr/src/linux/arch/tua_arch/kernel/cpu/cpufreq/file_tuo_tipo_scaling

io sul mio centrino ho messo mano al file speedstep-centrino.c andando a variare le tensioni operative ma si puo' anche modificare il numero/valore dei diversi livelli energetici; per funzionare poi si deve, in fase di compilazione del kernel, indicare di non rispettare per forza le specifiche acpi della casa.

bisogna comunque stare attenti e andaer a piccoli passi

Avatar utente
prometeo79
Linux 4.x
Linux 4.x
Messaggi: 1278
Iscritto il: gio 17 mar 2005, 0:00
Slackware: 12
Località: Torino

Messaggio da prometeo79 »

airex ha scritto:i vari lvielli di ferquenza (e relativi voltaggi) permessi sono cablati nel kernel /usr/src/linux/arch/tua_arch/kernel/cpu/cpufreq/file_tuo_tipo_scaling

io sul mio centrino ho messo mano al file speedstep-centrino.c andando a variare le tensioni operative ma si puo' anche modificare il numero/valore dei diversi livelli energetici; per funzionare poi si deve, in fase di compilazione del kernel, indicare di non rispettare per forza le specifiche acpi della casa.

bisogna comunque stare attenti e andaer a piccoli passi

GRANDISSSSIMO!!!!

Questa sera lo proverò sicuramente. L'opzione di non rispettare le specifiche acpi dove la trovo?

Avatar utente
airex
Linux 1.x
Linux 1.x
Messaggi: 121
Iscritto il: sab 8 lug 2006, 11:03
Slackware: -current
Desktop: xfce
Distribuzione: Slackware64
Località: Milano
Contatta:

Messaggio da airex »

non mi ricordo di preciso il nome dell'opzione e per questo ti ho indicato il "senso", comunque appare nel menu di configurazione dello scaling quando stai preparando il kernel

Avatar utente
prometeo79
Linux 4.x
Linux 4.x
Messaggi: 1278
Iscritto il: gio 17 mar 2005, 0:00
Slackware: 12
Località: Torino

Messaggio da prometeo79 »

airex ha scritto:non mi ricordo di preciso il nome dell'opzione e per questo ti ho indicato il "senso", comunque appare nel menu di configurazione dello scaling quando stai preparando il kernel
Controllerò. Grazie mille

Avatar utente
prometeo79
Linux 4.x
Linux 4.x
Messaggi: 1278
Iscritto il: gio 17 mar 2005, 0:00
Slackware: 12
Località: Torino

Messaggio da prometeo79 »

Ok. Ce l'ho

Codice: Seleziona tutto

static int cpu_family = CPU_OPTERON;

#ifndef CONFIG_SMP
static cpumask_t cpu_core_map[1];
#endif

/* Return a frequency in MHz, given an input fid */
static u32 find_freq_from_fid(u32 fid)
{
        return 800 + (fid * 100);
}


/* Return a frequency in KHz, given an input fid */
static u32 find_khz_freq_from_fid(u32 fid)
{
        return 1000 * find_freq_from_fid(fid);
}

/* Return a frequency in MHz, given an input fid and did */
static u32 find_freq_from_fiddid(u32 fid, u32 did)
{
        return 100 * (fid + 0x10) >> did;
}

static u32 find_khz_freq_from_fiddid(u32 fid, u32 did)
{
        return 1000 * find_freq_from_fiddid(fid, did);
devo modificare la riga relativa al /* Return a frequency in MHz, given an input fid */ ?

Avatar utente
airex
Linux 1.x
Linux 1.x
Messaggi: 121
Iscritto il: sab 8 lug 2006, 11:03
Slackware: -current
Desktop: xfce
Distribuzione: Slackware64
Località: Milano
Contatta:

Messaggio da airex »

che fai stai modificando?

io sto guardando powernow-k8.h ed è zeppo di utili informazioni

cerca la funzione fill_powernow_table e cio' che è collegata ad essa, pare essere lei a creare i possibili step di frequenza-voltaggio

ps.
la sezione per centrino è terribilmente piu' semplice da modificare!

1pixel
Linux 0.x
Linux 0.x
Messaggi: 44
Iscritto il: mer 21 dic 2005, 15:38

Messaggio da 1pixel »

io sapevo che il conservative è tipo l'ondemand ma era più "inerziale" e infatti io uso quello con il mio core duo

Rispondi