Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-04-22 01:42:14

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

[SOLVED] Skalowanie procka

Siedzę na archu i próbuję ustawić skalowanie procesora. Generalnie mam tutaj zainstalowanego openboxa i trochę śmieci. W każdym razie postępując według archwiki, nie do końca wynik jest taki jakby tego oczekiwać. Co ciekawe wyniki z debiana i archa się różnią -- chodzi o to jaki tryb może mieć procek.

Doinstalowałem cpupower i próbowałem go skonfigurować (https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling) :

Trochę logów:

Kod:

root:/home/morfik# ls -al /lib/modules/$(uname -r)/kernel/drivers/cpufreq/
total 136K
drwxr-xr-x  2 root root 4.0K Apr 13 12:55 ./
drwxr-xr-x 64 root root 4.0K Apr 13 12:55 ../
-rw-r--r--  1 root root 9.2K Apr 13 12:55 acpi-cpufreq.ko.gz
-rw-r--r--  1 root root 3.4K Apr 13 12:55 cpufreq_conservative.ko.gz
-rw-r--r--  1 root root 3.7K Apr 13 12:55 cpufreq-nforce2.ko.gz
-rw-r--r--  1 root root 1.4K Apr 13 12:55 cpufreq_powersave.ko.gz
-rw-r--r--  1 root root 3.7K Apr 13 12:55 cpufreq_stats.ko.gz
-rw-r--r--  1 root root 2.9K Apr 13 12:55 cpufreq_userspace.ko.gz
-rw-r--r--  1 root root 4.4K Apr 13 12:55 e_powersaver.ko.gz
-rw-r--r--  1 root root 4.1K Apr 13 12:55 gx-suspmod.ko.gz
-rw-r--r--  1 root root 8.8K Apr 13 12:55 longhaul.ko.gz
-rw-r--r--  1 root root 3.1K Apr 13 12:55 longrun.ko.gz
-rw-r--r--  1 root root 1.6K Apr 13 12:55 mperf.ko.gz
-rw-r--r--  1 root root 3.5K Apr 13 12:55 p4-clockmod.ko.gz
-rw-r--r--  1 root root 5.6K Apr 13 12:55 pcc-cpufreq.ko.gz
-rw-r--r--  1 root root 2.6K Apr 13 12:55 powernow-k6.ko.gz
-rw-r--r--  1 root root 6.7K Apr 13 12:55 powernow-k7.ko.gz
-rw-r--r--  1 root root  12K Apr 13 12:55 powernow-k8.ko.gz
-rw-r--r--  1 root root 4.4K Apr 13 12:55 speedstep-ich.ko.gz
-rw-r--r--  1 root root 4.8K Apr 13 12:55 speedstep-lib.ko.gz
-rw-r--r--  1 root root 5.0K Apr 13 12:55 speedstep-smi.ko.gz

Kod:

root:/home/morfik# cat /etc/modules-load.d/p4_clockmod.conf
p4_clockmod

Tak wygląda procek:

Kod:

root:/home/morfik# cpupower frequency-info
analyzing CPU 0:
  driver: p4-clockmod
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.00 ms.
  hardware limits: 375 MHz - 3.00 GHz
  available frequency steps: 375 MHz, 750 MHz, 1.13 GHz, 1.50 GHz, 1.88 GHz, 2.25 GHz, 2.63 GHz, 3.00 GHz
  available cpufreq governors: ondemand, performance
  current policy: frequency should be within 375 MHz and 3.00 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 3.00 GHz (asserted by call to hardware).
  boost state support:
    Supported: no
    Active: no

Jak widać ma 375 MHz, 750 MHz, 1.13 GHz, 1.50 GHz, 1.88 GHz, 2.25 GHz, 2.63 GHz, 3.00 GHz -- sprawdzałem, ręcznie można ustawić każdą wartość. Choć przy 375 MHz troszeczkę się komp przycina. Można na noc przestawić i puścić qbittorenta niech wysyła obrazy z linuxem xD Co ciekawe, na debianie mam 2 tryby 2.40GHz oraz 3.00 GHz i nie idzie ustawić innej, za to procek przeważnie chodzi 2.40GHz.

Testowe ustawienie wartości:

Kod:

root:/home/morfik# modprobe cpufreq_ondemand
root:/home/morfik# 

root:/home/morfik# cpupower frequency-set -g ondemand
Setting cpu: 0
Setting cpu: 1
root:/home/morfik# cpupower frequency-set -u 3GHz
Setting cpu: 0
Setting cpu: 1
root:/home/morfik# cpupower frequency-set -d  375MHz
Setting cpu: 0
Setting cpu: 1

Ale coś nie działa:

Kod:

root:/home/morfik# lsmod 
Module                  Size  Used by
bnep                    9114  2 
bluetooth             265172  7 bnep
rfkill                 12625  2 bluetooth
tun                    15928  2 
ipt_REJECT              1957  3 
nf_conntrack_ipv4       7562  1 
nf_defrag_ipv4           983  1 nf_conntrack_ipv4
xt_conntrack            2677  1 
nf_conntrack           57430  2 xt_conntrack,nf_conntrack_ipv4
iptable_filter          1092  1 
ip_tables              10034  1 iptable_filter
x_tables               11450  4 ip_tables,xt_conntrack,iptable_filter,ipt_REJECT
snd_ca0106             29677  2 
snd_ac97_codec         89368  1 snd_ca0106
ac97_bus                 874  1 snd_ac97_codec
snd_rawmidi            14829  1 snd_ca0106
snd_seq_device          4252  1 snd_rawmidi
hid_a4tech              1616  0 
hid_generic              741  0 
snd_pcm                62883  2 snd_ac97_codec,snd_ca0106
psmouse                77896  0 
snd_page_alloc          6038  2 snd_pcm,snd_ca0106
snd_timer              14846  1 snd_pcm
snd                    44486  10 snd_ac97_codec,snd_timer,snd_pcm,snd_rawmidi,snd_seq_device,snd_ca0106
iTCO_wdt                4471  0 
soundcore               4386  1 snd
iTCO_vendor_support     1545  1 iTCO_wdt
gpio_ich                3556  0 
microcode              10864  0 
ppdev                   6030  0 
serio_raw               4001  0 
lpc_ich                10077  0 
pcspkr                  1487  0 
intel_agp               8720  0 
intel_gtt              10212  1 intel_agp
i2c_i801                9777  0 
of_i2c                  1774  1 i2c_i801
evdev                   7560  7 
parport_pc             26734  0 
parport                26041  2 ppdev,parport_pc
mperf                    991  0 
processor              24359  0 
8139too                22439  0 
mii                     3375  1 8139too
p4_clockmod             3260  0 
speedstep_lib           5071  1 p4_clockmod
it87                   20183  0 
hwmon_vid               2376  1 it87
ext4                  430791  6 
crc16                   1091  2 ext4,bluetooth
jbd2                   65750  1 ext4
mbcache                 4322  1 ext4
usbhid                 35987  0 
hid                    69458  3 hid_a4tech,hid_generic,usbhid
usb_storage            36791  1 
sr_mod                 12924  0 
cdrom                  30060  1 sr_mod
sd_mod                 28242  9 
ata_generic             2434  0 
pata_acpi               2367  0 
ata_piix               20760  7 
libata                146424  3 pata_acpi,ata_generic,ata_piix
scsi_mod              110134  4 usb_storage,libata,sd_mod,sr_mod
ehci_pci                3404  0 
uhci_hcd               21448  0 
ehci_hcd               42551  1 ehci_pci
usbcore               148267  5 uhci_hcd,usb_storage,ehci_hcd,ehci_pci,usbhid
usb_common               622  1 usbcore
nouveau               810803  2 
button                  3717  1 nouveau
video                   9834  1 nouveau
mxm_wmi                 1135  1 nouveau
wmi                     7163  2 mxm_wmi,nouveau
i2c_algo_bit            4583  1 nouveau
drm_kms_helper         31122  1 nouveau
ttm                    46707  1 nouveau
drm                   181032  4 ttm,drm_kms_helper,nouveau
agpgart                22207  4 drm,ttm,intel_agp,intel_gtt
i2c_core               18994  6 drm,i2c_i801,drm_kms_helper,i2c_algo_bit,of_i2c,nouveau
more /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

Nie ma tam modułu cpufreq_ondemand . Nie wiem czy to tak powinno być, pisali, że niby ma się ładować automatycznie, chyba że wskazano inaczej.

Szukając na sieci znalazłem jeszcze takie coś:

Kod:

root:/home/morfik# more /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
375000 750000 1125000 1500000 1875000 2250000 2625000 3000000 
root:/home/morfik# more /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
ondemand performance

Ale:

Kod:

root:/home/morfik# more /proc/cpuinfo | grep MHz
cpu MHz        : 3000.000
cpu MHz        : 3000.000

Spróbowałem zatem:

Kod:

root:/sys/devices/system/cpu/cpu0/cpufreq# echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
root:/sys/devices/system/cpu/cpu0/cpufreq# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave
root:/sys/devices/system/cpu/cpu0/cpufreq# echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
root:/sys/devices/system/cpu/cpu0/cpufreq# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance
root:/sys/devices/system/cpu/cpu0/cpufreq# echo dupa > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
bash: echo: write error: Invalid argument

Czyli jak wpisze powersave to przełącza się w tryb 375Mhz ale jak mu wpiszę ondemand to dalej jest performance. :]

Niemniej jednak po wpisaniu:

Kod:

root:/sys/devices/system/cpu/cpu0/cpufreq# cpupower frequency-info
analyzing CPU 0:
  driver: p4-clockmod
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.00 ms.
  hardware limits: 375 MHz - 3.00 GHz
  available frequency steps: 375 MHz, 750 MHz, 1.13 GHz, 1.50 GHz, 1.88 GHz, 2.25 GHz, 2.63 GHz, 3.00 GHz
  available cpufreq governors: powersave, ondemand, performance
  current policy: frequency should be within 375 MHz and 3.00 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 375 MHz (asserted by call to hardware).
  cpufreq stats: 375 MHz:10.72%, 750 MHz:0.00%, 1.13 GHz:0.00%, 1.50 GHz:0.00%, 1.88 GHz:0.00%, 2.25 GHz:0.00%, 2.63 GHz:0.00%, 3.00 GHz:89.28%  (301)
  boost state support:
    Supported: no
    Active: no
root:/sys/devices/system/cpu/cpu0/cpufreq#

Są staty 375 MHz:10.72%, 750 MHz:0.00%, 1.13 GHz:0.00%, 1.50 GHz:0.00%, 1.88 GHz:0.00%, 2.25 GHz:0.00%, 2.63 GHz:0.00%, 3.00 GHz:89.28%  (301) -- Problem, że procek się nie przełącza, a ten 10% na 375MHz ręcznie nabiłem. Tak to ciągle chodzi full.

To jest procek w razie czego:

Kod:

root:/sys/devices/system/cpu/cpu0/cpufreq# cat /proc/cpuinfo 
processor    : 0
vendor_id    : GenuineIntel
cpu family    : 15
model        : 6
model name    : Intel(R) Pentium(R) D CPU 3.00GHz
stepping    : 4
microcode    : 0x4
cpu MHz        : 3000.000
cache size    : 2048 KB
physical id    : 0
siblings    : 2
core id        : 0
cpu cores    : 2
apicid        : 0
initial apicid    : 0
fdiv_bug    : no
hlt_bug        : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 6
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pebs bts pni dtes64 monitor ds_cpl est cid cx16 xtpr pdcm lahf_lm
bogomips    : 6031.99
clflush size    : 64
cache_alignment    : 128
address sizes    : 36 bits physical, 48 bits virtual
power management:

processor    : 1
vendor_id    : GenuineIntel
cpu family    : 15
model        : 6
model name    : Intel(R) Pentium(R) D CPU 3.00GHz
stepping    : 4
microcode    : 0x4
cpu MHz        : 3000.000
cache size    : 2048 KB
physical id    : 0
siblings    : 2
core id        : 1
cpu cores    : 2
apicid        : 1
initial apicid    : 1
fdiv_bug    : no
hlt_bug        : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 6
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pebs bts pni dtes64 monitor ds_cpl est cid cx16 xtpr pdcm lahf_lm
bogomips    : 6031.99
clflush size    : 64
cache_alignment    : 128
address sizes    : 36 bits physical, 48 bits virtual
power management:

Tutaj jeszcze:

Kod:

root:/home/morfik# cat /etc/default/cpupower
# Define CPUs governor
# valid governors: ondemand, performance, powersave, conservative, userspace.
governor='ondemand'

# Limit frequency range
# Valid suffixes: Hz, kHz (default), MHz, GHz, THz
 min_freq="375MHz"
 max_freq="3.01GHz"

# Specific frequency to be set.
# Requires userspace governor to be available.
# Do not set governor field if you use this one.
#freq=

# Utilizes cores in one processor package/socket first before processes are 
# scheduled to other processor packages/sockets.
# See man (1) CPUPOWER-SET for additional details.
#mc_scheduler=

# Utilizes thread siblings of one processor core first before processes are
# scheduled to other cores. See man (1) CPUPOWER-SET for additional details.
#smp_scheduler=

#  Sets a register on supported Intel processore which allows software to convey
# its policy for the relative importance of performance versus energy savings to
# the  processor. See man (1) CPUPOWER-SET for additional details.
#perf_bias=

# vim:set ts=2 sw=2 ft=sh et:

i systemd:

Kod:

root:/home/morfik# systemctl list-unit-files | grep cpu
cpupower.service                        enabled 
root:/home/morfik# systemctl status cpupower.service
cpupower.service - Apply cpupower configuration
   Loaded: loaded (/usr/lib/systemd/system/cpupower.service; enabled)
   Active: active (exited) since Sun 2013-04-21 23:55:31 CEST; 13min ago
  Process: 270 ExecStart=/usr/lib/systemd/scripts/cpupower (code=exited, status=0/SUCCESS)

Jakieś pomysły?

Ostatnio edytowany przez morfik (2013-04-25 18:00:59)

Offline

 

#2  2013-04-22 10:21:28

  P@blo - Nadworny matematyk

P@blo
Nadworny matematyk
Skąd: Wrocław v Jasło
Zarejestrowany: 2010-11-11

Re: [SOLVED] Skalowanie procka

Rozumiem. że cpupower(arch)=cpufreq-utils(debian)?

Jądro twoje?


ThinkPadX220i
| Procesor: Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz |
|  Debian: sid   |   Arch: amd64   |   Sound: alsa   |
| No DE | WM: DWM  |  DM: .bash_profile  |  BIOS+MBR |

Offline

 

#3  2013-04-22 12:00:34

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Skalowanie procka

Na debianie jest cpufrequtils na archu cpupower.

Na debianie:

Kod:

morfik:~$ cpufreq-info 
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 160 us.
  hardware limits: 2.40 GHz - 3.00 GHz
  available frequency steps: 3.00 GHz, 2.40 GHz
  available cpufreq governors: conservative, powersave, userspace, ondemand, performance
  current policy: frequency should be within 2.40 GHz and 3.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 2.40 GHz.
  cpufreq stats: 3.00 GHz:2,65%, 2.40 GHz:97,35%  (13312)
analyzing CPU 1:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 1
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 160 us.
  hardware limits: 2.40 GHz - 3.00 GHz
  available frequency steps: 3.00 GHz, 2.40 GHz
  available cpufreq governors: conservative, powersave, userspace, ondemand, performance
  current policy: frequency should be within 2.40 GHz and 3.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 2.40 GHz.
  cpufreq stats: 3.00 GHz:3,97%, 2.40 GHz:96,03%  (171)
morfik:~$

driver: acpi-cpufreq -- tutaj na debianie jest inny driver.

Co do samego archa jeszcze, dostaje coś takiego:

Kod:

root:/sys/devices/system/cpu/cpu0/cpufreq# echo ondemand > scaling_governor
root:/sys/devices/system/cpu/cpu0/cpufreq# dmesg
[Mon Apr 22 09:06:13 2013] ondemand governor failed, too long transition latency of HW, fallback to performance governor

Jeszcze nie szukałem info na ten temat. Na moje oko ustawienie tego samego drivera co jest na debianie, powinno obniżyć taktowanie do 2,4GHz. Pytanie czy da radę użyć tego drugiego sterownika.

Kernele są domyślne tzn, jeden lts i drugi normalny. Btw kerneli, gdzie na archu znajduje się plik z konfiguracją kernela bo na debianie jest w  /boot/config-3.8-7.slh.4-aptosid-686

Chciałbym obniżyć taktowanie do tych 375MHz na nocki. I tak głównie używam, 2,4Ghz i myślę że z powodzeniem mogę połowę czasu spędzić na 1,5Ghz. Choć to i tak na wyrost, bo xorg debiana mi zjada xx razy więcej zasobów niż ten na archu, np. podczas przeciągania okien, tutaj procek nawet do 100% skacze czasem, na archu rzadko skacze powyżej 5%.

Offline

 

#4  2013-04-22 12:14:24

  BlackEvo - Driver

BlackEvo
Driver
Skąd: Polska
Zarejestrowany: 2006-05-20

Re: [SOLVED] Skalowanie procka

Nie pomogę w Arch'u ale w Debianie :

pokaż:

Kod:

cpufreq-info -l

Te dwie cyfry obok siebie to oczywiście wartości MIN i MAX Twojego CPU.

Znając te wartości dopisz moduł polityczny zarządzania skalowaniem + dopisz te ww wartości do pliku /etc/init.d/cpufrequtils

Kod:

…
GOVERNOR=”ondemand”
MAX_SPEED=”800000″
MIN_SPEED=”1600000″
…


Potem... /etc/init.d/cpufrequtils restart

I...
cpufreq-info -p

Jeśli działa, to powinien pokazać wartości + przyjęty/wykorzystywany moduł.


U mnie na Debianie działa

Ostatnio edytowany przez BlackEvo (2013-04-22 12:23:28)

Offline

 

#5  2013-04-22 12:24:23

  BlackEvo - Driver

BlackEvo
Driver
Skąd: Polska
Zarejestrowany: 2006-05-20

Re: [SOLVED] Skalowanie procka

morfik: sorki za byka, ale w pierwszym poleceniu był babol.

ma byc

cpufreq-info -l

morfik napisał(-a):

...xorg debiana mi zjada xx razy więcej zasobów niż ten na archu, np. podczas przeciągania okien, tutaj procek nawet do 100% skacze czasem, na archu rzadko skacze powyżej 5%.

Takie wartości CPU przy przesuwaniu okien na pulpicie to wg mnie brak sterowników do GPU.


Pozdrawiam

Ostatnio edytowany przez BlackEvo (2013-04-22 12:29:06)

Offline

 

#6  2013-04-22 12:32:13

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Skalowanie procka

Kod:

morfik:~$ morfik:~$ cpufreq-info -l
2400000 3000000

Plik /etc/init.d/cpufrequtils na debianie edytowałem, wpisałem tam wartości od 2.4 i 3GHz — to mi przypomniało ten topic: http://forum.dug.net.pl/viewtopic.php?id=23115 tylko, że tam było przy OC. Tutaj wszystko było na domyślnych ustawieniach w biosie. Poza tym, na archu ładnie mi wykrywa przetaktowanie — jest 3.25GHz.

Kod:

morfik:~$ cpufreq-info -p
2400000 3000000 ondemand

U mnie na debianie przełącza się między 2.4 a 3GHz. Procek może jednak przełączać się między 375MHz i 3GHz i paroma innymi trybami po środku. Zależy mi na tym by tak robił. xD

BlackEvo napisał(-a):

Takie wartości CPU przy przesuwaniu okien na pulpicie to wg mnie brak sterowników do GPU.

Jak brak sterownika, mam nvidie i raczej działa sądząc po grach. :)

Na archu jest ten otwarty sterownik.  Może to ma znaczenie, póki co nie wiem. Ale to pewnie materiał na inny topic.

Ostatnio edytowany przez morfik (2013-04-22 12:33:36)

Offline

 

#7  2013-04-22 13:03:06

  BlackEvo - Driver

BlackEvo
Driver
Skąd: Polska
Zarejestrowany: 2006-05-20

Re: [SOLVED] Skalowanie procka

Hm, dziwne bo mój Dual-Core E5300 spada na minimalnym o wiele niżej:

Kod:

cpufreq-info -o
          minimum CPU frequency  -  maximum CPU frequency  -  governor
CPU  0      1200000 kHz ( 46 %)  -    2600000 kHz (100 %)  -  ondemand
CPU  1      1200000 kHz ( 46 %)  -    2600000 kHz (100 %)  -  ondemand

Masz w /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "ondemand" ?

W starszych wersjach cpufrequtils pomagało dopisanie do /etc/sysfs.conf

Kod:

    devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand

ale nie wiem czy to dużo zmieni u Ciebie

EDIT

A może...

cpufreq-set -g userspace --f 375000

Gdzieś kiedyś czytałem że lepszym regulatorem jest " conservative" bo ondemand skacze od razu na max.
Conservative'em się nie bawiłem ale ponoć skalowanie ustala "po kolei" w dół i w górę.

Czyli u Ciebie jak będzie potrzebna moc to po kolei będzie przełączał na:

375 MHz, 750 MHz, 1.13 GHz, 1.50 GHz, 1.88 GHz, 2.25 GHz, 2.63 GHz, 3.00 GHz

i potem w dół jak będzie luz.

Może tym się to da jakoś zrobić

Ostatnio edytowany przez BlackEvo (2013-04-22 13:23:01)

Offline

 

#8  2013-04-22 13:21:15

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Skalowanie procka

Na debianie jest ondemand w  /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor .

Póki co, doszukałem się modułu p4-clockmod .

Kod:

morfik:~$ cat /boot/config-3.8-8.slh.1-aptosid-686 | grep P4
# CONFIG_X86_P4_CLOCKMOD is not set

Zrobię jajko z tym modułem, zobaczę czy to coś da. Choć w sumie muszę na debianie coś pozmieniać.

BlackEvo napisał(-a):

Skąd masz info, że Twój CPU zejdzie do tak niskiej częstotliwości?

W pierwszym poście z logu na archlinuxie widnieje wpis:

Kod:

  hardware limits: 375 MHz - 3.00 GHz
  available frequency steps: 375 MHz, 750 MHz, 1.13 GHz, 1.50 GHz, 1.88 GHz, 2.25 GHz, 2.63 GHz, 3.00 GHz
  available cpufreq governors: ondemand, performance
  current policy: frequency should be within 375 MHz and 3.00 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.

Offline

 

#9  2013-04-22 13:25:18

  BlackEvo - Driver

BlackEvo
Driver
Skąd: Polska
Zarejestrowany: 2006-05-20

Re: [SOLVED] Skalowanie procka

Ok, zauważyłem po wpisie i edytowałem post ;)

Właśnie chciałem pisać o p4-clockmod ;) - Celerony D, Pentium'y D też obsługuje :)

Offline

 

#10  2013-04-22 17:32:22

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Skalowanie procka

Jest nowe jajko zmieniłem mu procek na p4 i dodałem moduł p4_clockmod

Kod:

morfik:/usr/src$ cat /boot/config-3.8-morfik | grep P4
CONFIG_X86_P4_CLOCKMOD=m

Tak wygląda normalnie:

Kod:

morfik:~$ cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 160 us.
  hardware limits: 2.40 GHz - 3.00 GHz
  available frequency steps: 3.00 GHz, 2.40 GHz
  available cpufreq governors: conservative, powersave, userspace, ondemand, performance
  current policy: frequency should be within 2.40 GHz and 3.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 2.40 GHz.
  cpufreq stats: 3.00 GHz:14,41%, 2.40 GHz:85,59%  (176)
analyzing CPU 1:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 1
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 160 us.
  hardware limits: 2.40 GHz - 3.00 GHz
  available frequency steps: 3.00 GHz, 2.40 GHz
  available cpufreq governors: conservative, powersave, userspace, ondemand, performance
  current policy: frequency should be within 2.40 GHz and 3.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 2.40 GHz.
  cpufreq stats: 3.00 GHz:10,86%, 2.40 GHz:89,14%  (154)

Tak po usunięciu modułu

Kod:

root:~# rmmod acpi_cpufreq 

morfik:~$ cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  no or unknown cpufreq driver is active on this CPU
  maximum transition latency: 0.00 ms.
analyzing CPU 1:
  no or unknown cpufreq driver is active on this CPU
  maximum transition latency: 0.00 ms.

I tak po załadowaniu modułu:

Kod:

root:~# modprobe p4_clockmod

morfik:~$ cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: p4-clockmod
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.00 ms.
  hardware limits: 300 MHz - 2.40 GHz
  available frequency steps: 300 MHz, 600 MHz, 900 MHz, 1.20 GHz, 1.50 GHz, 1.80 GHz, 2.10 GHz, 2.40 GHz
  available cpufreq governors: conservative, powersave, userspace, ondemand, performance
  current policy: frequency should be within 300 MHz and 2.40 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 2.40 GHz.
analyzing CPU 1:
  driver: p4-clockmod
  CPUs which run at the same hardware frequency: 1
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 10.00 ms.
  hardware limits: 300 MHz - 2.40 GHz
  available frequency steps: 300 MHz, 600 MHz, 900 MHz, 1.20 GHz, 1.50 GHz, 1.80 GHz, 2.10 GHz, 2.40 GHz
  available cpufreq governors: conservative, powersave, userspace, ondemand, performance
  current policy: frequency should be within 300 MHz and 2.40 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 2.40 GHz.

Hmm wygląda na to, że zamiast 375 jest 300 i zamiast 3GHz jest 2.4 max. xD Oczywiście chodzi na full, na 2,4.

root:~# more /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
300000 600000 900000 1200000 1500000 1800000 2100000 2400000
root:~# more /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative powersave userspace ondemand performance

Jednak tutaj też przy próbie zmiany na ondemand albo conservative , jest to samo co na archu:

Kod:

root:/sys/devices/system/cpu/cpu0/cpufreq# echo ondemand > scaling_governor
root:/sys/devices/system/cpu/cpu0/cpufreq# dmesg 
[ 1258.022887] ondemand governor failed, too long transition latency of HW, fallback to performance governor
root:/sys/devices/system/cpu/cpu0/cpufreq# echo conservative > scaling_governor
root:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_governor
performance
root:/sys/devices/system/cpu/cpu0/cpufreq# dmesg 
[ 1591.656053] conservative governor failed, too long transition latency of HW, fallback to performance governor

Ale powersave działa normlanie :]

Kod:

root:/sys/devices/system/cpu/cpu0/cpufreq# echo powersave > scaling_governor
root:/sys/devices/system/cpu/cpu0/cpufreq# more /proc/cpuinfo | grep MHz
cpu MHz        : 300.000
cpu MHz        : 2400.000
root:/sys/devices/system/cpu/cpu0/cpufreq#

xD

EDIT:

Znalazłem coś takiego: http://forum.sabayon.org/viewtopic.php?f=56&t=20313

--- a/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
+++ b/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
@@ -246,7 +246,10 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
        cpufreq_frequency_table_get_attr(p4clockmod_table, policy->cpu);

        /* cpuinfo and default policy values */
-       policy->cpuinfo.transition_latency = 1000000; /* assumed */
+
+       /* the transition latency is set to be 1 higher than the maximum
+        * transition latency of the ondemand governor */
+       policy->cpuinfo.transition_latency = 10000001;
        policy->cur = stock_freq;

        return cpufreq_frequency_table_cpuinfo(policy, &p4clockmod_table[0]);

Poszukałem w źródłach tego pliku i jest tam ustawione 10000001, zmieniłem to na 10000000. Pytanie, czy muszę kompilować kernela od nowa czy wystarczy:

Kod:

make modules_install ; make install

EDIT2:

Przy okazji rozwiązałem problem z xorgiem przy przeciąganiu okienek — zainstalowanie xcompmgr. Teraz xorg nie wychodzi poza 8% na debianie.

Ostatnio edytowany przez morfik (2013-04-22 18:04:55)

Offline

 

#11  2013-04-22 21:12:24

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Skalowanie procka

Generalnie trzeba było obniżyć, tak jak przypuszczałem, latencje z 10000001 na 10000000 i ten moduł działa choć nie do końca tak jak powinien albo ja nie umiem go ustawić.

Tutaj jest info: https://bugs.launchpad.net/ubuntu/+source/linux/+bu … 6/comments/20

Chodzi o edycję zainstalowanego modułu --dalej nie wiem jak się rekompiluje moduł ze źródła bez potrzeby kompilacji całego kernela. W każdym razie trzeba postępować jak napisane poniżej:

1. cd /lib/modules/3.8-morfik/kernel/drivers/cpufreq/
2. xxd p4-clockmod.ko p4-clockmod.ko.hex
3. vim p4-clockmod.ko.hex -- szukamy 81 po którym występuje ciąg 96 98 00
4. zamieniamy 81 z 80
5. xdd -r p4-clockmod.ko.hex p4-clockmod.ko
6 modprobe p4-clockmod.


Procek skaluje się od 300 MHz do 2.4GHz. Może na archu uda mi się zrobić do 3GHz, w każdym razie wyedytowałem plik /etc/init.d/cpufrequtils zmieniając odpowiednie wpisy na 300MHz , 2.4GHz  i ondemand. Zresetowałem i procek chodzi na 300MHz, pod obciążeniem idzie na 2.4GHz.

Teraz tak:

Kod:

root:/# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 
300000 600000 900000 1200000 1500000 1800000 2100000 2400000 
root:/# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
conservative powersave userspace ondemand performance 
root:/# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 
300000
root:/# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver 
p4-clockmod
root:/# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 
ondemand
root:/# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 
2400000
root:/# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 
300000

Skalowanie między tymi częstotliwościami nie przebiega płynnie. Procek siedzi na 300MHz, odpalam operę, procek rośnie na 100% i dalej jest 300MHz, po parunastu sekundach dopiero zmienia się na wyższą częstotliwość, od razu na 2.4GHz potem spada  stopniowo do 300MHz. Następna akcja, dokładnie sto samo się dzieje. Czyli generalnie to wygląda jak praca na 300MHz. xD

Próbowałem manipulować obniżając wartość.:

Kod:

root:/# cat /sys/devices/system/cpu/cpufreq/ondemand/up_threshold 
95

Przy 20 to rdzenie w spokoju mają tak 1200 -1500 MHz, przy jakimkolwiek ruchu, od razu dają na 2400MHz. Poniżej 1200MHz nie schodzą.

Przy 30 ,rdzenie mają w spokoju 900 MHz, przy odpaleniu gajima skacza od razu na 2400MHz po czym...

Przez przypadek wcisąłem nie ten przycisk i zahibernowałem system... xD Niby nic niezwykłego ale po odpaleniu go, zmieniły się taktowania:

Kod:

root:/# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 
375000 750000 1125000 1500000 1875000 2250000 2625000 3000000

Wygląda to dokładnie tak jak na archu. To na pewno nie bug, to ficzer. Już przywykłem, że po hibernacji nic nie działa jak należy ale tutaj nawet mnie to pozytywnie zaskoczyło. xD

W każdym razie obserwując

Kod:

watch grep \"cpu MHz\" /proc/cpuinfo

Wyciągam 2 wnioski:
1. Przy niskim up_threshold procek bardzo często przechodzi w stan max nawet przy obciążeniu nieprzekraczającym 20-30% maxmum
2. Przy wysokim up_threshold procek praktycznie ciągle zostaje na najniższej częstotliwości.

Nie wiem jak to ma działać, przy skalowaniu procka z 2.4 do 3.0GHz bardzo płynnie przechodzi przy prawie 100% obciążenia. Czemu zatem w tym przypadku się tak nie dzieje?

Ps. jeśli bym sobie skopiował z jednego krenela ten plik p4-clockmod.ko i wgrał go do modułów innego kernela i potem go załądował, to on będzie działał?

Offline

 

#12  2013-04-23 01:21:31

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Skalowanie procka

A nie masz czasem w którymś systemie zainstalowanego cpufreqd?
Bo jak on trzyma częstotliwości, to nic nie zmienisz z palca.

U mnie na domowych jajkach od 2.6.36 do 3.8.8  z częstotliwością procka żadnych kłopotów nie zauważyłem, (na Gentusiu).


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#13  2013-04-23 01:45:08

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Skalowanie procka

cpufreqd ma być zamiast cpufrequtils czy mają działać razem?

Offline

 

#14  2013-04-23 08:14:03

  Andrzej66 - Użytkownik

Andrzej66
Użytkownik
Skąd: Elbląg
Zarejestrowany: 2009-08-26

Re: [SOLVED] Skalowanie procka

Jak miałem u siebie w laptopie cpufreqd i cpufrequtils w debianie testing, to źle działało skalowanie procka. Mam cpufrequtils i zero problemów ze skalowaniem. Pozdrawiam

Offline

 

#15  2013-04-24 19:20:43

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Skalowanie procka

Samo przeniesienie skompilowanego modułu z debiana na archa nic nie daje -- moduł się nie ładuje :]
Nie mam pojęcia jak się buduje nowe jajko na archu, więc póki co to musi poczekać. Choć w sumie mógłbym wyedytować ten moduł i pozmieniać wartości. Ale to już jutro. xD

Załadowanie sterownika acpi-cpufreq aktywuje 2 częstotliwości procka, 2.4 i 3GHz, tak jak przypuszczałem.
cpufreqd się jeszcze nie bawiłem, muszę doczytać jak to się konfiguruje

Nie wiem czemu p4-clockmod jest fabrycznie "uszkodzony" i trzeba tak kombinować. W każdym razie będę musiał trochę potestować oba ustawienia i zobaczyć na którym  z nich procek będzie mniej siedział na 3GHz i wtedy ten wybiorę.

Offline

 

#16  2013-04-24 19:39:44

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Skalowanie procka

Uruchomiłem achra ponownie i wyrzucił błąd. Przywróciłem stary i załadował się bez problemu. Jutro się pobawię z tym dalej.

EDIT:

To chyba jednak tak się nie da z tymi modułami. xD Tak z ciekawości przeniosłem moduł z niby tego samego kernela, kompilowanego ze źródeł aptosida i dostałem coś takiego:

Kod:

root:/lib/modules/3.8-8.slh.1-aptosid-686/kernel/drivers/cpufreq# uname -a
Linux morfikownia 3.8-8.slh.1-aptosid-686 #1 SMP PREEMPT Wed Apr 17 22:48:14 UTC 2013 i686 GNU/Linux
root:/lib/modules/3.8-8.slh.1-aptosid-686/kernel/drivers/cpufreq# cp  '/media/arch/p4-clockmod.ko' ./
root:/lib/modules/3.8-8.slh.1-aptosid-686/kernel/drivers/cpufreq# depmod -a
root:/lib/modules/3.8-8.slh.1-aptosid-686/kernel/drivers/cpufreq# rmmod acpi_cpufreq 
root:/lib/modules/3.8-8.slh.1-aptosid-686/kernel/drivers/cpufreq# modprobe p4-clockmod 
ERROR: could not insert 'p4_clockmod': Exec format error

Ostatnio edytowany przez morfik (2013-04-24 23:43:21)

Offline

 

#17  2013-04-25 18:00:38

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Skalowanie procka

Edytowałem moduł na archu. Działa jak na debianie -- jest możliwość skalowania od 375MHz do 3GHz.

Kod:

  hardware limits: 375 MHz - 3.00 GHz
  available frequency steps: 375 MHz, 750 MHz, 1.13 GHz, 1.50 GHz, 1.88 GHz, 2.25 GHz, 2.63 GHz, 3.00 GHz
  available cpufreq governors: ondemand, performance

Przy czym z początku był max 2.4GHz jak w przypadku debiana, problem znikł po resecie. Zachowanie się procka na archu przy nowym sterowniku jest dokładnie takie samo jak na debianie.

Posiedziałem trochę ustawiając wartości w pliku /etc/default/cpupower i myślę, że udało mi się osiągnąć kompromis.

Początkowo próbowałem ustawić:

Kod:

min_freq="375Mhz"
max_freq="3.01GHz"

echo -n 55 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold

Ale to troszkę za bardzo spowalniało sprzęt -- skalowanie nie było płynne. Mogłem co prawda dać 40 zamiast 55 ale to podwyższy bazową częstotliwość. Dlatego też ustawiłem wyższą minimalną częstotliwość na 1,5GHz i zwiększyłem up_threshold do 70:

Kod:

min_freq="1.50Ghz"
max_freq="3.01GHz"
echo -n 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold

Przy takim ustawieniu, działa nawet w miarę dobrze. Filmy na yt są odtwarzane na 1875MHz. Prawdopodobnie będę musiał jeszcze doprecyzować wartości, bo jakby nie patrzeć, czasem jest odczuwalne spowolnienie ale generalnie problem z głowy. :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)