Nowe posty

Autor Wątek: cpufreqd - nie mogę kontrolować częstotliwości  (Przeczytany 7779 razy)

  • Gość
cpufreqd - nie mogę kontrolować częstotliwości
« dnia: 2011-08-27, 10:44:59 »
Zainstalowałem sobie cpufreqd, żeby móc pracować stale na 800Mhz (mniej się grzeje). Jednakże po instalce  dalej nie działa regulacja częstotliwości.

Moje moduły:

Cytuj
root@debian:/home/tomasz# lsmod | grep acpi
acpi_cpufreq            4915  1
processor              26259  3 acpi_cpufreq
root@debian:/home/tomasz# lsmod | grep cpufreq
cpufreq_powersave        602  1
cpufreq_conservative     4018  0
cpufreq_userspace       1444  0
acpi_cpufreq            4915  1
processor              26259  3 acpi_cpufreq
Pakiety:

Cytuj
root@debian:/home/tomasz# dpkg -l | grep cpufreq
ii  cpufreqd                             2.4.2-1                           fully configurable daemon for dynamic frequency and voltage scaling
ii  libcpufreq0                          007-1                             shared library to deal with the cpufreq Linux kernel feature
Co jeszcze powinienem doinstalować? (regulacja częstotliwością działa na Ubuntu ;-))
P.S. a cpufreq_ondemand nie ma ;-)

Konfiguracja cpufreqd:
Cytuj
# this is a comment
# see CPUFREQD.CONF(5) manpage for a complete reference
#
# Note: ondemand/conservative Profiles are disabled because
#       they are not available on many platforms.

[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
verbosity=4
#enable_remote=1
#remote_group=root
[/General]

#[acpi]
#acpid_socket=/var/run/acpid.socket
#[/acpi]

#[nforce2_atxp1]
#vcore_path=/some/path
#vcore_default=1500
#[/nforce2_atxp1]

#[sensors_plugin]
#sensors_conf=/some/file
#[/sensors_plugin]

[Profile]
name=On Demand High
minfreq=40%
maxfreq=100%
policy=ondemand
[/Profile]
#
#[Profile]
#name=On Demand Low
#minfreq=20%
#maxfreq=80%
#policy=ondemand
#[/Profile]

[Profile]
name=Performance High
minfreq=100%
maxfreq=100%
policy=performance
#exec_post=echo 8 > /proc/acpi/sony/brightness
[/Profile]

[Profile]
name=Performance Low
minfreq=80%
maxfreq=80%
policy=performance
[/Profile]

[Profile]
name=Powersave High
minfreq=60%
maxfreq=60%
policy=powersave
[/Profile]

[Profile]
name=Powersave Low
minfreq=40%
maxfreq=40%
policy=powersave
[/Profile]

#[Profile]
#name=Conservative High
#minfreq=33%
#maxfreq=100%
#policy=conservative
#[/Profile]
#
#[Profile]
#name=Conservative Low
#minfreq=0%
#maxfreq=66%
#policy=conservative
#[/Profile]

##
# Basic states
##
# when AC use performance mode
[Rule]
name=AC Rule
ac=on                    # (on/off)
profile=Performance High
[/Rule]
 
# stay in performance mode for the first minutes
[Rule]
name=AC Off - High Power
ac=off                   # (on/off)
battery_interval=70-100
#exec_post=echo 5 > /proc/acpi/sony/brightness
profile=Performance Low
[/Rule]

# conservative mode when not AC
[Rule]
name=AC Off - Medium Battery
ac=off                   # (on/off)
battery_interval=30-70
#exec_post=echo 3 > /proc/acpi/sony/brightness
profile=Powersave High
[/Rule]

# conservative mode when not AC
[Rule]
name=AC Off - Low Battery
ac=off                   # (on/off)
battery_interval=0-30
#exec_post=echo 3 > /proc/acpi/sony/brightness
profile=Powersave Low
[/Rule]

##
# Special Rules
##
# CPU Too hot!
[Rule]
name=CPU Too Hot
acpi_temperature=55-100
cpu_interval=50-100
profile=Performance Low
[/Rule]

# use performance mode if I'm watching a movie
# I don't care for batteries!
# But don't heat too much.
[Rule]
name=Movie Watcher
programs=xine,mplayer,gmplayer
battery_interval=0-100
acpi_temperature=0-60
cpu_interval=0-100
profile=Performance High
[/Rule]

  • Gość
cpufreqd - nie mogę kontrolować częstotliwości
« Odpowiedź #1 dnia: 2011-08-27, 12:36:40 »
cpufreqd jest daemonem który przystosowuje taktowanie procesora na podstawie określonych parametrów. Daje dużą kontrolę nad taktowaniem procesora — większą niż potrzebuje zdecydowana większość użytkowników.

Zainteresuj się raczej cpufrequtils, który działa w user-space i pozwala wybrać jeden z kilku profili. W nim również w banalny sposób określisz to co najwyraźniej chcesz osiągnąć, czyli „nie taktuj poniżej 800 MHz, choćby się waliło i paliło”.

Jak już go zainstalujesz, w pliku /etc/default/cpufrequtils (domyślnie go nie ma, utwórz go sobie) dopisz linijkę:
MIN_SPEED=800
I potem jako root:
/etc/init.d/cpufrequtils start
Powinno być na tyle.

Jeżeli chcesz, możesz też określić zmienną MAX_SPEED. Ustawiając MAX_SPEED i MIN_SPEED na tę samą wielkość, osiągniesz efekt zbliżony do
cpufreq-set -f 800
Debianowy skrypt z /etc/init.d nie potrafi określić parametru -f, więc możesz ewentualnie powyższe polecenie dopisać sobie do jakiegoś skryptu uruchomieniowego (rc.local, Autostart Twojego środowiska czy coś podobnego).

chmooreck

  • Gość
cpufreqd - nie mogę kontrolować częstotliwości
« Odpowiedź #2 dnia: 2011-08-27, 13:12:45 »
Jeszcze prościej można to osiągnąć przez zmianę zarządcy stanów procesora. cpufreq-info wyświetli ci dostępnych zarządców, Ciebie interesuje 'powersave'. Ustawia się programem cpufreq-set.
Osobiście używam 'ondemand' - przechodzi w wyższe stany jeśli jest zapotrzebowanie, co sprowadza sie praktycznie tylko do kompilacji programów, ew. czasami przy uruchamianiu czegoś.

  • Gość
cpufreqd - nie mogę kontrolować częstotliwości
« Odpowiedź #3 dnia: 2011-08-27, 13:37:04 »
chmooreck: w sumie to zależy jak interpretować zdanie
Cytuj
móc pracować stale na 800Mhz (mniej się grzeje)
Ja pierwotnie uznałem, że chodzi o to, że taktowanie ma nie wchodzić powyżej 800 MHz. Później jednak stwierdziłem, że może chodzić o to, że jeśli schodzi poniżej 800MHz, to się procesor grzeje (co byłoby trochę dziwne, ale życie bywa zaskakujące), dlatego zmieniłem post.

Poza tym:
1. powersave ustala taktowanie na najniższe z obsługiwanych przez procesor. Nie wiadomo, czy w przypadku OP najniższe będzie właśnie 800MHz, czy może mniejsza wartość (czego OP może nie chcieć).

2. cpufreq-set jest częścią pakietu cpufrequtils, którego OP nie ma zainstalowanego.

3. Żeby ustalić zarządcę, i tak trzeba zmienić zawartość /etc/default/cpufrequtils.

chmooreck

  • Gość
cpufreqd - nie mogę kontrolować częstotliwości
« Odpowiedź #4 dnia: 2011-08-27, 14:20:11 »
Cytat: Minio
3. Żeby ustalić zarządcę, i tak trzeba zmienić zawartość /etc/default/cpufrequtils.
To juz zależy od dystrybucji. mozna za każdym razem ustawiać ręcznie - jak ktoś lubi ;-)

btw... jeśli chcesz jednak używać cpufreqd (nigdy nie wiedziałem po co, skoro załatwia mi to ondemand) zarządca powinien być ustawiony na 'userspace'

  • Gość
cpufreqd - nie mogę kontrolować częstotliwości
« Odpowiedź #5 dnia: 2011-08-27, 15:08:27 »
Cytat: chmooreck
To juz zależy od dystrybucji.
Wątkotwórca ma Debiana, więc powinien to robić zgodnie z tym, co przewidzieli twórcy Debiana.

Poza tym w swoim poście wspomniałem o innych możliwościach.

chmooreck

  • Gość
cpufreqd - nie mogę kontrolować częstotliwości
« Odpowiedź #6 dnia: 2011-08-28, 08:41:14 »
Ale być może będzie z tego korzystał również ktoś, kto używa innej dystrybucji ;-)

WizardNumberNext

  • Gość
cpufreqd - nie mogę kontrolować częstotliwości
« Odpowiedź #7 dnia: 2011-08-28, 12:29:54 »
Cytat: Minio
cpufreq-set -f 800
cpufreq przyjmuje częstotliwość w kHz, nie MHz! Częstotliwość nie musi być precyzyjna!

Pozatym tak nie ustawisz częstotliwości, ponieważ domyślnym regulatorem jest ondemand.

Aby ręcznie ustawić częstotliwość wykonaj
cpufreq-set -g userspace --f 800000
Ja polecam regulator conservative (najlepiej go lekko zmodyfikować), ponieważ nie skacze od razu na max, tylko wchodzi krokowo. Problem w tym, że zmniejsza częstotliwość w ten sam sposób - też krokowo.

  • Gość
cpufreqd - nie mogę kontrolować częstotliwości
« Odpowiedź #8 dnia: 2011-08-29, 11:52:04 »
Zainstalowałem cpufreq-utils

Cytuj
root@debian:/home/tomasz# lsmod | grep cpufreq
cpufreq_stats           1940  0
cpufreq_powersave        602  0
cpufreq_conservative     4018  0
cpufreq_userspace       1444  1
acpi_cpufreq            4915  1
processor              26259  3 acpi_cpufreq
root@debian:/home/tomasz# cpufreq-set -g userspace -u 800K -d 800K
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?
--EDIT-- już działa, nie wiem dlaczego wcześniej nie działło. Jakie moduły trzeba mieć by działało tak ogólnie