Nowe posty

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

Offline

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 272
    • Zobacz profil
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]

Offline

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 263
    • Zobacz profil
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).
Natura dała nam dwoje oczu, dwoje uszu, ale tylko jeden język po to, abyśmy więcej patrzyli i słuchali, niż mówili. -- konwencjonalnie Sokrates

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
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ś.

Offline

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 263
    • Zobacz profil
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.
Natura dała nam dwoje oczu, dwoje uszu, ale tylko jeden język po to, abyśmy więcej patrzyli i słuchali, niż mówili. -- konwencjonalnie Sokrates

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
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'

Offline

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 263
    • Zobacz profil
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.
Natura dała nam dwoje oczu, dwoje uszu, ale tylko jeden język po to, abyśmy więcej patrzyli i słuchali, niż mówili. -- konwencjonalnie Sokrates

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
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 ;-)

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 225
    • Zobacz profil
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.

Offline

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 272
    • Zobacz profil
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