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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
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:
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
root:/home/morfik# cat /etc/modules-load.d/p4_clockmod.conf p4_clockmod
Tak wygląda procek:
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:
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:
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ś:
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:
root:/home/morfik# more /proc/cpuinfo | grep MHz cpu MHz : 3000.000 cpu MHz : 3000.000
Spróbowałem zatem:
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:
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:
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:
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:
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
Rozumiem. że cpupower(arch)=cpufreq-utils(debian)?
Jądro twoje?
Offline
Na debianie jest cpufrequtils na archu cpupower.
Na debianie:
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:
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
Nie pomogę w Arch'u ale w Debianie :
pokaż:
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
… 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
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
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.
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
Hm, dziwne bo mój Dual-Core E5300 spada na minimalnym o wiele niżej:
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
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
Na debianie jest ondemand w /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor .
Póki co, doszukałem się modułu p4-clockmod .
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:
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
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
Jest nowe jajko zmieniłem mu procek na p4 i dodałem moduł p4_clockmod
morfik:/usr/src$ cat /boot/config-3.8-morfik | grep P4 CONFIG_X86_P4_CLOCKMOD=m
Tak wygląda normalnie:
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
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:
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:
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 :]
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:
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
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:
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ść.:
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:
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
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
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).
Offline
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
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
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:
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
Edytowałem moduł na archu. Działa jak na debianie -- jest możliwość skalowania od 375MHz do 3GHz.
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ć:
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:
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