Stromsparrechner: Undervolting von AMD-CPU unter (Ubuntu-) Linux -> Idle unter 18 W!
Willkommen in der Mk-Community › Foren › Energie & Stromspar – PC Systeme › Vorstellung von Stromspar – PCs › Stromsparrechner: Undervolting von AMD-CPU unter (Ubuntu-) Linux -> Idle unter 18 W!
- Dieses Thema hat 170 Antworten und 25 Teilnehmer, und wurde zuletzt aktualisiert vor 15 Jahren, 9 Monaten von heinzelrumpel.
-
AutorBeiträge
-
-
11. November 2007 um 18:11 Uhr #485154smaxTeilnehmer
Meinen Windows-Stromsparrechner habe ich ja schon hier vorgestellt.Jetzt wollte ich auch noch wissen, ob das auch unter Linux möglich ist. Ich habe die gleichen Komponenten wie oben unter Windows verwendet, jedoch habe ich nur eine Festplatte angeschlossen (Samsung 2,5″ SpinPoint M5S 160GB SATA (HM160HI)) und das DVD-Laufwerk abgeklemmt (nach der Installation). !!!ACHTUNG: Ich möchte darauf Hinweisen, wenn man das undervolting auf eigene Gefahr testen will, die Möglichkeit besteht, die CPU zu zerstören!!!Mir sind folgende Möglichkeiten bekannt, um unter Linux eine (AMD-) CPU zu undervolten, ohne dabei auf Cool&Quiet (Speedstep) verzichten zu müssen:* Ändern der Kernelsourcen (fid und vid) (siehe Linux-PHC siehe hier)* Ändern der ACPI DSDT-Tabellen des BIOS (siehe hier und hier)* Ändern der Spannungen über das Kernelmodul msr (Model Specific Register)Ich habe mich für die letztere Variante entschieden, da die mir am gescheitesten vorkommt (ich will nicht bei jedem neuem Kernel auf den Patch warten). Fürs untervolting verwende ich ein Programm namens cpupw.Für meine Test habe ich die 64-bit amd64 und die 32-bit i386 Ubuntu Variante verwendet.Nach der Grundinstallation habe ich folgenden Schritte durchgeführt (unter Ubuntu muss man immer sudo verwenden, bei einem anderen Linux muss man root sein):* Untersuchen, welche Governors(Steuerung der Frequenzen) und Frequenzen verwendet werden können:Frequenzen: “cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies” ergibt bei mir in MHz: 2000000 1800000 1000000 -> im Configfile verwendet Governors: “cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors” ergibt bei mir: conservative ondemand powersave userspace performance* Governors ändern mit cpufreq-selector -> “sudo cpufreq-selector -g performance”Nach -g ist der Governor anzugeben: ondemand, conservative, performance, powersave, userspaceIch habe den Governor performance (CPU immer auf volle Taktung) getestet und der Verbrauch ist gleich um ein paar Watt angestiegen. Damit wir beim über ein Userlandprogramm die Spannungswerte ändern können, muss man den governor userspace verweden -> “sudo cpufreq-selector -g userspace”* Kernelmodul msr (Model Specific Register) kontrollieren, ob es geladen ist -> sudo lsmod | grep msr -> Wenn das Modul nicht geladen ist dann mit “sudo modprobe msr” laden* Kompilierumgebung installieren: sudo apt-get install build-essential linux-headers-$(uname -r)* Download des Sources von cpupw unter http://tuxamito.com.es/cpupw/index.php und durchlesen der Seite* Entpacken des targzs und in den Ordner cpupw-0.2.0/src gehen* Mit Hilfe von make den Source kompilieren -> ACHTUNG!!: Unter i386 Ubuntu (32-bit) habe ich Probleme gehabt, das kompilieren hat zwar funktioniert, jedoch hat das Programm nicht richtig gearbeitet. Damit cpupw auch unter i386 funktioniert habe ich das Makefile (nur bei der i386 (32-bit) Ubuntu distro!) beim target all geändert:Original: gcc -O2 cpupw.c libmsr.c msr-centrino.c msr-powernow-k8.c -o cpupwModifiziert: gcc -O2 -D_FILE_OFFSET_BITS=64 cpupw.c libmsr.c msr-centrino.c msr-powernow-k8.c -o cpupw* Mit “make install” das Programm installieren (wird unter /usr/sbin hineinkopiert)* “sudo cpupw –status” ausführen -> nun sollten die aktuellen Daten der Freqzenz und der Spannung dargestellt werden. Mehrmals kontrollieren, ob die Werte richtig sind bzw. sein können. Bei mir schauts so aus: System has 1 physical CPUs and 2 logial CPUsCPU 0-> voltage: 1.000000 v, VID: 22, frequency: 1000 Mhz, FID: 2Theorical bus speed: 100.000000Real bus speed: 100.000000Real cpu speed: 1000.000000Governor: userspace* Berechnung von VID und FID nur für AMD Athlon (X2), Turion und Opteron Einheiten: Frequenz in MHz, Spannung in Millivolt Frequenz zu FID: FID = (Frequenz – 800) / 100FID zu Frequenz: Frequenz = (FID * 100) + 800Spannung zu VID: VID = (1550 – Spannung) / 25VID zu Spannung: Spannung = 1550 – (VID * 25)ACHTUNG: mit cpupw ist undervolting nur bis minimal 0.800V (VID 30) möglich!* Test, ob Spannungseinstellungen funktioniert -> sudo cpupw –voltage CPU-Nr. VIDACHTUNG: Eine falsche Angabe könnte den Prozessor zerstören!!!! Ich habe zuerst die Spannungswert nur sehr geringfügig geändert -> “sudo cpupw –voltage 0 24” -> Das hat meine Spannung von 1 V bei 1 GHz auf 0,95 V heruntergesetzt.* Configfile (cpupw.conf unter /etc) für cpupw erstellen:Für meinen AMD X2 3800 EE SFF habe ich folgende Werte verwendet:[CODE]1230432000000 22 -1 -11800000 24 -1 -11000000 30 -1 -12[/CODE]* Programm als Damon starten -> “sudo cpupw -S -d -c /etc/cpupw.conf”Die Spannung wird aber erst dann geändert, wenn nach dem starten des Damons erstmalig eine Frequenzänderung erfolgt.* Programm beim Booten mitstartenpowernowd startscript etwas modifizieren und unter /etc/init.d/cpupwd speichern. Leider funktioniert das Startscript nicht richtig, da nach dem start von Gnome der gnomw-power-manager dazwischenfunkt. Wenn jedoch Gnome nicht gestartet wird funktionierts.Genauer Stromverbrauch:Hier wurde noch zusätzlich die Netzwerkkarte von 1 Gbit auf 100 MBit mit “sudo ethtool -s eth0 speed 100 duplex half autoneg off” heruntergedreht – das bringt bis zu 2,5 W!Mit der oben angegebenen Hardware erreiche ich ohne X bzw. Gnome im Idle 17,8 W, wenn zusätzlich ein Speicher ausgebaut und im Bios alles abgedreht wird erreiche ich unter 17 W!Mit Gnome erreiche ich 20,2 W im IdleUPDATE:Hardwareänderung: 2x1GB DDR2 800 Crucial Value Ram ersetzt durch 1x2GB DDR2 800 Transcend (bringt ca. 1-1.5W).Verbrauch unter Slackware 12.0 mit KDE ca. 18,3W im Idle.
-
11. November 2007 um 19:11 Uhr #711928Obi WanAdministrator
Wow, kein schlechter Wert !Ich habe ein ähnliches System:http://www.meisterkuehler.de/forum/energie-stromspar-pc-systeme/12397-abit-nf-m2-nview-x2-3800-ee-die-kraft-der-2-herzen.htmlallerdinsg ohne Pico Netzteil und alles auf Standard eingestellt und komme auf ca. 60 Watt (idle), was ich auch schon ziemlich gut finde
-
11. November 2007 um 21:11 Uhr #711963ulvTeilnehmer
:respekt:
Danke für die Anleitung!
-
11. November 2007 um 23:11 Uhr #711995DerXeroTeilnehmer
Ich habs jetzt mal, mangels Zeit, nicht komplett gelesen, aber tausend Dank schon mal! :respekt:
Ich werds die Woche über mal mit meiner Hardware testen, will ja auch endlich etwas Stromsparendes haben…Hier wurde noch zusätzlich die Netzwerkkarte von 1 Gbit auf 100 MBit mit “sudo ethtool -s eth0 speed 100 duplex half autoneg off” heruntergedreht – das bringt bis zu 2,5 W!
Könnte man das nicht sogar per Cron einrichten, dass man nur Nachts auf 100MBit geht? Ich benötige das GBit Interface ja nur über Tag.
PS: Kannst du mal nen lspci von deinem Board posten? Bei meinem 630a kommen nur ganz, ganz viele “Unknown Devices”.
-
11. November 2007 um 23:11 Uhr #711999k1lTeilnehmer
Von mir aus auch vielen Dank.Habe es grade geschafft nen Bios zu finden welches bei meinem Asrock Nf7g-Hdready cnq zulässt. Ich werds dann auch mal testen unter Ubuntu 7.10 Server mit BE-2350, Adata 2GB kit und dem Asrock Board.
-
11. November 2007 um 23:11 Uhr #712001smaxTeilnehmer
DerXero;262792 said:
Ich habs jetzt mal, mangels Zeit, nicht komplett gelesen, aber tausend Dank schon mal! :respekt:
Ich werds die Woche über mal mit meiner Hardware testen, will ja auch endlich etwas Stromsparendes haben…Hier wurde noch zusätzlich die Netzwerkkarte von 1 Gbit auf 100 MBit mit “sudo ethtool -s eth0 speed 100 duplex half autoneg off” heruntergedreht – das bringt bis zu 2,5 W!
Könnte man das nicht sogar per Cron einrichten, dass man nur Nachts auf 100MBit geht? Ich benötige das GBit Interface ja nur über Tag.
PS: Kannst du mal nen lspci von deinem Board posten? Bei meinem 630a kommen nur ganz, ganz viele “Unknown Devices”.
Ich glaube schon das du das Netzwerkinterface per cronjob runterschalten kannst -> dann spricht aber auch nichts dagegen, wenn du gleich auf 10MBit runter gehts (bringt wahrscheinlich aber nur mehr was im mW Bereich:D). Vielleicht ist das Problem mit dem Mehrverbrauch bei 1GBit auch nur ein Abit Problem und bei anderen Motherboards ist es nicht so dramatisch.
Ich bin jetzt gerade unter Windows unterwegs, werde die lspci in den nächsten Tagen nachreichen.
Ausserdem möchte ich auch noch dieses Tool (cpupw) unter Slackware testen, da ich eigentlich nicht so der Ubuntu Fan bin. Wenn ich Linux verwende dann meistens Slackware – da konfiguriere ich mein System so wie mir es passt und nicht irgendein Wizard es mir vorschreibt (Suse Yast ist der schlimmste) :D. Für meinen Homeserver verwende ich derzeit FreeBSD, da möchte ich auch mal schauen was man dort in punkto Stromsparen mit Software machen kann -> wird mein nächster Thread \D/.
-
12. November 2007 um 6:11 Uhr #712023DerXeroTeilnehmer
Nja, ich könnte ja Nachts auch noch dran sitzen (Urlaub) und darüber wird dann alles gestreamt, also 100Mbit wären schon ganz sinnvoll. *g*Mein Favorit ist Ubuntu auch nicht grade, aber damals hatte ich wenig Lust nen Debian aufzusetzten ohne ordentlichen Treiber. Nur die 7.10er Beta konnte damals so einigermaßen mit der “neuen” Hardware um…Hoffentlich habe ich heute Nachmittag Zeit um das ganze mal zu testen.Ach schön, geht schon los, dass ich das MSR Modul nicht im Kernel habe. Also backe backe Kernel.
-
12. November 2007 um 22:11 Uhr #712166smaxTeilnehmer
So nun meine lspci:
[CODE]00:00.0 RAM memory: nVidia Corporation Unknown device 0547 (rev a2)
00:01.0 ISA bridge: nVidia Corporation Unknown device 0548 (rev a2)
00:01.1 SMBus: nVidia Corporation Unknown device 0542 (rev a2)
00:01.2 RAM memory: nVidia Corporation Unknown device 0541 (rev a2)
00:02.0 USB Controller: nVidia Corporation Unknown device 055e (rev a2)
00:02.1 USB Controller: nVidia Corporation Unknown device 055f (rev a2)
00:04.0 USB Controller: nVidia Corporation Unknown device 055e (rev a2)
00:04.1 USB Controller: nVidia Corporation Unknown device 055f (rev a2)
00:06.0 IDE interface: nVidia Corporation Unknown device 0560 (rev a1)
00:07.0 Audio device: nVidia Corporation MCP67 High Definition Audio (rev a1)
00:08.0 PCI bridge: nVidia Corporation Unknown device 0561 (rev a2)
00:09.0 SATA controller: nVidia Corporation Unknown device 0554 (rev a2)
00:0a.0 Ethernet controller: nVidia Corporation Unknown device 054c (rev a2)
00:0b.0 PCI bridge: nVidia Corporation Unknown device 0562 (rev a2)
00:0c.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)
00:0d.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)
00:0e.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)
00:0f.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)
00:10.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)
00:11.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)
00:12.0 VGA compatible controller: nVidia Corporation Unknown device 053b (rev a2)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control[/CODE]
Verdamt viele “Unknown devices von nVidia :D” – mir ist aber noch nicht aufgefallen, das etwas nicht geht :).Beim starten der Ubuntu-Live-CD habe ich in der xorg.conf den nv durch vesa ersetzen müssen, sonst funktionierte die grafische Oberfläche (Gnome) nicht, das war aber schon alles was ich für einen erfolgreichen Start geändert habe.
Ach schön, geht schon los, dass ich das MSR Modul nicht im Kernel habe. Also backe backe Kernel.
Wundert mich jetzt ein bischen, da bei mir das MSR-Modul bei beiden Ubuntus (i386 und amd64) vorhanden war – ich habe es nur laden müssen oder verwendest du jetzt eine andere Distro?
Bei meinem Slackwaretest werde ich auch noch den neuesten Vanilla-Kernel probieren – mal schauen ob es mit den “Unknown Devices” besser wird.
-
13. November 2007 um 18:11 Uhr #712306DerXeroTeilnehmer
Ich verwende keine Generic-Kernel und hatte das Modul rausgenommen, weils bis dahin überflüssig war. Irgendwie hab ich gestern dann nur vergessen einfach mal nen neuen Kernel zubauen, sodass ich erst jetzt anfangen kann. Werd direkt mal den 2.6.24-rc2 testen und hoffen, dass dann mal ein paar “Unknown Devices” verschwinden.Okay, RC’s sollte man nicht nutzen, das klappt leider nicht so wie ich’s gern hätte. Nochmal nen 2.6.23.1 bauen 😀
-
14. November 2007 um 21:11 Uhr #712562DerXeroTeilnehmer
Wie es aussieht ist mein Netzwerkchip kaputt oder spricht seit vorgestern nicht mehr auf Linux an, habe nun sämtliche Live-CDs getestet und nichts lief. Laut meinem anderen PC, der per Crossoverkabel dran hängt, ist das Kabel angeschlossen, habe auch schon ein anderes probiert –> kein Erfolg.Werde spätestens am Wochenende wohl oder übel mal Windows testen.Gruß
-
15. November 2007 um 13:11 Uhr #712680k1lTeilnehmer
Hi, irgendwie kriege ichs nicht gebacken.Kann sein das es daran liegt, dass ich vorher ziemlich rumgedocktort habe um CnQ ans laufen zu kriegen, was aber aufgrund des Bios nicht ging.Hast du CnQ an oder ausgestellt im BIOS?
-
15. November 2007 um 14:11 Uhr #712693smaxTeilnehmer
k1l;263530 said:
Hast du CnQ an oder ausgestellt im BIOS?Bei ist CnQ auf Auto im Bios eingestellt.
Ich habe auch im ersten Post erwähnt, damit das undervolting aktiv wird (wenn es als Daemon gestartet wurde), muss der Prozessor einmal seinen Zustand ändern z.B. bei mir von 1 GHz auf 2 GHz gehen – dann ist das undervolting aktiv.
Wenn du nur undervolting kurz testen willst sollte z.B. ein “cpupw –voltage 0 28” schon genügen. ACHTUNG: Eine VID von 28 ist für meinen Prozessor d.h. die Spannung geht auf 0.85 V runter.Falls der Fehler woanders liegt, kannst du das bitte genauer beschreiben?
-
15. November 2007 um 18:11 Uhr #712762k1lTeilnehmer
also ich habe powernowd über apt-get gelöscht und ich kann auch den Vcore per “cpupw –voltage 0 28” verstellen. allerdings würde ich gerne auch on the fly die frequenzen verstellen und nicht immer mit reboot ins bios zu müssen. aber das geht nicht, auch nciht wenn der governor auf userspace gestellt ist.
-
16. November 2007 um 14:11 Uhr #712916k1lTeilnehmer
Ok. ich habe jetzt einfach immer durch reboot die Vcores für die Frequenzen ermittelt.Trotzdem habe ich noch nen paar fragen:- reciht es das modul msr nur für die installation zu laden oder muss es immer mitgeladen werden?- kannst du den letzten schritt “Programm beim Booten mitstarten” bischen genauer erklären? – und muss man den Cputakt erst immer manuel 1 mal ändern damit es aktiviert wird? (wäre irgendwie mit der linken hand ins rechte ohr…)edit: und irgendwie springt der governor immer auf ondemand weil ich powernowd wieder installeirt hatte weil ich das startscript von powernow ja brauche??kannst du mal bitte genau sagen welche anderen programme du installeirt hast?cpufreq, powernow,….
-
16. November 2007 um 22:11 Uhr #712988smaxTeilnehmer
Ich habe nur die Ubuntu Grundinsallation durchgeführt mit dem im ersten Post angeführten zusätzlichen Paketen.Bei meiner Installation sind nur powernowd und cpufreq-selector verfügbar.Unter X/Gnome läuft der gnome-power-manager.Ich habe sonst keine zusätzlichen Programme installiert ausser cpupw :).Ich weiss jetzt nicht, wie das unter Ubuntu Server ist (nach dem Booten kommst du zu einer grafischen Oberfläche, oder zu einer Konsole?), aber beim normalen Ubuntu kommst du, nach dem Boot/Login, zu der grafischen Oberfläche. Soweit ich das mitbekommen habe ist Ubuntu dann in runlevel 2, also werden alle Dienste, die unter /etc/rc2.d angeführt sind gestartet (Sxxnamen) oder gestoppt(Kxxname -> OK in diesem runlevel gibts keine K-Scripte) und zwar in der aufsteigenden Reihenfolge, wie die Nummer nach den S sind. Der Powernowd hat bei mir Nr. 20 (S20powernowd). Mit S30gdm wird der grafische Logindialog gestartet, der Nummer nach also später als der powernowd. Der Powernowd lädt einige Kernelmodule und dannach stellt der Linuxkernel mehrere Interfaces unter “/sys/devices/system/cpu/cpux/cpufreq” zur Verfügung -> z.B. scaling_available_frequencies oder scaling_available_governors.Mit “sudo cat scaling_available_frequencies” kannst du dir anschauen, auf welche Frequenzen der Prozessor getaktet werden kann -> bei mir: 2000000 1800000 1000000, diese Frequenzen verwende ich auch in meinem Configfile.Mit “sudo cat scaling_available_governors” kannst du dir anschauen, welche Governors (Strategien der Prozessortaktung) zur Verfügung stehen. – bei mir: conservative ondemand powersave userspace performance. Auch die gerade eingestellte (scaling_cur_freq), minimale (scaling_min_freq) und maximale (scaling_max_freq) Frequenz kannst du auslesen.cpupw 0.2.0 verwendet derzeit diese Interfaces und daher ist es nötig, den powernowd vor cpupw starten. Ich habe ein Startscript für den cpupw als Daemon erstellt (habe vom Startscript des powernowd abgeschrieben) und es unter /etc/init.d/cpupwd gespeichert. Weiters habe ich einen symbolischen Link unter /etc/rc2.d namens S25cpupwd zu /etc/init.d/cpupwd angelegt, damit der cpupwd im runlevel 2 nach powernowd gestartet wird. Leider hat das nicht richtig funktioniert, da wenn Gnome gestartet wird (nach dem Loginmanager -> S30gdm) auch der gnome-power-manager gestartet wird und der anscheinend die vorher getätigten Einstellungen mit cpupw wieder überschreibt! Wenn dann Gnome gestartet ist und ich das Startscript unter /etc/init.d/cpupwd aufgerufen habe hat das Undervolting wieder funktioniert.Ich habe dann versuchsweise den Start des Loginmanagers unterbunden (einfach S30gdm unter /etc/rc2.d gelöscht) und dann hat das Untervolting ohne Probleme funktioniert.
Ok. ich habe jetzt einfach immer durch reboot die Vcores für die Frequenzen ermittelt.
Die Spannungen auf die der Prozessor undervolted werden kann, habe ich schon unter Windows ermittelt. Die Spannungen die der Prozessor ohne Undervolting verwendet kann man einfach mit cpupw auslesen -> “sudo cpupw –status”, wenn man den Rechner voll belastet kann man auch die Spannung die maximal verwendet wird rausbekommen. Dann muss man sich langsam mit verändern der Spannung (sudo cpupw –voltage 0 VID) runtertasten.
– reciht es das modul msr nur für die installation zu laden oder muss es immer mitgeladen werden?
Du musst das Modul immer laden bevor cpupw gestartet wird (entweder im Startscript oder unter /etc/modules eintragen), sonst fehlt das MSR-Interface unter /dev/cpu/x/msr und cpupw kann nicht undervolten!
– kannst du den letzten schritt “Programm beim Booten mitstarten” bischen genauer erklären?
Das habe ich am Anfang des Posts erklärt. Ich verwende das im ersten Post angeführte Configfile -> /etc/cpupw.conf Mein Startscript schaut derzeit so aus (geändertes powernowd Startscript, Verwendung auf eigene Gefahr)! EDIT: habe nun das Startscript geändert. Es ist praktisch gleich mit dem des powernowd, nur wird zusätzlich das msr-Kernelmodul geladen und natürlich cpupw als Daemon gestartet statt powernowd!EDIT: Habe leider übersehen, dass das Startscript ein weiteres Shellscript /usr/share/powernowd/cpufreq-detect.sh aufruft, das nur verfügbar ist wenn powernowd mit “sudo apt-get install powernowd” installiert ist -> powernowd muss also installiert sein, muss aber nicht gestartet werden![CODE]#! /bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binDAEMON=/usr/sbin/cpupwNAME=cpupwdDESC=cpupwdtest -x $DAEMON || exit 0# Get lsb functions. /lib/lsb/init-functions. /etc/default/rcSif [ “x$VERBOSE” = “xno” ]; then MODPROBE_OPTIONS=”$MODPROBE_OPTIONS -Q” export MODPROBE_OPTIONSfiset -eload_modules() { #stop the kernel printk’ing at all while we load. PRINTK=`cat /proc/sys/kernel/printk` [ “$VERBOSE” = no ] && echo “1 1 1 1″ > /proc/sys/kernel/printk #build a list of current modules so we don’t load a module twice LIST=`/sbin/lsmod|awk ‘!/Module/ {print $1}’` #get list of available modules LOC=”/lib/modules/`uname -r`/kernel/drivers/cpufreq” if [ -d $LOC ]; then MODAVAIL=`( find $LOC -type f -name “*.o” -printf “basename %f .o
“; \ find $LOC -type f -name “*.ko” -printf “basename %f .ko
” ) | /bin/sh` else MODAVAIL= fi #echo “Loading cpufreq modules:” for mod in $MODAVAIL; do # echo ” $mod” echo $LIST| grep -q -w “$mod” || modprobe $mod >/dev/null || /bin/true done # Load the Model Specific Register for cpupw lsmod | grep -q -w msr || modprobe msr >/dev/null || /bin/true #cpufreq is built in on powerpc; just return if [ “`uname -m`” = “ppc” ]; then echo “$PRINTK” > /proc/sys/kernel/printk return 0 fi #new style detection system if [ ! “$FREQDRIVER” = ]; then modprobe “$FREQDRIVER” else . /usr/share/powernowd/cpufreq-detect.sh [ ! -z “$MODULE” ] && (modprobe “$MODULE”||modprobe “$MODULE_FALLBACK”) fi if [ “$USE_OLD_DETECT” = “fish” ]; then # now lets load the driver if [ ! $FREQDRIVER = ]; then modprobe $FREQDRIVER||true fi if [ “`uname -m`” = “x86_64” ]; then modprobe powernow-k8 >/dev/null 2>&1||true fi if [ ! -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ]; then modprobe acpi > /dev/null 2>&1|| true fi fi echo “$PRINTK” > /proc/sys/kernel/printk}use_ondemand() { for x in /sys/devices/system/cpu/*/; do echo -n ondemand >$x/cpufreq/scaling_governor; status=$? if [ $status != 0 ]; then return $status fi done return 0}use_userspace(){ for x in /sys/devices/system/cpu/*/; do echo -n userspace >$x/cpufreq/scaling_governor; status=$? if [ $status != 0 ]; then return $status fi done return 0}check_kernel() { CPUFREQ=/sys/devices/system/cpu/cpu0/cpufreq if [ -f “$CPUFREQ/scaling_governor” ] && \ [ -f “$CPUFREQ/scaling_available_governors” ] && \ grep -q userspace “$CPUFREQ/scaling_available_governors” then return 0 else return 1 fi}start() { log_begin_msg “Starting $DESC… ” if ! check_kernel then log_end_msg 0 return 0 fi if use_userspace then # echo “Starting $DESC: ” /usr/sbin/cpupw -S -d -c /etc/cpupw.conf >/dev/null 2>&1 || { status=$? log_end_msg $status return $status } else log_success_msg “CPU frequency scaling not supported” # echo “required sysfs objects not found!” # echo -e “\tRead /usr/share/doc/powernowd/README.Debian for more information.” fi log_end_msg 0 return 0}case “$1” in start) #[ “x$DO_MODULES” = “xyes” -a -f /proc/modules ] && load_modules #[ “x$DO_MODULES” = “xyes” ] || start load_modules && start ;; stop) log_begin_msg “Stopping $DESC: ” start-stop-daemon –stop –exec $DAEMON for x in /sys/devices/system/cpu/*; do if [ -f $x/cpufreq/scaling_governor ]; then echo -n performance >$x/cpufreq/scaling_governor; fi done log_end_msg $? ;; restart|force-reload) $0 stop sleep 1 $0 start #echo “$NAME.” ;; *) N=/etc/init.d/$NAME log_success_msg “Usage: $N {start|stop|restart|force-reload}” >&2 exit 1 ;;esacexit 0[/CODE]– und muss man den Cputakt erst immer manuel 1 mal ändern damit es aktiviert wird? (wäre irgendwie mit der linken hand ins rechte ohr…)
Wenn man das Startscript verwendet, dann verursachen die weiteren Starts von anderen Diensten bzw. Gnome so viel Last, bzw. spätestens nach den Start sollte sich die Last wieder verringern -> CPU-Takt ändert sich und daher auch die Spannung automatisch.
-
17. November 2007 um 10:11 Uhr #713006smaxTeilnehmer
Ich habe nun cpupw auch unter Slackware 12 (i386) getestet. Unter Kde erreiche ich 20,3 W und unter der Konsole knapp unter 19W -> also etwas schlechter als unter Ubuntu.Vorgangsweise: * powernowd hier heruntergeladen und kompilieren und installieren -> nur zum testen!* cpupw kompiliert und installiert.Folgende Kernelmodule mit modprobe geladen: msr, powernow_k8, cpufreq_ondemand* powernowd gestartet* EDIT: Nun sollte powernow die Frequenzen regeln -> powernowd ist nicht notwendig, damit cpupw läuft!* powernowd stoppen * cpupw als daemon gestartet “cpupw -S -d -c /etc/cpupw.conf” -> cpupw regelt nun die Frequenz und die Spannung des ProzessorsIch habe auch den neusten Linuxkernel 2.6.23.8 getestet. Die lspci ausgabe bleibt gleich wie unter Ubuntu – d.h. die vielen unknown devices bleiben!EDIT: Nach dem Tip vom Olaf (update-pciids unter root ausführen, siehe weiter unten) sind die unknown Devices etwas weniger geworden![CODE]uname -aLinux slack 2.6.23.8-smp #2 SMP Sat Nov 17 09:12:07 CET 2007 i686 AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ AuthenticAMD GNU/Linuxlspci00:00.0 RAM memory: nVidia Corporation Unknown device 0547 (rev a2)00:01.0 ISA bridge: nVidia Corporation Unknown device 0548 (rev a2)00:01.1 SMBus: nVidia Corporation Unknown device 0542 (rev a2)00:01.2 RAM memory: nVidia Corporation Unknown device 0541 (rev a2)00:02.0 USB Controller: nVidia Corporation MCP67 OHCI USB 1.1 Controller (rev a2)00:02.1 USB Controller: nVidia Corporation MCP67 EHCI USB 2.0 Controller (rev a2)00:04.0 USB Controller: nVidia Corporation MCP67 OHCI USB 1.1 Controller (rev a2)00:04.1 USB Controller: nVidia Corporation MCP67 EHCI USB 2.0 Controller (rev a2)00:06.0 IDE interface: nVidia Corporation MCP67 IDE Controller (rev a1)00:07.0 Audio device: nVidia Corporation MCP67 High Definition Audio (rev a1)00:08.0 PCI bridge: nVidia Corporation Unknown device 0561 (rev a2)00:09.0 SATA controller: nVidia Corporation MCP67 AHCI Controller (rev a2)00:0a.0 Ethernet controller: nVidia Corporation Unknown device 054c (rev a2)00:0b.0 PCI bridge: nVidia Corporation Unknown device 0562 (rev a2)00:0c.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)00:0d.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)00:0e.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)00:0f.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)00:10.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)00:11.0 PCI bridge: nVidia Corporation Unknown device 0563 (rev a2)00:12.0 VGA compatible controller: nVidia Corporation Unknown device 053b (rev a2)00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control[/CODE]
-
17. November 2007 um 14:11 Uhr #713045smaxTeilnehmer
k1l;263919 said:
Wenn ich “sudo /etc/init.d/cpupw restart” amche kriege ich diese meldung: sudo: unable to execute /etc/init.d/cpupw: No such file or directoryund ohne sudo: -bash: /etc/init.d/cpupw: /bin/sh^M: bad interpreter: No such file or directoryHast du das Startscript unter Windows zwischengespeichert (wegen dem ^M kommt mir das so vor, denn dann stimmen die Zeilenumbrüche nicht)! Starte einen Texteditor deiner Wahl und speicher die Datei mit Unix-Zeilenumbrüchen.Wenn du beim Ubuntu-server nur auf der Konsole bist, müsstes du auch die Start der einzelnen Dienste sehen -> gibts da irgendeine Fehlermeldung?Nur die Angabe der Frequenz mit cpupw habe ich noch gar nicht getestet, bei mir läuft cpupw als Daemon und da werden die Frequenzen automatisch geändert.Ich habe oben ganz vergessen anzugeben, das ich auch Ubuntu 7.10 verwende. Ist dann doch komisch, das das ändern des Governors bei der Servervariante mit cpufreq-set statt cpufreq-selector funktioniert.
-
17. November 2007 um 14:11 Uhr #713034k1lTeilnehmer
Erstmal vielen Dank für deine ausführliche Hilfe!Also bei Ubuntu-Server gibt es kein X; gibt nur die Konsole.also gibts auch keinen S30 gdm oder soAber trotzdem kriege ich es nicht so richtig hin:Also ich habe eigentlich alles so gemacht wie du geschrieben hast, aber folgende funktioniert nicht, ist anders:Bei gutsy 7.10 heisst der Befehl “cpufreq-set -g userspace” anstatt cpufreq-selector -g userspace .desweiteren habe ich dein Script unter /etc/init.d als cpupw gespeichert und mit “sudo update-rc.d cpupw defaults 25” verlinkt.wenn ich jetzt boote ist aber trotzdem immer ondemand als governor gesetzt.(der be-2350 kann die selben governors und noch die taktstufe 2,1ghz zusätzlich zu dem ee sff )jedoch kann ich dann mittels “sudo cpupw -F 0 2100” die frequenz nicht ändern. den Vcore kann ich aber ändernUnd wenn ich dann mit mprime einen belastungs test amche taktet er nicht mehr hoch sondern bleibt bei 1ghz trotz 100% cpu/edit:Wenn ich “sudo /etc/init.d/cpupw restart” amche kriege ich diese meldung: sudo: unable to execute /etc/init.d/cpupw: No such file or directoryund ohne sudo: -bash: /etc/init.d/cpupw: /bin/sh^M: bad interpreter: No such file or directory
-
17. November 2007 um 17:11 Uhr #713086k1lTeilnehmer
Hey danke.Du hattest recht: Durch das Zwischenspeichern auf dem Lappi mit WinXP waren alle Zeilenumbrüche zu “^M” gewandelt.Jetzt wird cpupw richtig geladen. Es tritt aber der effekt auf den du angesprochen hast: Der Vcore ist noch auf Standart gestellt.Allerdings is da noch echt der wurm drin. Wenn ich dann nen mprime -t test starte schmiert das system ab.
-
17. November 2007 um 23:11 Uhr #713148smaxTeilnehmer
So jetzt habe ich cpupw auch noch unter 7.10 ubuntu-server amd64 getestet :D. Bei mir hat (fast) alles funktioniert. Nach dem Login auf der Konsole war das Undervolting einmal aktiv, einmal nicht – anscheinend erfolgt manchmal eine Frequenzänderung der CPU nach dem Start und einmal nicht. Wenn man viele Dienste nach dem cpupw-dienst startet könnte es möglich sein, das sich das aktivieren von Undervolting ausgeht, oder man führt ein Benchmarkprogramm per Startscript kurz aus – sind aber keine schöne und sichere Lösungen, besser wäre es, wenn man cpupw so ändert, das einmal die CPU mehr ausgelastet ist und so dann sicher einmal eine Änderung der CPU-Frequenz auftritt (ich weiss nicht wie das CrystalCPUID unter Windows macht, aber bei mir geht der Verbrauch beim Start des Programms einmal kurz in die Höhe, könnte also soetwas ähnliches sein). Leider sind die erziehlbaren Werte nicht sehr berauschend: Mein System benötigt unter der Ubuntu-Server-Konsole(!) bei 100MBit 22.5W und nach dem Undervolten 20.5 W -> schlechteste Ergebniss meiner Undervoltingtest unter Linux :-k. Ich weiss derzeit auch nicht warum das so ist – vielleicht ist der Kernel anders konfiguriert -> EDIT: Das DVD-Laufwerk war angeschlossen :(, daher die Werte minus ca. 2,5 W – dann passts wieder.Unter 7.10 Ubuntu-Server amd64 habe ich folgende Schritte durchgeführt:* sudo apt-get install build-essential linux-headers-$(uname -r)* sudo apt-get install acpidEDIT: * sudo apt-get install powernowd -> wegen obigen Ubuntu-Startscript, start von powernowd ist aber nicht notwendig* cpupw downloaden und installiert* unter /etc mein Konfigfile cpupw.conf gespeichert* Startscript cpupwd unter /etc/init.d hineinkopiert* Symbolischen Link fürs starten erzeugt: sudo ln -s /etc/init.d/cpupwd /etc/rc2.d/S25cpupwd ->EDIT: “sudo update-rc.d cpupwd defaults 25” ist besser* reboot des SystemsWenn nun Undervolting nicht aktiv, dann kurz mprime -t gestartet – nun sollte Undervolting aktiv sein.Bei mir funktioniert mprime ohne Probleme, jedoch habe ich die Spannung im Idle von 0.8 auf 0,85V erhöht weil mir der Rechner heute Vormittag auch einmal abgeschmiert ist.@k1l: Wenn dir der Rechner bei mprime abschmiert, dann hast du entweder zu wenig Spannung am Prozessor oder ein falsches Konfigfile.Falls der BE-2350 wirklich einen zusätzlichen Takt hat (also 4 Takte) kann sollte das Konfigfile etwa so ausschauen (VID muss natürlich noch besser angepasst sein!!):[CODE]1230442100000 20 -1 -12000000 22 -1 -11800000 24 -1 -11000000 28 -1 -12[/CODE]EDIT:Habe bei den obigen Posts einige kleine Fehler von mir ausgebessert.Habe oben auch das Startscript für den cpupw geändert. Jetzt werden alle benötigten Kernelmodule von diesem Script geladen und es sollte nun nicht mehr notwendig sein powernowd zu installieren bzw. zu starten.EDIT: Bei meinen Tests mit dem neuen cpupw Startscript und ohne powernowd hat bei mir das Undervolten immer auf anhieb geklappt – der Effekt, das das Undervolting nicht aktiv war ist nun nicht mehr aufgetretten, d.h. aber nicht das es nicht mehr auftretten kann.
-
18. November 2007 um 11:11 Uhr #713176k1lTeilnehmer
smax danke für die Arbeit.Ich werde es heute nochmal testen. Ich denke, dass sich powernowd und cpufreq und cpupw in die quere kommen und dann den Vcore nicht richtig anpassen. die Vcores habe ich alle immer mit mprime getestet ob sie stabil laufen. (vorher mit multi und vcore im Bios eingestellt)
-
18. November 2007 um 12:11 Uhr #713204
-
18. November 2007 um 20:11 Uhr #713277smaxTeilnehmer
0laf;264100 said:
@smax: probier als root mal update-pciids auszuführenDanke, habe nun update-pciids und update-usbids durchgeführt.Einige unknown Devices sind nun sowohl bei Ubuntu mit 2.6.22.1 4 Kernel als auch unter Slackware mit 2.6.23.8 Kernel weniger geworden :D. Habe nun die lscpi von Slackware oben im Bericht über meine cpupw-Tests unter Slackware reinkopiert.
-
20. November 2007 um 18:11 Uhr #713623k1lTeilnehmer
So.Ich bin jetzt nochmal mit einer ganz neuen Installation und diesesmal 64bit an die Sache herangegangen.Jedoch entgegen deinr Anleitung musste ich Powernowd und cpufrequtils installieren bevor cpupw funktioniert .( echo -n userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor funktionierte nicht bis die beiden tools installiert waren).Aber jetzt ( nachdem cpufrequtils wieder gelöscht ist) funktioniert es soweit ganz gut. Da beim booten auch noch proftp und samba etc geladen werden ist meistens der Vcore schon angepasst.Jedoch hatte ich ein problem beim rebooten. Der Server hing sich beim runterfahren auf. Nachdem ich den manuell erstellten symlink (sudo ln -s /etc/init.d/cpupwd /etc/rc2.d/S25cpupwd ) gelöscht und durch “sudo update-rc.d cpupwd defaults 25” autoamtisch für alle system starts und stops generieren lassen habe ist das problem behoben.
-
24. November 2007 um 19:11 Uhr #714320smaxTeilnehmer
Jedoch entgegen deinr Anleitung musste ich Powernowd und cpufrequtils installieren bevor cpupw funktioniert .( echo -n userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor funktionierte nicht bis die beiden tools installiert waren).
Ich habe es jetzt nochmal nachvollzogen und das “echo -n userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor” hat bei mir unter Ubuntu überhaupt nicht funktioniert, egal ob powernowd und cpufrequtils installiert waren oder nicht. Daher habe ich es oben aus dem Bericht wieder rausgenommen. Der Grund ist meiner Meinung dieses sudo unter Ubuntu, denn das obige Startscript für cpupw macht genau das gleiche! Wenn ich unter Ubuntu in den Runlevel 1 gehe (dann bin ich echter root), kann ich nach den manuellen laden der benötigten Modulen den Governor sehr wohl mit “echo -n ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor” setzen. Unter Slackware funktioniert das manuelle setzen des Governors (wenn man root ist) immer.
Wie bereits oben angegeben, benötigt das Startscript für cpupw ein weiteres Script, das nach der Installation von powernowd verfügbar ist. Deshalb ist es nur notwendig powernowd zu installieren, aber nicht zu starten!Jedoch hatte ich ein problem beim rebooten. Der Server hing sich beim runterfahren auf. Nachdem ich den manuell erstellten symlink (sudo ln -s /etc/init.d/cpupwd /etc/rc2.d/S25cpupwd ) gelöscht und durch “sudo update-rc.d cpupwd defaults 25” autoamtisch für alle system starts und stops generieren lassen habe ist das problem behoben.
Ich hatte nie ein Problem beim rebooten, jedoch ist es natürlich besser den Prozess zu stoppen (habe dein update-rc.d oben angegeben). Ich persönlich habe aber lieber den manuellen Weg und würde nur dort wo es notwendig ist diese zusätzlichen Links setzen.
-
3. Dezember 2007 um 21:12 Uhr #716051kultexTeilnehmer
ich hätte da noch ein paar Fragen, nachdem ich ein ähnliches System habe und auch gerade mit Xubuntu 7.10 am testen bin:
Athlon X2 3800+ SFF
Asrock AliveNF7G-HDready
2 x MDT DIMM 512MB PC2-4200U CL4 (DDR2-533-8) singlesided
PicoPSU 120 W /12 V
12V/60W Netzteil von Morex
1 x Western Digital Scorpio 160GB 8MB SATA (WD1600BEVS)
Thermaltake Sonic Tower
Scythe S-Flex 800Also ich habe das Standard-Xubuntu 7.10 auf cpufreq-ondemand (siehe Anleitung) umgestellt, das bringt ein ganz klein wenig (ich habe leider den Standard-Wert nicht aufgeschrieben)
Am Board LPT und Com abgeschaltet – den Rest gelassen (Audio und Firewire) – “sudo ethtool -s eth0 speed 100 duplex half autoneg off” hat gar nichts gebracht.
Meine idle Werte sind XFCE/DVI 18,7 W – XFCE/VGA 19,4 W – Console/DVI 18,4 W und das was ich eigentlich als idle ansehe – Monitor auf schwarz geschaltet – xset dpms 100 100 200 – ist auf DVI und VGA Ausgang gleich hoch mit 17,4 W
diese Werte sind mit dem Conrad Energy Check 3000 gemessen!
bevor ich die Pfrimelei mit cpupw angehe, würde ich gerne wissen, wieviel das gegenüber dem Standard-Ubuntu-Wert einspart (falls Du den Wert hast) – ich bin nämlich mit meinen 17,4 W ziemlich zufrieden …..
-
4. Dezember 2007 um 20:12 Uhr #702561smaxTeilnehmer
Habe nun nochmal nachgemessen. Unter Ubuntu Server 7.10 amd64 sinkt der Verbrauch um 2.4 W, wenn ich auf 0.8V untervolte (Hey dann würdest du schon an er 15W Grenze knabbern!). Ev. ist es besser wenn du die ältere Version von cpupw einsetzt. Ich habe cpupw nicht im Dauereinsatz, da ich derzeit Linux privat nicht verwende und nur fürs Testen installiert habe.
“sudo ethtool -s eth0 speed 100 duplex half autoneg off” hat gar nichts gebracht.
Ist die Netzwerkbuchse so wie bei mir mit einem Gigabitswitch verbunden? Wenn nicht oder die Netzwerkbuchse ist “nur” mit einem 100Mbit Switch/Router verbunden dann hilft das runtersetzen auf 100Mbit natürlich nichts, wenn doch dann ist das eine eigenart des (meines) Abitboards.
-
4. Dezember 2007 um 21:12 Uhr #716392kultexTeilnehmer
danke fürs nachmessen – das mit den 15 W stimmt leider nicht, da zumindest mein Conrad Energy Chech um 2,2 W zuwenig anzeigt – siehe hier
Nachdem Du ja so ziemlich das selbe System hast, könntest Du mal den standby Wert messen (ohne Brenner) – sollte so um die 3,7 W sein – könntest Du Deinen Wert eventuell posten?Und das mit dem ethtool ist natürlich so – steckt an der 100MBit Dose des Routers – ist mir aber erst in der Nacht gedämmert ……..
und ich werd das ausprobieren mit cpupw auf nach Weihnachten verschieben – zu viel zu tun im Moment, aber trotzdem mal Danke für die Anleitung
-
5. Dezember 2007 um 11:12 Uhr #716468k1lTeilnehmer
Also bei mir habe ich folgende Werte gemessen:Standby: 3Wbei standart Vcore: ~1,27V = 43-44Wbei CnQ standart: 1000Mhz 1,1V= 40-41Wbei cpupw undervoltet: 1000Mhz 0,85V = 37-38W
-
5. Dezember 2007 um 11:12 Uhr #716477kultexTeilnehmer
@ k1l
die Frage ist, welche Festplatten, welches Netzteil etc Du hast – der hohe Stanndard Wert läßt drauf schließen, dass der wirkliche Standby-Wert bei 5,2 W sein könnte … es geht darum, herauszufinden, ob das Energy Check bei allen gleich 2,2 W zu wenig mißt, oder ob die “falschen” Angaben unterschiedlich sind
-
5. Dezember 2007 um 20:12 Uhr #716573k1lTeilnehmer
folgende Hardware: -picoPsu, rot, 80Watt, 120Watt peak-Asrock ALiveNF7G-HDready mit Kühler Chipsatz Zalman NB47J-Amd Am2 X2 Be-2350 Boxed (war nen gutes Angebot bei einem Händler vor Ort nachdem ich leider auf den Ocbyte Schwindler reingefallen bin :/ )-2mal Samsung SpinPoint T166 500GB 16MB SATA II (HD501LJ)-A-DATA Vitesta DIMM Kit 2048MB PC2-6400U CL5 (DDR2-800)gemessen mit nem Lidl-Messgerät
-
6. Dezember 2007 um 10:12 Uhr #716666kultexTeilnehmer
super – selbes Mainboard wie ich
Auf Grund des standby Werts glaube ich, dass auch das Lidl zu wenig anzeigt – glaube nicht, dass eine 2,5″ WD um 0,7 W mehr als zwei 3,5″ Samsung brauchen
fallst mal Zeit und Lust hast – die 2 HDs abstecken und standby messen und eine Puppy CD booten (ist das kleinste Linux mit 2.6.21 Kernel) und ohne die HDs messen (interessiert mich, was der BE 2350 für einen idle Wert hat) – kann ich dann mit meinem 3800+ SFF vergleichen
-
8. Dezember 2007 um 2:12 Uhr #717024smaxTeilnehmer
Hier nochmal eine kurze Zusammenfassung:Es gibt mehrer Programme zum Regeln der Frequenz und Spannung der CPU. Hier einige Beispiele:* cpufreq: regelt Frequenz und Spannung im Bereich von C’nQ.* powernowd: regelt Frequenz und Spannung im Bereich von C’nQ.* cpupw: regelt Frequenz und Spannung, kann zusätzlich die CPU undervolten.Diese 3 Programme(daemonen) haben miteinander nichts zu tun und sind voneinander unabhängig!Damit diese Programme die Frequenz und Spannung regeln können, muss als governor userspace eingestellt werden.Ausserdem muss im BIOS C’nQ aktiviert oder auf AUTO gestellt werden.Die Frequenz und Spannung im Bereich von C’nQ anpassen funktioniert auch ohne den oben angeführten Daemonen. Dazu muss man nur einigen Kernelmodule laden und manuell den governor setzen. So habe ich es für mein AMD-System unter Slackware 12.0 mit Kernel 2.6.23.8 getestet:* im BIOS meines Abits C’nQ auf AUTO eingestellt* Slackware booten und zum root wechseln* modprobe powernow-k8: ordner /sys/devices/system/cpu/cpu0/cpufrequ ist nun verfügbar* governors laden: * modprobe cpufreq_ondemand (regelt Frequenz und Spannung im Bereich von C’nQ dynamisch)* modprobe cpufreq_conservative (ähnlich ondemand)* modprobe cpufreq_powersave (setzt Frequenz und Spannung im Bereich von C’nQ auf den niedrigsten Wert)* modprobe cpufreq_performance (setzt Frequenz und Spannung im Bereich von C’nQ auf den höchsten Wert)* Verfügbare governors nun anschauen: “cat /sys/devices/system/cpu/cpu0/cpufrequ/scaling_available_governors” -> es sollten nun alle vorher geladenen governors sichtbar sein* mit “echo -n ondemand > /sys/devices/system/cpu/cpu0/cpufrequ/scaling_governor” einen verfügbaren governor setzen -> nun sollte schon der Kernel automatisch CPU-Frequenz und Spannung regelnNatürlich kann man auch die anderen governors benutzen.Wenn man cpupw manuell testet, muss man folgende Schritte durchführen (unter Slackware 12.0):* im BIOS C’nQ auf AUTO einstellen* booten und zum root wechseln* modprobe powernow-k8: ordner /sys/devices/system/cpu/cpu0/cpufrequ ist nun verfügbar* modprobe msr* mit “echo -n userspace > /sys/devices/system/cpu/cpu0/cpufrequ/scaling_governor” den userspace governor setzen* z.B. mit “cpupw –voltage 0 22” die Spannung runterregeln* als Daemon laufen lassen: “cpupw -S -d -c /etc/cpupw.conf” wobei natürlich cpupw.conf auf den eigenen Prozessor anzupassen ist. Eine genauere Anleitung und wie die cpupw.conf ausschauen muss, könnt ihr aus den Thread entnehmen.Die vielen unknown devices unter Linux werden wahrscheinlich auch relativ schnell verschwinden, denn hier sind die pciids des nVidia Chipsatzs schon gemeldet und hoffentlich bald kann man dann mit “update-pciids” diese neuen ids einspielen.Ich habe heute auch noch eine PCIe x1 Netzwerkkarte (Intel PRO/1000 PT Server Adapter) im PEG (PCIe x16) Slot des Abits Motherboards getestet. Das hat wunderbar funktioniert und daher muss der PEG-Slot nicht nur für eine Grafikkarte benutzt werden!
-
20. Dezember 2007 um 16:12 Uhr #719629NebuKTeilnehmer
Halloechen Zusammen,
ich habe bei mir einen aehnlichen setup, genauer gesagt ein BE-2300 auf dem “Forums-Asrock”. Linux-PHC unterstuetzt das Teil ja nochnicht, und dieser ACPI Tables Krempel ist mir irgendwie zu Bastelig. Also MSR wie auch hier.
System ist ein Debian mit einem debian-patchset 2.6.22 Kernel. MSR und powernow-k8 sind geladen. cpupw wirft mir allerdings ein readmsr, in read: invalid argument entgegen. Sowohl beim -s als auch beim setzen einer neuen Voltage mit -V. Resultat: die neue voltage wird nicht gesetzt.
Hat jemand ne idee was man da schoenes machen koennte?
Danke im Vorraus und Gruss
– Dario -
20. Dezember 2007 um 18:12 Uhr #719666smaxTeilnehmer
3 Dinge solltest du kontrollieren:1.) Welches Debian verwendest du, i386 oder amd64?Es gibt ein Problem bei der i386-Variante. Hier musst du vor dem kompilieren das Makefile umschreiben:Original: gcc -O2 cpupw.c libmsr.c msr-centrino.c msr-powernow-k8.c -o cpupwModifiziert: gcc -O2 -D_FILE_OFFSET_BITS=64 cpupw.c libmsr.c msr-centrino.c msr-powernow-k8.c -o cpupw2.) Du solltest auch noch kontrollieren, ob der Governor auf “userspace” gesetzt ist (cat /sys/devices/system/cpu/cpu0/cpufrequ/scaling_governor).3.) Beim setzen der Spannung habe ich folgendes verwendet: cpupw –voltage 0 22Wobei 0 die CPU ist und 22 die VID – vielleicht hast du auch nur die CPU (0) vergessen.
-
20. Dezember 2007 um 20:12 Uhr #719698NebuKTeilnehmer
Halloechen,
danke fuer die fixe Antwort. 2) und 3) kann ich ausschliessen. 1) waere also der “way to go” – ist ein -686 kernel auf dem 32bit system. Problem ist dass grad nich testen kann weil die nagelneue Platte gemeint hat sich verabschieden zu muessen -.-.
Werde testen sobald ich den Ersatz auf Gewaehrleistung hier habe. Danke trotzdem! 😛
Gruss
– Dario -
30. Dezember 2007 um 12:12 Uhr #721861dadoTeilnehmer
Moin zusammen,nachdem hier viele interessante Beiträge herumschwirren, musste ich mich doch mal anmelden, um meinen Senf abzugeben. 😉 Finde ich sehr gut, was hier abgeht. Aber eine Frage habe ich auch noch. smax kommt ja auf unter 18W. Nun habe ich hier von AsRock das NF7G an einem 80+ Netzteil und komme im Idle auf ca. 60 Watt. Das verwundert mich doch etwas. Im Bios habe ich den Prozessor auf 0.95V eingestellt (bei 0.9 bootet er nicht mehr) und den powernowd-k8 und den userland governator bei systemstart gelanden (debian lenny). Damit komme ich dann direkt von ca 76W auf die 60W runter. (alles gemessen mit Conrad Energy Check 3000). 6W von meinen 60 verbrät noch eine SCSI-Karte, die ich aber fürs Backup brauche. Meine Frage, werden die Bioswerte zur Spannung unter Lenny beibehalten oder muß ich dafür explizit cpupw verwenden?DankeDado
-
30. Dezember 2007 um 14:12 Uhr #721932OriksonTeilnehmer
dado;273469 said:
6W von meinen 60 verbrät noch eine SCSI-Karte, die ich aber fürs Backup brauche.Und die Platten? SCSI Platten sind nicht umbeding die sparsamsten 😉
Wie viel Watt hat den dein 80+ Netzteil und wie ist die Modelbezeichnung davon? Wenn du die Möglichkeit hast, kannst du mal ne PicoPSU versuchen, mit der spart man bei so niedrigem Verbrauch einfach am meisten.
-
30. Dezember 2007 um 14:12 Uhr #721923smaxTeilnehmer
Hallo dado und herzlich Willkommen!
Bei meinem ABIT AN-M2HD kann ich die Spannung des Prozessors nicht verstellen, deshalb weiss ich nicht, ob beim Asrock die Spannung beibehalten wird, aber ich glaube schon, weil dann C&Q wahrscheinlich ausgeschaltet ist. Ev. kannst du es ja mit cpupw auslesen, mit welcher Spannung der Prozessor aktuell versorgt wird.
Nach laden der benötigten Kernelmodule einfach “cpupw –status” als root ausführen und auf die 3 Punkte des oberen Posts aufpassen und dann solltest du die aktuelle Frequenz und Spannung angezeigt bekommen.Der Idle-Verbrauch deines Systems kommt mir sehr hoch vor, im Vergleich was hier die anderen mit dem Asrock erreichen. Welches 80+ Netzteil verwendest du?
-
30. Dezember 2007 um 15:12 Uhr #721942smaxTeilnehmer
Orikson;273547 said:
Wie viel Watt hat den dein 80+ Netzteil und wie ist die Modelbezeichnung davon? Wenn du die Möglichkeit hast, kannst du mal ne PicoPSU versuchen, mit der spart man bei so niedrigem Verbrauch einfach am meisten.Gerade mit mehreren 3,5″ Platten wird es mit dem PicoPSU schon knapp, vorallem beim einschalten. Da würde ich eher ein Seasonic SS-300SFD empfehlen (siehe hier).
Das ist ab ca. 40-50 Watt Verbrauch dem Pico ebenbürtig und kostet doch weniger. -
30. Dezember 2007 um 16:12 Uhr #721977dadoTeilnehmer
Moin moin,
ahh, ich sehe aufgrund der antworten, daß ich mich verschrieben habe / etwas praziser sein muß.
Also Netzteil: Es ist ein etwa 2-3 Jahre altes Enermax (hinten noch mit Poti zur Lüftersteuerung und einem _80_er Lüfter unten und einem 80er hinten), also (höchstwahrscheinlich) kein 80+. Ich vermute aber einen einigermassen guten Wirkungsgrad, da ich im S3 Standby 4 Watt brauche (im Vergleich zu aus mit 3,5W).
Der SCSI-Adapter ist ausschließlich für einen externen DLT-Streamer, den ich mit dieser USB-schaltenbaren Steckdosenleiste von Conrad bei Bedarf via Script an/ausschalte.Ne Pico hab’ ich grad’ nicht zur Hand und für die Modellbezeichnung des Enermax müßte ich jetzt mein LianLi V300a aufschrauben. Heute abend vielleicht. Aber selbst mit ‘nem unterirdischen Wirkungsgrad dürfte ja nich das 2-3fache an Watt dabei rumkommen. Was seltsam ist, daß die Corespannung via sensors gemessen immer bei 1.12 rumdümpelt, egal ob im Idle oder unter Volllast. Ich vermute einen Meßfehler bei Sensors.
CPUPW gibts nicht als .deb, da bin ich immer ein bisschen vorsichtig, an der Paketverwaltung vorbei was zu installieren. Mal sehen. ob ich das eventuell heute noch mache.Achja, aktuell zeigt mein Messgerät 57,7W im Idle und jetzt ist auch noch ne 1GB CF Karte über einen CF-IDE Adapter drin (soll die Boot’platte’ werden, wenn ich mal rausfinde, wie ich Debian das Schreiben auf die Systemplatte abgewöhne (außer noatime setzen)). Dann soll die Samsung nur noch Daten aufnehmen und nachts in den Standby gehen.
Bis denne
Dado -
1. Januar 2008 um 18:01 Uhr #722423dadoTeilnehmer
Ich mal wieder, 😉
bin nun etwas weiter. Habe cpupw soweit installiert. Damit stellte ich fest, das sensors mit 1.1V Corespannung doch den korrekten Wert ausgab. Also obwohl im Bios .9V eingestellt sind, sind es unter Debian Lenny erst mal 1.1V. Dies konnte ich nun auf 0.8V bei 1GHz senken (obwohl die Möhre mit 0.8V im Bios nicht mal sauber startet). Damit komme ich bei meinem Setup bei Idle auf 51.1 Watt. Wenn ich jetzt zum Vergleich mal die SCSI-KArte rausnehme, bin ich aber immer noch bei ca 45W. Deshalb meine _Frage_ an die unter 20 Watt Künstler:
Wenn Ihr im Idle messt, ist dann die HDD runtergefahren oder läuft die noch? Aber selbst dann, kann es ein das das Netzteil dermaßen viel ausmacht? Ihr verwendet ja meist ein Piconetzteil, mein derzeit verbautes ist was älteres, aber das wäre ja dann ungefähr der doppelte Verbrauch aufgrund von Unterschieden beim Wirkungsgrad. 🙁
Letzte Frage, Kennt jemand eine Möglichkeit, das System nach Inaktivität einer gewissen Zeit in den Standby zu bringen. Ich habe sleepd versucht, aber der macht mal gar nix. Das System läuft einfach weiter ohne sich um die eigestellten Werte zu kümmern.
Bis denne
Dado -
1. Januar 2008 um 22:01 Uhr #722513smaxTeilnehmer
dado;274076 said:
Wenn Ihr im Idle messt, ist dann die HDD runtergefahren oder läuft die noch? Aber selbst dann, kann es ein das das Netzteil dermaßen viel ausmacht? Ihr verwendet ja meist ein Piconetzteil, mein derzeit verbautes ist was älteres, aber das wäre ja dann ungefähr der doppelte Verbrauch aufgrund von Unterschieden beim Wirkungsgrad. 🙁Bei meinem Messungen fahre ich den Rechner normal hoch, lasse Ihn solange laufen, bis die Festplattenzugriffe weniger werden (ca. 2 Minuten) und führe dann meine Messungen durch. Die Platte läuft dann im Idle-Mode.Das dein Netzteil hauptsächlich an dem hohen Verbrauch schuld ist kann schon sein, denn ich habe selber ähnliche Erfahrungen mit einem alten Antec-Netzteil gemacht.Aber ich glaube es ist besser, du beschreibst deine komplette verbaute Hardware, dann kann man eine seriösere Analyse durchführen.
dado;274076 said:
Letzte Frage, Kennt jemand eine Möglichkeit, das System nach Inaktivität einer gewissen Zeit in den Standby zu bringen. Ich habe sleepd versucht, aber der macht mal gar nix. Das System läuft einfach weiter ohne sich um die eigestellten Werte zu kümmern.Du verwendest vermutlich ein journaling Dateisystem (ext3), da wird ständig auf die Platte zugegriffen (/var/log) und die Festplatte schläft nicht ein. Mache eine RAM-Disk für /var/log und dann kannst du mit hdparm (ich glaube irgendwas mit hdparm -S .. -> lies die manpage) die Zeit nachdem sich die Festplatte schlafen legen soll, einstellen.
-
1. Januar 2008 um 23:01 Uhr #722539dadoTeilnehmer
Hi smax,
Ja, habe ext3 laufen. Ich weiss, das ständig in die Logs geschrieben wird und noatime habe ich auch noch noch gesetzt, aber stören die Logschreibereien den sleepd? Dann dürfte das ja bei fast niemanden funktionieren, den die meisten Installationen verwenden ja heutzutage eine Journaling-FS. HDparm werde ich einsetzten, wenn auf der Samsung nur noch Daten sind und ich von der CF boote.
also Config ist Folgende:
Enermax eg365ax-ve
AsRock NF7g-HDready BIOS 1.60
X2 4000+ EE (BIOS 0.9V, cpupw 0.8V@1GHz) semi passiv gekühlt
2x 1GB MDT 800er
1x 3,5″ Samsung SP2504C
1x Adaptec 2944UW (ca. 6W – brauche ich für externen Streamer)
1x Sandisk 1GB Extreme III CF in CF-IDE-Adapter (soll bald das System drauf)
Damit komme ich im Idle unter Debian testing auf ca 51WIch habe in meinem alten Heimserver (dieser hier soll ihn ersetzen) noch so ein externes (Laptop)netzteil und eine interne DC-DC Wandlerplatine (ist ein Morex Travla C137 Gehäuse). Das wird wohl effizienter sein als mein Enermax in diesem Lastbereich, allerdings weiss ich nicht, ob es so effizient wie ein Pico ist und einen P4 Stromstecker hat das Teil auch nicht. Hoffentlich haben Arlt oder kmelektronik vor Ort einen Adapter dafür …
So und nu’ bin ich für jede seriöse Analyse zu haben. 🙂
Bis denne
Dado -
2. Januar 2008 um 9:01 Uhr #722572smaxTeilnehmer
dado;274229 said:
Ja, habe ext3 laufen. Ich weiss, das ständig in die Logs geschrieben wird und noatime habe ich auch noch noch gesetzt, aber stören die Logschreibereien den sleepd? Dann dürfte das ja bei fast niemanden funktionieren, den die meisten Installationen verwenden ja heutzutage eine Journaling-FS. HDparm werde ich einsetzten, wenn auf der Samsung nur noch Daten sind und ich von der CF boote.Leider habe ich das oben falsch verstanden. Ich habe geglaubt, das du die Platte schlafen legen willst, dabei meinst du das System (ich kenn nicht den sleepd). Dabei sollte es natürlich keine Rolle spielen, welches Dateisystem du verwendest ;). Unter Linux habe ich früher (niedrige 2.6. Kernelversion) ein eigenes Script gehabt, welches den Rechner schlafen legt. Das Script hat mehrere Dinge überprüft und hat dann den Rechner mittels “echo 3 > /proc/acpi/sleep” in den SuspendToRam-Modus (S3) geschickt. Mittels “echo 4 > /proc/acpi/sleep” sollte der Rechner in den Suspend2Disk-Modus gehen (S4). Mittels “cat /proc/acpi/sleep” kann man schauen, welche Sleepmoduse unterstützt werden. Hier findest du eine kleine Anleitung. Leider weiss ich jetzt aber nicht, ob das Kernelinterface /proc/acpi/ bei den neueren 2.6.x Kernels bzw. bei deinem debian überhaupt noch existiert.
Bei mir hat damals unter Linux der S3-Mode super funktioniert, zuwerst hatte ich aber grosse Probleme mit dem Treiber meiner Netzwerkkarte und das aufwecken funktionierte nicht. Jetzt verwende ich FreeBSD bei meinem Server und auch dort funktioniert der S3-Mode und das aufwecken sehr gut.dado;274229 said:
Enermax eg365ax-ve
AsRock NF7g-HDready BIOS 1.60
X2 4000+ EE (BIOS 0.9V, cpupw 0.8V@1GHz) semi passiv gekühlt
2x 1GB MDT 800er
1x 3,5″ Samsung SP2504C
1x Adaptec 2944UW (ca. 6W – brauche ich für externen Streamer)
1x Sandisk 1GB Extreme III CF in CF-IDE-Adapter (soll bald das System drauf)
Damit komme ich im Idle unter Debian testing auf ca 51WHier scheint mir der Hauptschuldige wirklich das Enermax-Netzteil zu sein.
Hier habe ich für mein Stromsparsystem einige Kombinationen von Picos und Tischnetzteilen sowie einem billigen 110W ATX-Netzteil getestet. Ich mich noch dunkel errinnern, das ich zuerst mit meinem alten Antec-Netzteil auf einen Verbrauch im 4x Wattbereich gekommen bin.
Bei den anderen Kombonenten erkenne ich zumindest keinen grossen Stromschlucker.Misst du bei deinen Verbrauchsmessungen auch die per USB-schaltbare Steckdosenleiste mit? Wenn ja, kontrolliere mal deren Verbrauch.
-
3. Januar 2008 um 1:01 Uhr #709244dadoTeilnehmer
So,
nun habe ich mal den DC-DC Wandler aus meinen Travla c137 Gehäuse eingebaut (80W). Damit komme ich jetzt im Idle immerhin auf 41W (also ca. 10 Watt verbessert), verstehe aber immer noch nicht, wieso es soviel mehr ist. 6 Watt gehen auf den SCSI-Hostadapter, schätze ca. 5 Watt Differenz zwischen einer 3,5 und 2,5 HDD. Die CF und der IDE-Adapter werden ja wohl kaum 10 Watt fressen, werde ich aber auch nochmal testen. Kann der EE SFF AMD nochmal soviel mehr sparen als ein undervolteter EE? Achja, die Steckdose war bislang nicht dran, aber laut Forumsberichten zieht die so gut wie nix (ich glaube unter 2W). Und meine 2 80er Pabstlüfter ziehen zusammen ja nicht mal 1 Watt.
Wo gehen sie nur hin, die ganzen Watts 😉
Naja, aber 41Watt ist jetzt so schlecht auch nicht, wenn ich das System jetzt noch auf die CF umziehen lassen und dann die Samsung nach ner Stunde jeweils schlafen schicke, wenn niemand drauf zugreift, dann spare ich da ja nochmal das ein oder andere Watt.
Bis denne
Dado -
3. Januar 2008 um 10:01 Uhr #722734smaxTeilnehmer
dado;274528 said:
nun habe ich mal den DC-DC Wandler aus meinen Travla c137 Gehäuse eingebaut (80W).Habe kurz geschaut, das C137 gibt es mit 90 oder 120 W externen Tischnetzteil. Welches hast du da und welche Marke bzw. Bezeichnung hat das NT?
Bei meinem Test war ein Travala FSP090-1ADC21 90W dabei (ist das deins?), das hat immerhin 3 W mehr als das Morex 80W Netzteil (ist ein Hi-Power AD1280MB) verbraucht. Das Travala FSP120-1ADE21 120W war dann schon um etwa 5 W schlechter.
Hier bei den Stromsparsystemen wird meistens das Morex 80 W verwendet.dado;274528 said:
Kann der EE SFF AMD nochmal soviel mehr sparen als ein undervolteter EE?Wenn ein unterschied ist, dann nur sehr wenige Watt im Idle.
Jetzt bleiben noch etwa 5 W übrig für zusätzliche CF und DC-DC Wandler (PicoPSU gegen den Travla DC-DC Wandler).
-
3. Januar 2008 um 12:01 Uhr #722762dadoTeilnehmer
Werd ich heute nachmittag mal nachsehen, wenn ich wieder zuhause bin. Bin aber relativ sicher, dass es nicht das 120er war.
Bis denne
Dado -
3. Januar 2008 um 23:01 Uhr #722935dadoTeilnehmer
Also:
Das Netzteil ist ein FSP090-1adc21 -> 90W. Das ist das, was Du gestestet hattest. OK, das bedeutet, dass ich da gar nicht so schlecht liege. 🙂
Jetzt muß ich demnächst nochmal CF und Adapter testen…
Mir ist allerdings gerade noch was ganz anderes aufgefallen. Das Tischnetzteil hat am Ausgang eine grüne LED, die leuchtet, wenn das Netzteil am Saft hängt. Nun stellte ich gerade fest, dass der Rechner nicht richtig startet und dabei leuchtete die LED nicht mehr, sondern blinkte schwach vor sich hin. Genauso der beleuchtete Powerbutton. Ich mußte erst x-mal den Stecker abziehen, bis der Rechner mal startete.
Ich habe jetzt mal umgestellt, damit der Rechner nicht sofort startet, wenn Strom angelegt wird, dann gehts. Ärgerlich ist das aber trotzdem. Kennst Du das Problem?
Bis denne
Dado -
7. Januar 2008 um 4:01 Uhr #723768StevieTeilnehmer
hallo zusammen!
danke dir smax für die super howto.
hab das jetzt mal soweit umgesetzt wie es ging aber dennoch ein problem.bei mir läuft ein turion tl-56, der folgende mhz-stufen unterstützt:
800
1600
1800als distro kommt gutsy 386 zum einsatz. das makefile habe ich laut der
änderungen angepasst.
da ich unter windows rmclock am laufen hatte, habe ich dort einen screenshot von
den stabilen voltage-werten gemacht.wie man sieht hat der tl-56 unter windows mehr frequenz-zustände
800, 1000, 1200, 1400, 1600 und 1800.
weiß einer warum unter linux nur 3 angesprochen werden können?
okay das nur am rande, jetzt zum eigentlichen problem.ich habe zuerst die voltage für 1800 eingestellt, was auch sehr gut klappte.
unter rmclock hatte ich 0,925 v eingestellt, was nach der rechnung einer
VID von 25 entspricht. das habe ich dann auch eingetragen.
klappte auch alles wunderbar beim überprüfen mit cpupw -s.
so, nun habe ich die 800 mhz in angriff genommen.
da hatte ich eine voltage von 0,688 v. da der wert nach der rechnung nicht
gut teilbar war, habe ich den nächsthöheren genommen, 0,700 v.
(1550-700)/25 ergibt bei mir eine VID von 34. das habe ich dann auch eingetragen und gleich ein cpupw -s gemacht. schreck las nach, mir wurde eine voltage von 1,5 v angezeigt. schnell in die shell den standardwert VID 30 eingegeben und dabei ist mir dann der rechner abgestürzt. ich weiss jetzt nicht, ob cpupw den wert einfach falsch ausliest und beim zurückändern abstürzt oder die cpu einfach dicht macht.mir ist das jetzt irgendwie zu gefährlich. hat jemand ne ahnung an was das liegen kann?
viele grüße,
stevie
-
7. Januar 2008 um 10:01 Uhr #723776dadoTeilnehmer
Moin moin,
nach meinen bisherigen Versuchen würde ich folgende Möglichkeiten in Betracht ziehen:
1) das Modul msr ist nicht geladen und cpupw zeigt dann nur Unsinn an
2) bei mir war es so, das wenn ich zu weit runtergegangen bin mit der Spannung er irgendwann nicht mehr den Wert genommen hat, den ich mit –voltage übergeben habe, sondern wieder auf einen hohen Wert zurückgesprungen ist (was sich auch am Verbrauchsmessgerät gezeigt hat). Ich konnte dann Spannungswerte angeben, wie ich wollte, aber bis zum Neustart hat der Proz das nicht mehr darauf reagiert.Ich würde es also mal mit den nächsthöheren Werten versuchen.
Bis denne
Dado -
7. Januar 2008 um 12:01 Uhr #723782smaxTeilnehmer
Stevie;275686 said:
wie man sieht hat der tl-56 unter windows mehr frequenz-zustände
800, 1000, 1200, 1400, 1600 und 1800.
weiß einer warum unter linux nur 3 angesprochen werden können?Ich glaube die einzelnen Frequenzen stehen irgendwo im BIOS (siehe im ersten Post: ACPI DSDT-Tabellen) und hier werden die Werte ausgelesen. Wie das RM-Clock mit den den mehreren Frequenz-Zustände macht weiss ich nicht, aber meiner Meinung ist das nicht notwendig.
Stevie;275686 said:
ich habe zuerst die voltage für 1800 eingestellt, was auch sehr gut klappte.
unter rmclock hatte ich 0,925 v eingestellt, was nach der rechnung einer
VID von 25 entspricht. das habe ich dann auch eingetragen.
klappte auch alles wunderbar beim überprüfen mit cpupw -s.
so, nun habe ich die 800 mhz in angriff genommen.
da hatte ich eine voltage von 0,688 v. da der wert nach der rechnung nicht
gut teilbar war, habe ich den nächsthöheren genommen, 0,700 v.
(1550-700)/25 ergibt bei mir eine VID von 34. das habe ich dann auch eingetragen und gleich ein cpupw -s gemacht. schreck las nach, mir wurde eine voltage von 1,5 v angezeigt. schnell in die shell den standardwert VID 30 eingegeben und dabei ist mir dann der rechner abgestürzt. ich weiss jetzt nicht, ob cpupw den wert einfach falsch ausliest und beim zurückändern abstürzt oder die cpu einfach dicht macht.Warst du root (oder hast du sudo verwendet) wie du wieder den Standardwert setzen hast wollen? Wenn nicht, dann zeigt dir cpupw auch eine Spannung von 1.5 V an, weil er den VID-Wert nicht auslesen kann und daher nur mehr den fixen Anteil(-> 1.5) der Formel übrigbleibt, dass muss daher noch nicht heissen, das wirklich 1.5 V an der CPU anliegen.
Wieso probierst du nicht den umgekehrten Weg und fangst bei der normal Spannung der CPU bei der Taktfrequenz 800 MHz an und senkst dann die Spannung Stück für Stück?
-
7. Januar 2008 um 13:01 Uhr #723804k1lTeilnehmer
CPUPW soll ja nur zusätzlich zu CnQ bei jedem Stepping von CnQ den Vcore so niedrig wie angegeben einstellen. Aber die Schritte welche bei den Frequenzen genommen werden gibt doch weiterhin CnQ vor. Bei RM-clock scheint mir das so als wenn nicht CnQ das Stepping macht sondern RM-clock selber, daher auch die anderen Steppings.
-
7. Januar 2008 um 16:01 Uhr #723841StevieTeilnehmer
hallo jungs!
danke für eure zahlreichen antworten!
ja ich setze die werte immer mit sudo. habe mich jetzt aber als admin
eingeloggt und hoffe, dass es keine probleme mehr gibt.das mit rmclock ist mir immer noch nicht ganz klar, also wie es das tool
hinbekommt, die frequenzen auszuwählen, die es gar nicht gibt.
vielleicht gaukelt rmclock dem user das nur vor.also was das setzen der voltage angeht…
mein problem ist, dass die frequenz nicht konstant bleibt.
erst dachte ich, es liegt an powernowd, den dienst habe ich dann
beendet. dann habe ich mit cpupw -F 0 800 die cpu runtergetaktet.
aber das fröhliche rauf und runter 800 -> 1600 -> 1800 -> 1600 -> 800…
hat sich nicht geändert. ohne, dass die cpu “still steht” kann ich ja
keine voltage ändern.hatte das problem auch schon jemand?
viele grüße,
stevie
-
11. Januar 2008 um 15:01 Uhr #724861StevieTeilnehmer
hat keiner nen tip?
bei mir scheint das alles irgendwie nicht rund zu laufen. -
12. Januar 2008 um 18:01 Uhr #725123dadoTeilnehmer
Hi Stevie,
Du hast 2 Möglichkeiten.
1) Entweder alle Werte gleichzeitig für cpupw über ein Configfile setzen. Wenn Du cpupw –help eingibst, dann siehst Du, das Du Dir ein Defaultconfigfile ausgeben lassen kannst. Dieses kannst Du dann entsprechend bearbeiten und dann als Parameter angeben (siehe –help)
oder
2) Dir mit top oder ähnlichem anschauen, welche Prozesse denn CPU-Zeit fressen und die für die Zeit des Setzens vorübergehenden ausschalten“Noch Fragen Kienzle”? 😉
Bis denne
Dado -
26. Januar 2008 um 22:01 Uhr #728458smaxTeilnehmer
Da ich nun schon mehrmals gelesen habe (z.B. hier), dass Dual Channel bei modernen Systemen nichts bringt, habe ich mich entschlossen, meine 2x1GB DDR2 800 Crucial Value Ram (double sided) durch 1x2GB DDR2 800 Transcend (double sided) zu ersetzen.
Ich habe Linux (Slackware 12.0) aufgesetzt, Netzwerk auf 100MBit eingestellt und cpupw gestartet. Änderungen im BIOS habe ich keine durchgeführt – alles ist enabled.
Mein Verbrauch unter KDE ist jetzt auf nur noch 18.3 Watt gesunken – Foto gibts im ersten Post. Wenn ich mit “xset dpms force suspend” den Monitor abgeschalten habe, dann hat sich der Verbrauch bei ungefähr 17.5 W eingependelt. Ungefähr den gleichen Wert (etwa 17.2 W) habe ich unter der Konsole erreicht.Die Messungen habe ich mit dem ELV EM800 durchgeführt – das ConradEnergyCheck 3000 hat aber, zumindest bei mir, praktisch die gleichen Werte angezeigt.
Der neue Kernel 2.6.24 hat nun einige interessante Stromsparfeatures eingebaut (siehe hier).
Ich habe etwas herumprobiert, bei mir waren leider keine Verbrauchsänderungen feststellbar, jedoch hat bei mir, das für mich interessanteste feature “SATA Aggressive Link Power Management” nicht funktioniert.
Mehr Informationen übers stromsparen unter Linux findet man auch bei http://www.lesswatts.org. Ein interessantes Tool ist auch noch der PowerTOP.Die pciids für den nVidia nForce 630a/7050(25) Chipsatz sind nun auch schon committed, d.h. mit einem “update-pciids” sollten nun alle unknown devices der Vergangenheit angehören :D.
-
27. Januar 2008 um 9:01 Uhr #728515PiXTeilnehmer
Also auf das was Tomshardware verzapft
wuerde ich nichts geben!!!111!!elfZumal die einen Intel getesten haben der nMB L2 hat.
-
27. Januar 2008 um 10:01 Uhr #728517kranichTeilnehmer
smax;280907 said:
Da ich nun schon mehrmals gelesen habe (z.B. hier), dass Dual Channel bei modernen Systemen nichts bringt, habe ich mich entschlossen, meine 2x1GB DDR2 800 Crucial Value Ram (double sided) durch 1x2GB DDR2 800 Transcend (double sided) zu ersetzen.
…Für die Untertaktung kann ich das verstehen (Strom sparen).
Wenn ich aber mal etwas “speed” benötige, habe ich
doch keinen Dual-Channel-Zugriff mehr, oder ? -
29. Januar 2008 um 20:01 Uhr #729094StevieTeilnehmer
hi zusammen,ich habe jetzt rausgefunden, warum der wert von 688mV nicht eingegeben werden kann. 800mV ist die niedrigste voltstufe, die man einstellen kann.folgendes hab ich aus einem forum:
From the PowerNow specs we learn that every CPU state has a fid and vid, for Frequency ID and Voltage ID respectively. The frequency is calculated as 800 + fid * 100 (in MHz). The voltage is calculated as 1550 – vid * 25 (in mV). This means the frequency cannot go below 800MHz, and since the maximum vid value is 0x1e the minimum voltage is 800mV.
jetzt versteh ich aber nicht, warum ich in rmclock die voltage auf 688mV senken kannund unter linux nicht. dass das kein placebo ist, sehe ich daran, dass das notebookbei 650mV und dual prime abstürzt.also jetzt bin ich echt ratlos… ich will vor allem im 800MHz bereich die voltage senkenkönnen, da der lüfter permanent läuft.edit:die lösung scheint hier zu stehen:http://forums.gentoo.org/viewtopic-p-4202970.html?sid=db45556e123acf0f15a539e8b8b6c6c1#4202970das ist natürlich saublöd, dass linux acpi nicht umgehen kann, so wie es windows macht.
5) Microsoft is using undervolting through other means somewhat like cpupu to directly lower the processor voltage and not via acpi.
-
30. Januar 2008 um 12:01 Uhr #729224smaxTeilnehmer
Stevie;281597 said:
hi zusammen,ich habe jetzt rausgefunden, warum der wert von 688mV nicht eingegeben werden kann. 800mV ist die niedrigste voltstufe, die man einstellen kann.Das stimmt, ich habe leider da nicht so genau aufgepasst. Im ersten Post habe ich nun das Limit von 0.8V dazugeschrieben. Durch meine Undervoltingversuche under FreeBSD habe ich mir nun das genauer angeschaut. cpupw setzt ein bestimmtes MSR(ModelSpecificRegister) in der CPU. Durch dieses setzen veranlasst die CPU selber die Änderung der CPU-Spannung. Es sind folgende VIDs für AMD Athlon64 (X2) verfügbar:Das heisst die Spannung ist zwischen 0.8-1.55V einstellbar.Z.B. bei einem älteren Sempron kann man die Spannung zwischen 1.1-1.85 mit denselben VIDs einstellen.Leider habe ich keine Doku über deinen Turion TL-56 gefunden, jedoch dürfte hier die gleiche VID-Tabelle wir für den Athlons64 (X2) gelten.
Stevie;281597 said:
jetzt versteh ich aber nicht, warum ich in rmclock die voltage auf 688mV senken kannund unter linux nicht. dass das kein placebo ist, sehe ich daran, dass das notebookbei 650mV und dual prime abstürzt.RMClock macht die Spannungsregelung irgendwie anders als mit den CPU-MSR. Ev. setzt das Tool die Spannung direkt über den Chipsatz(?) oder den Spannungsregler(?) und pfeifft drauf was im MSR steht. Leider habe ich keine Ahnung ob und wie sowas funktioniert und der Quellcode ist (natürlich) auch nicht verfügbar. Wenn RMClock das alles selber regelt, kann es natürlich auch mehr Frequenzschritte als normal einbauen (es gibt auch FID-Tabellen -> auch über MSR einstellbar).
Stevie;281597 said:
das ist natürlich saublöd, dass linux acpi nicht umgehen kann, so wie es windows macht.Microsoft bzw. Windows umgeht die ACPI-Tab. im BIOS auch nicht, denn es verwendet bei bestimmten Einstellungen im Energieschema diese Einträge.Fürs undervolting ist es egal was in den ACPI-Tabellen im BIOS steht (Spannungsmässig, nicht bei der Frequenz, obwohl FIDs auch über MSR einstellbar wären). Bei cpupw und ich glaube auch bei CrystalCPUID werden die möglichen VIDs (siehe obiges Bild) für die einzelnen Prozessoren hergenommen.
-
31. Januar 2008 um 2:01 Uhr #729407StevieTeilnehmer
hi smax!
jau, alles etwas schade, hätte meine cpu gerne unter 800mV bekommen.
Zumal 800mV genau der Wert ist, auf die sie default-mäßig bei 800MHz eingestellt ist.
Die Frage ist jetzt nur, ob andere Methoden das Ganze anders regeln…
Linux PHC z.B. -
31. Januar 2008 um 9:01 Uhr #729428smaxTeilnehmer
Stevie;281937 said:
Die Frage ist jetzt nur, ob andere Methoden das Ganze anders regeln…
Linux PHC z.B.Nach einem kurzen Blick auf den Quellcode, verwendet LinuxPHC meiner Meinung nach auch die MSR. Ausserdem funktioniert undervolting mit LinuxPHC derzeit nur für Intelprozessoren.
-
31. Januar 2008 um 13:01 Uhr #729455StevieTeilnehmer
es gibt eine beta für K8 AMDs, die wollte ich auch schon testen, aber die
entwickler sind irgendwie nicht erreichbar…
sieht ja wirklich schlecht aus, wenn alle tools auf msr setzen 🙁 -
1. Februar 2008 um 21:02 Uhr #729700stanly12Teilnehmer
“Mit “make install” das Programm installieren (wird unter /usr/sbin hineinkopiert)”
Damit habe ich noch kleine probleme, wo gebe ich denn das ein? bin ein absoluter noob was linux betrifft, bin lediglich nutzer der grafischen oberfläche…
-
1. Februar 2008 um 22:02 Uhr #729704StevieTeilnehmer
das musst du in die konsole eintippen.
vieles unter linux wird über die konsole erledigt.
allerdings musst du dann auch noch vorher
./configure und make ausführen.
ansonsten einfach mal in google schauen zwecks kompilieren
oder in die README des entsprechnden pakets. -
6. Februar 2008 um 19:02 Uhr #730621StevieTeilnehmer
smax, hast du interesse an dem phc linux AMD kernel patch? ich habe ihn mittlerweile bekommen.ist allerdings für den 23er kernel, laut author sollen aber nur ein paar zeilen angepasst werden müssen.
-
6. Februar 2008 um 21:02 Uhr #730664smaxTeilnehmer
Stevie;283272 said:
smax, hast du interesse an dem phc linux AMD kernel patch? ich habe ihn mittlerweile bekommen.ist allerdings für den 23er kernel, laut author sollen aber nur ein paar zeilen angepasst werden müssen.Das ist genau das Problem bei einem Kernelpatch. Für jeden neuen Kernel muss man erst warten, bis eine neue Version von Linux-phc rauskommt bzw. den Quellcode anpassen (solange das nicht im Kernel drinnen ist). Da gefällt mir die Methode über einen eigenen Daemon und MSR, unabhängig von der Kernelversion, viel besser – aber das ist natürlich Geschmacksache.Leider habe ich derzeit kein Linux-Testsystem, sodass ich den Patch derzeit nicht ausprobieren kann. Ev. nächste Woche habe ich wieder eines zur Verfügung – ich werde mich dann bei dir per PM melden.
-
7. Februar 2008 um 6:02 Uhr #730775StevieTeilnehmer
ja das is schon nervig mit dem kernel-patch…bin auch kein großer freund von so lösungen.aber ich stecke alle hoffnung in den patch :)meld dich gerne bei bedarf 😉
-
7. Februar 2008 um 20:02 Uhr #730941AlrikvomFlussTeilnehmer
Herzlichen dank für die Erklärungen mit cpupw. Habe das ganze gestern mal installiert, leider gab es erstmal ein paar Probleme.
Laut cpupw –status lief die cpu mit 3,8Ghz (statt 2Ghz max), aber nach einiger Zeit ging es dann wie durch Geisterhand.
Habe nun seit 3 Std einen Stresstest bei 1Ghz am laufen, dass ganze mit 0,9V, scheint stabil zu sein. Der Verbrauch ist um einige Watt gesunken, wunderbar 🙂 -
11. Februar 2008 um 22:02 Uhr #731867MosterblasterTeilnehmer
Also zuerstmal – Danke Smax, klasse Anleitung!
Nur irgendwie klappt das ganze mit cpupw nicht wie es sollte.
Ich habe folgendes Problem:
die minimalen VIDs für die einzelnen FIDs mittels dual mprime Stresstest und durch manuellem setzen der Geschwindigkeit zu 99,9% herausgefunden. Das soll heißen bei 1GHz läuft das System mit VID 30 und sogar auch mit 31 über 10 Std stabil, genauso bei den anderen FID/VID’S.
Sobald ich aber cpupw in den Dämonmodus versetze mit 100% korrekter config stürzt das System binnen Sekunden einfach ab.
Ich konnte den Fehler sogar reproduzieren. Wenn ich die VID bei einem festen FID direkt manuell auf den niedrigsten wert der im Test funktioniert hat setze stürzt der Rechner sofort ab.
z.B. 1GHz von normal 1.100V direkt in 0.800 (30) oder 0.775 (31)
Schreibe ich aber ein kleines Script der mir alle Zwischenschritte macht passiert das nicht. (von VID 19,20,21 bis 31)hat irgendjemand evtl. ähnliche Probleme oder weiß woran das liegen kann? (wenn es doch bei anderen Leuten funktioniert)
Danke euch schon mal für evtl. Tipps
Mosterblaster -
11. Februar 2008 um 23:02 Uhr #731889MosterblasterTeilnehmer
Meine CPU ist ein X2 4000+ EE. (restliche Infos unter Meine Systemdaten)
bei der VID habe ich etwas herumgespielt und gemerkt so wie es mich aber auch gewundert hat, dass es wirklich echte 0,775 V sind, auch beim Strommessgerät wird es etwas weniger als bei 0,800 V. ab 32 habe ich wieder 1,555 V.sensors sagt mir auch vCore 0,78 V.
Habe im daemonmode auch schon mit 30 / 29 versucht -> keine Änderung.
Zudem habe ich gerade nochmal den Rechner reproduzierbar zum Absturz gebracht.
diesmal aber mit 1,8gz von vid 13 direkt auf vid 24 gewechselt freeze … mit script komme ich auf vid 24 (sogar 25 scheint zu gehen aber das habe ich nur 45 minuten mit mprime getestet) problemlos und dann läuft (vorher getestet) mprime 6h fehlerfrei durch.Und gerade weil ich deinen anderen Post gelesen habe fand ich das interessant das es bis 0.775 also 31 runterging … aber im prinzip egal läuft ja nicht
Habe gerade im Moment nochmal den Test mit folgenden Einstellungen im daemonmode gemacht.[CODE]1
2
304
4
2100000 21 -1 -1
2000000 21 -1 -1
1800000 24 -1 -1
1000000 28 -1 -1
2
[/CODE]mprime gestartet 2 – 3 Sekunden => freeze
Machinecheck exeption ….
Kernel Panic not syncing – CPU context corrupt -
11. Februar 2008 um 23:02 Uhr #731877smaxTeilnehmer
Mosterblaster;284637 said:
Ich konnte den Fehler sogar reproduzieren. Wenn ich die VID bei einem festen FID direkt manuell auf den niedrigsten wert der im Test funktioniert hat setze stürzt der Rechner sofort ab.
z.B. 1GHz von normal 1.100V direkt in 0.800 (30) oder 0.775 (31)
Schreibe ich aber ein kleines Script der mir alle Zwischenschritte macht passiert das nicht. (von VID 19,20,21 bis 31)Welche CPU hast du den? Eigentlich ist mit dieser Methode undervolting nur bis 0.8 V bzw. VID 30 möglich! Hier ist kurz erklärt warum – schau dir die Grafik an. Wenn du VID 31 verwendst könnte es sein, das du deiner CPU die Spannung von 1.550V zukommen lässt! Im ersten Post wird auch darauf hingewiesen! Hast du kontrolliert, ob bei einer VID von 31 sich die Leistungsaufnahme überhaupt senkt oder wieder ansteigt?
Ich selber hatte keine Probleme mit den Daemonmode – probiere mal eine niedrigere VID als 30 z.B. 28 (0.850V).
-
12. Februar 2008 um 9:02 Uhr #731932smaxTeilnehmer
Mosterblaster;284662 said:
[CODE]1230442100000 21 -1 -12000000 21 -1 -11800000 24 -1 -11000000 28 -1 -12[/CODE]mprime gestartet 2 – 3 Sekunden => freezeMachinecheck exeption ….Kernel Panic not syncing – CPU context corruptBis du dir sicher, dass deine CPU 4 unterschiedliche Cool’n Quiet Frequenzen hat – ich kenne bis jetzt nur AMD CPUs mit 3 Steps. Vielleicht kannst du dir mit der option –autoconfig von cpupw ein automatisch generiertes Configfile erstellen, und dann mit deinem File vergleichen.Funktioniert der normalerweise für Cool’nQuiet verwendete powernowd unter deinem System?Sonst fällt mir leider im Moment auch nichts ein – ev. installiere ich mir mal Debian und teste es selber.
-
12. Februar 2008 um 12:02 Uhr #731948MosterblasterTeilnehmer
smax;284707 said:
Bis du dir sicher, dass deine CPU 4 unterschiedliche Cool’n Quiet Frequenzen hatEigentlich schon:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
2100000 2000000 1800000 1000000und autoconfig ergibt:
[CODE]
cpupw –autoconfig
1
2
304
4
2100000 -1 -1 -1
2000000 -1 -1 -1
1800000 -1 -1 -1
1000000 -1 -1 -1
2
[/CODE]Funktioniert der normalerweise für Cool’nQuiet verwendete powernowd unter deinem System?
ja problemlos
-
12. Februar 2008 um 23:02 Uhr #732119MosterblasterTeilnehmer
Da es mir einfach nicht in den Kopf will, warum ich VID 31 erfolgreich mit 0,775 einstellen kann habe ich mich mal etwas mit dem source beschäftigt, aber auch hier entgegen meiner Erwartung habe ich noch nichts gefunden das auf eine Fehlberechnung schließen lässt. Ich habe mittlerweile auch mal die AMD whitepapers überflogen, da in denen beschrieben wird welches Bit für die VIDs zuständig ist und es nur 5 Bits sind, gibt es wirklich nur 32 mögliche Zustände. Daraus folgerte ich dass evtl. ein Berechnungsfehler seitens cpupw für den 0.775 Volt zustand verantwortlich wäre (dachte daran dass cpupw evtl nicht mit 0 das zählen beginnt sondern mit 1 das würde dann heißen 11110B wäre nach cpupw 31 => 0,8V ), aber da die VID direkt an write_msr weitergegeben wird glaube ich nicht mehr daran. Außerdem ist mir aufgefallen das meiner Meinung nach eine Art Schutz vom Autor eingebaut wurde, die VID lässt sich nämlich – wenn ich mich nicht irre – codeseitig nicht unter 8 stellen.siehe:[CODE]line 55 msr-powernow-k8.c value = value | vid << 8;[/CODE]ich habe einfach keine Idee mehr woher ich die 31/ 0,775V bekomme und wie ich mein Problem lösen kann, freezed auch bei kleinsten Abständen von max 3 zwischen den 4 verschiedenen Geschwindigkeiten. Und wie gesagt unter powernowd bzw. fest eingestellten 1ghz bei 0,775V läuft das System wie geschmiert X Stunden mit mprime ohne Fehler nur das OnDemand mit cpupw nicht ansatzweise....Edit:Nur Am Rande, wer ein Abit AN-M2 (Ohne HD) hat sollte die blöde Idee die onboard Graka (dedicated server) auszuschalten um noch mehr Strom zu sparen gleich wieder vergessen - mehr als 0,5/1 Watt macht das nicht aus - aber die anschließende Arbeit um wieder einen Bildschirm zu haben entweder Bios resetten und neu einstellen oder möglicherweise nur eine andere graka einbauen ist das nicht Wert. Mosterblaster
-
16. Februar 2008 um 16:02 Uhr #732809smaxTeilnehmer
Hab nun mal Debian Lenny (vom 11. Februar) auf meinem Rechner installiert. Danach noch alle Softwareupdates eingespielt.
Bei mir funktioniert cpupw/Daemonmode im kurztest wunderbar – d.h. habe mich ca. 15 Minuten gespielt und mit einem Benchmarkprogramm mehrmals CPU-Last erzeugt. cpupw hat brav die Frequenz und die Spannung hinauf und hinunter geregelt.
Mich hat überrascht, dass bei mir auch eine Spannung von 0.775V (VID 31) funktioniert hat! Vor allem wundere ich mich wie das gehen soll, die AMD-Dokumentation sagt ja, das VID 30 die kleinste mögliche Spannung ist :-k.
Bei VID 32 ist dann der Rechner abgestürzt. Leider kann ich mich jetzt nicht mehr erinnern, ob ich VID 31 unter Slackware oder Ubuntu überhaupt jemals probiert habe.Wenn ich Slackware nochmals auf meinem Rechner installiere, werde ich auch VID 31 testen.
-
16. Februar 2008 um 23:02 Uhr #732940MosterblasterTeilnehmer
Hm und ein direkter VID change von normal auf niedrigster bei dir funktionierender ? Macht das der Rechner mit oder nicht ? Wie gesagt das macht er bei mir nämlich nicht.
Ähnliches Probelm hatte ich mit einem X2 4800 Vista PC mit RMCLOCK da liefen die einzlenen festen freqs stabil im ondemand aber nicht, erst nachdem ich “Perform single step transitions only” eingestellt habe ging es dann wie geschmiert. Gibt es evtl. irgendwo in den tiefen der Configs eine ähnliche Option ?
Woher der VID 31 kommt möchte ich auch gerne wissen,
da die VID direkt von cpupw übergeben wird, wie sie vom Benutzer eingegeben wurde tipp ich auf irgendein Problem mit z.B. msr.o sodass hier evtl. falsche werte geliefert werden (z.B. Zählproblem 1 anstatt 0 das würde ja dann heißen das 31 == 30)Mosterblaster
-
17. Februar 2008 um 0:02 Uhr #732946MosterblasterTeilnehmer
Also nach meinem etwas krassen Test gerade (cpupw –voltage 0 62) was in binär ja 6 bittig abgebildet werden muss (111110) stoppt der pc direkt (geht aus) wenn also nur die letzten 5 bits beachtet werden würden würde ich wieder auf 31 herauskommen => 0,775V
daher glaube ich das VID 32 zumindest unter debian lenny eigentlich binär 11111 ist also cpu aus … warum aber sensors und cpupw 0.775 volt anzeigen ist mir schleierhaft…
einzige Erklärung dazu wäre für mich das in den kernel Modulen die die Voltage auslesen irgendwas faul sein muss … ich glaube nicht mehr das die 0,775 volt korrekt sind. -
17. Februar 2008 um 0:02 Uhr #732945smaxTeilnehmer
Mosterblaster;285775 said:
Hm und ein direkter VID change von normal auf niedrigster bei dir funktionierender ? Macht das der Rechner mit oder nicht ? Wie gesagt das macht er bei mir nämlich nicht.Der Daemonmode und auch die direkte VID Einstellung von normal auf niedrigster Einstelllung für eine Frequenz funktionieren bei mir wunderbar.
Mosterblaster;285775 said:
Ähnliches Probelm hatte ich mit einem X2 4800 Vista PC mit RMCLOCK da liefen die einzlenen festen freqs stabil im ondemand aber nicht, erst nachdem ich “Perform single step transitions only” eingestellt habe ging es dann wie geschmiert. Gibt es evtl. irgendwo in den tiefen der Configs eine ähnliche Option ?Davon ist mir jetzt nichts bekannt, aber man müsste im Source nachschauen. Unter Windows verwende ich nicht RMClock sondern CrystalCPUID, da funktioniert es auch gut.
Mosterblaster;285775 said:
Woher der VID 31 kommt möchte ich auch gerne wissen,da die VID direkt von cpupw übergeben wird, wie sie vom Benutzer eingegeben wurde tipp ich auf irgendein Problem mit z.B. msr.o sodass hier evtl. falsche werte geliefert werden (z.B. Zählproblem 1 anstatt 0 das würde ja dann heißen das 31 == 30)Das habe ich mir zuerst auch gedacht. Da aber mit VID 31 die Spannung wirklich auch auf 0.775V herunter geht, glaube ich jetzt eher das die AMD-Dokumentation in Bezug auf den letzten Step (VID 31) nicht ganz korrekt ist oder es vielleicht bei den neueren AMD-CPUs-Steppings einfach diese zusätzliche VID gibt. Oder vielleicht sind die Spannungsregler für die CPU so ungenau und regeln statt 0.8V auf 0.775 zurück – aber das glaube ich eher nicht :D. Wenn du VID 32 verwendest solltest du natürlich 1.55 V haben, da da die ersten 5 Bits 0 sind -> 100000B ergeben 1.55V.Ich werde noch unter Slackware testen und ich bin schon gespannt, ob dort auch VID 31 funktioniert.@MosterblasterWenn du cpupw mal mit den normal bei Cool’n Quiet verwendeten Spannungen, also ohne undervolting, im daemonmode laufen lässt, stürtzt da der Rechner auch ab?
-
17. Februar 2008 um 1:02 Uhr #732948MosterblasterTeilnehmer
@smax
interessant!! mit den “default” Werten von cpufreqd läuft auch cpupw scheinbar problemlos, wenn FID festgelegt wird mit fester VID läuft das auch problemlos mit z.B. VID 31 (hier schon über 40 – 50 std.) aber sobald ich die testwerte in die cpupw.conf eingebe und somit ondemand nachstellen will gibt es bei mprime fehler oder der ganze rechner freezed. -
17. Februar 2008 um 21:02 Uhr #733125smaxTeilnehmer
Außerdem ist mir aufgefallen das meiner Meinung nach eine Art Schutz vom Autor eingebaut wurde, die VID lässt sich nämlich – wenn ich mich nicht irre – codeseitig nicht unter 8 stellen.
Das stimmt so nicht, mit “value = value | vid << 8;" wird der VID-Wert an die richtige Stelle in der Variable value (Bits 8-15) verschoben.
ab 32 habe ich wieder 1,555 V.
daher glaube ich das VID 32 zumindest unter debian lenny eigentlich binär 11111 ist also cpu aus
Was passiert jetzt bei dir mit einer VID 32 ❓ Ich habe angenommen, wenn du eine VID von 32 verwendest hast du wieder 1.550V – deshalb auch mein Erklärungsversuch ohne das selber getestet zu haben.Ich habe nun auch eine VID von 55 probiert – bei mir ist der Rechner auch dann aus. Das könnte auch noch mit den 3 reserved Bits oberhalb der NewVID beim MSR C001_0041h (AMD Doku auf Seite 382) etwas zu tun haben.
einzige Erklärung dazu wäre für mich das in den kernel Modulen die die Voltage auslesen irgendwas faul sein muss … ich glaube nicht mehr das die 0,775 volt korrekt sind.
Derzeit glaube ich noch immer, dass die 0.775V stimmen, da bei mir beide Programme (cpupw und sensors) parktisch die gleiche Spannung anzeigen (sensors zeigt mir Werte um 0,001V höher). cpupw arbeitet mit den msr-Kernelmodul und sensors verwendet bei mir das w83727ehf Kernelmodul. Also ermitteln beide Programme die Spannung auf unterschiedliche Art. Das beide Kernelmodule fehlerhafte Werte liefern glaube ich (eher) nicht. Ich muss mir mal die Art und Weise wie lm-sensors die Werte ausliest genauer im Quellcode anschauen.@StevieEs könnte sein, das RMClock ähnlich dem sensors arbeitet. Sensors liest die Werte nur aus, aber vielleicht kann man auch die VID-Werte über das Kernelmodul w83727ehf (ist sicher je nach Mainboard ein unterschiedliches Kernelmodul) und damit direkt auf den Winbond-Chip(der ist bei meinem Motherboard verbaut) setzten – das ist aber fürs erste nur mal eine Vermutung bzw. Hoffung.
Mosterblaster;285784 said:
@smaxinteressant!! mit den “default” Werten von cpufreqd läuft auch cpupw scheinbar problemlos, wenn FID festgelegt wird mit fester VID läuft das auch problemlos mit z.B. VID 31 (hier schon über 40 – 50 std.) aber sobald ich die testwerte in die cpupw.conf eingebe und somit ondemand nachstellen will gibt es bei mprime fehler oder der ganze rechner freezed.D.h. mit den normalen Werten funktioniert cpupw im Daemonmode problemlos!?Dann probiere mal nur einen VID-Wert in der cpupw-config geringfügig (z.B. von 22 auf 23) zu ändern und dann kannst du dich langsam an den Werten herantasten, wo dann cpupw im Daemonmode abstürtzt.
-
18. Februar 2008 um 0:02 Uhr #733186MosterblasterTeilnehmer
smax;285985 said:
Dann probiere mal nur einen VID-Wert in der cpupw-config geringfügig (z.B. von 22 auf 23) zu ändern und dann kannst du dich langsam an den Werten herantasten, wo dann cpupw im Daemonmode abstürtzt.das ist mir zu unsicher … ich kann kaum eine konstante Lastschwankung realisieren um sicher zu sagen dass die VIDs bei den verschiedenen Lasten stimmen und der (server) nicht bei z.B. 2ghz mit vid xy dann doch mal abstürzt.
Wobei ich am rande anmerken muss die ghz stepps sind nicht gut gewählt zum Stromsparen 1ghz 1,8ghz 2ghz 2,1ghz … 1,0 1,4 1,8 2,1 wären da schon besser 🙂
woher kommen die wenigen Frequenzen unter windows geht das ja 100mhz weise? -
18. Februar 2008 um 0:02 Uhr #733185MosterblasterTeilnehmer
Habe hier etwas interessantes gefunden ![CODE]page:~# cpupw –voltage 0 32page:~# cpupw -sSystem has 1 physical CPUs and 2 logial CPUsCPU 0-> voltage: 1.550000 v, VID: 0, frequency: 1000 Mhz, FID: 2 Theorical bus speed: 100.000000 Real bus speed: 100.000000 Real cpu speed: 1000.000000 Governor: userspacepage:~# sensorsw83627dhg-isa-0290Adapter: ISA adapterVCore: +0.76 V (min = +0.00 V, max = +1.55 V)[/CODE]welches der beiden Programme lügt ?edit: Habe gerade anhand der Verbrauchswerte unter Vollast geprüft => hier lügt cpupw es ändert sich nichts an der Stromaufnahme
-
18. Februar 2008 um 1:02 Uhr #733187PommbaerTeilnehmer
wie heisst das zitat noch gleich ?”there will always be a difference between linux and windows”
-
18. Februar 2008 um 10:02 Uhr #733223smaxTeilnehmer
welches der beiden Programme lügt ?
Bei VID 32 “lügt” eindeutig cpupw, da das Programm mit nicht mehr als 5 Bits (was ja nach der AMD-Doku korrekt ist) bei der VID rechnet. Bei VID 31 zeigen bei mir beide Programme die gleichen Werte an – und das stimmt meiner Meinung.In der Datei msr-powernow-k8.c in der Funktion status_k8 (Zeile 75) steht:[CODE]*vid = h & 0X1F;[/CODE]Hier holt er sich nur die ersten 5 Bits (eben die normale dokumentierte VID) aus dem ausgelesenen Wert heraus, und somit gibt er für VID 32 die Spannung 1.550V aus.
das ist mir zu unsicher … ich kann kaum eine konstante Lastschwankung realisieren um sicher zu sagen dass die VIDs bei den verschiedenen Lasten stimmen und der (server) nicht bei z.B. 2ghz mit vid xy dann doch mal abstürzt.
Ich habe nur gemeint, das du das nur mal kurz probieren könntest, und nicht das du das schon im Produktivbetrieb einsetzen sollst. Vielleicht ergeben sie ja daraus neue Erkenntnisse, ob schon bei geringerer Änderung der VID Probleme auftretten.
Wobei ich am rande anmerken muss die ghz stepps sind nicht gut gewählt zum Stromsparen 1ghz 1,8ghz 2ghz 2,1ghz … 1,0 1,4 1,8 2,1 wären da schon besser :)woher kommen die wenigen Frequenzen unter windows geht das ja 100mhz weise?
Das finde ich auch, dass da die Frequenzen da nicht sehr glücklich gewählt sind.Frequenzen würden sich aber natürlich auch unter Linux ändern lassen. Beim “berühmten” MSR C001_0041h der AMD-CPUs sind die ersten 6 Bits für eine Änderung der Frequenz reserviert (NewFID, AMD-Doku Seite 382). Man kann da die Frequenzen gleich wie bei RMClock oder CrystalCPUID unter Windows in 100MHz Schritten unter Zuhilfenahme der Formeln[CODE]FID = (Frequenz – 800) / 100Frequenz = (FID * 100) + 800[/CODE]setzen :D. Nur gibts bis jetzt meines Wissens kein Programm dazu, dass das kann. cpupw liese sich aber wahrscheinlich auch für diese Funktion erweitern.
-
18. Februar 2008 um 21:02 Uhr #733368smaxTeilnehmer
Hier nun der Grund warum VID 31 manchmal funktioniert und manchmal auch VID Werte höher als 31 möglich sind:
Hier findet man die AMD Dokumentation vom Februar 2006 die ich bis jetzt verwendet habe.
Daraus die Beschreibung der beiden unter cpupw verwendeten MSRs und die möglichen VIDs:
Hier das setzten der Spannung (Seite 382)):Hier das auslesen der geraden verwendeten Spannung (Seite 384)):
Hier die möglichen VIDs (Seite 283)):
Hier findet man eine neuere AMD Dokumentation vom Juli 2007 die erst jetzt endeckt habe.
Daraus die Beschreibung der beiden unter cpupw verwendeten MSRs und die möglichen VIDs:
Hier das setzten der Spannung (Seite 411)):Hier das auslesen der gerade verwendeten Spannung (Seite 414)):
Hier die möglichen VIDs (Seite 309)):
Fällt euch was auf – ja richtig, die (New)VID hat statt 5 Bits auf einmal 6 Bits, und somit mehr möglichkeiten die CPU-Spanunng einzustellen!
Die CPU ist über die VID-Pins (jedes VID-Bit hat auch einen CPU-Pin) mit einem weiteren Chip, dass für die CPU-Spannungsregelung zuständig ist und auch VID-Pins besitzt, direkt verbunden.
Es gibt nun verschiedene Ausführungen mit einer unterschiedlichen Anzahl von VID-Pins dieser CPU-Spannungsreglerchips. Wenn man alle vorhanden VID-Pins des CPU-Spannungsreglerchips auf 1(high) setzt, dann schaltet der Chip die CPU-Spannung aus.
Wenn nun auf dem Motherboard ein Spannungsreglerchip mit 5 VID-Pins verbaut ist (wie bei der AMD-Dokumentation vom 2006 angenommen), werden bei einer VID von 31 alle VID-Pins des CPU-Spannungsreglerchip auf 1 gesetzt und dann wird natürlich die CPU-Spannung auf off gesetzt.
Wenn nun auf dem Motherboard ein CPU-Spannungsreglerchip mit 6 VID-Pins verbaut ist (wie z.B. beim Abit AN-M2(HD)), dann kann man ohne Probleme auch eine VID von 31 und höher setzen (wenn die CPU das verträgt und untersützt), da ja nicht jeder VID-Pin des CPU-Spannungsreglerchips auf 1 gesetzt ist und die CPU-Spannung daher nicht auf off gesetzt wird.
Jetzt kommt auch noch dazu, das anscheinend die neueren AMD-CPU Steppings (ich schätze ab Gx) schon mit 6 VID-Bits (Pins)) arbeiten und somit theoretisch in der Lage sind, Spannungswerte bis hinunter zu 0.375V einzustellen!!!Wenn man nun eine AMD-CPU mit 5 VID-Bits und ein Motherboard mit einem CPU-Spannungsreglerchip mit 5 VID-Eingängen verwendet, dann reagiert das System genauso wie in der AMD-Doku vom Februar 2006 beschrieben – also mit einer VID von 31 wird die CPU-Spannung abgeschaltet.
Bei meiner AMD X2 3800+ EE SFF CPU werden nur 5 VID-Bits verwendet und mein Motherboard hat aber einen CPU-Spannungsreglerchip mit 6 VID-Eingängen – somit kann ich noch eine VID von 31 verwenden und bin gar nicht in der Lage, die CPU-Spannung auf Off zu setzen. Jedoch eine VID höher als 31 kann ich auch nicht verwenden.
Die AMD X2 4000+ CPU mit G1 Stepping vom Mosterblaster ist in der Lage, schon 6 VID-Bits verwenden zu können. Da er auch ein Motherboard hat, das einen CPU-Spannungsreglerchip mit 6 VID Eingängen verwendet, ist er auch in der Lage eine VID von höher als 31 und somit eine Spannung von unter 0.775V zu verwenden!Ich hoffe die Erklärung ist einigermassen verständlich :).
-
18. Februar 2008 um 21:02 Uhr #733371smaxTeilnehmer
@Mosterblaster
cpupw hat einen Fehler beim auslesen der VID, wenn der VID-Wert über 31 ist.
Und zwar ist der Fehler in der Datei msr-powernow-k8.c in der Funktion status_k8, Zeile 75 wie schon oben angeführt:
[CODE]*vid = h & 0X1F;[/CODE]
Wechsle diese Zeile mal gegen folgende aus:
[CODE]*vid = h & 0X3F;[/CODE]
Das macht nix anderes, als auch das 6.te Bit berücksichtigen.
Jetzt sollte die Ausgabe von cpupw und sensors wieder übereinstimmen.Weiters habe ich im Code von cpupw gesehen, wenn man den Parameter -S (–smart) angibt (denn verwende ich auch), die Frequenzstepberechnung auf eine andere Art wie normal berechnet wird. Probiere mal, diesen Parameter einfach wegzulassen, dann könnte es sein, das cpupw die Frequenzänderung immer nur in einzelschritten durchführt, ev. genauso wie es RMCLock mit der Option “Perform single step transitions only” macht.
-
18. Februar 2008 um 22:02 Uhr #733392MosterblasterTeilnehmer
@smax
die Smart Option hat nichts bewirkt. leider 🙁Habe aber ein neuen Powerschalter 🙂 ein Wechsel von VID 32 zurück nach 31 lässt Rechner ausgehen, geht sogar schneller als mit dem Netzteilschalter -juhu !
-
18. Februar 2008 um 22:02 Uhr #733390MosterblasterTeilnehmer
Klasse smax!
Ich dachte mir schon das es neuere Doks von AMD gibt habe sie aber auch nicht finden können. (Weil die Register Differences im pdf vom Februar 2006 nur bis Revision E gingen )Dann habe ich gestern auch nicht ganz genau aufgepasst, als ich den sensors output hier reinkopiert habe mit VID 32 steht ja 0,76V also 0,750V
@smax Der “Patch” in der msr-powernow-k8.c klappt, er zeigt jetzt wieder identische werte mit sensorsDie smart Option werde ich dann mal weglassen, und mich wieder melden.
Achja in der Doku steht auf Seite 22 , ab Revision F
[CODE]• MSR C001_0041h (FIDVID_CTL), NewVID (bit13) added.[/CODE]
-
18. Februar 2008 um 23:02 Uhr #733393smaxTeilnehmer
@smax Der “Patch” in der msr-powernow-k8.c klappt, er zeigt jetzt wieder identische werte mit sensors
Ja dann ists ja gut. Leider ist der Author von cpupw nicht sehr kooperativ – bis jetzt hat er kein mail von mir beantwortet bzw. keinen Verbesserungsvorschlag angenommen.
Achja in der Doku steht auf Seite 22 , ab Revision F
Das sehe ich jetzt auch, manchmal zahlt es sich wirklich aus eine Doku von vorne zu lesen :D.Aber ich schätze mal, das es nicht viele AMD X2 mit Revision F gibt, die eine Spannung von unter 0.8 V vertragen – interessanter sind da sicher derzeit die CPUs mit G2-Steppings.
Habe aber ein neuen Powerschalter ein Wechsel von VID 32 zurück nach 31 lässt Rechner ausgehen, geht sogar schneller als mit dem Netzteilschalter -juhu !
Sch…e. Welche BIOS-Version verwendest du? Ich würde auf jedenfall auf das neueste updaten, falls nicht schon gemacht. Ich verwende Bios 19.
-
18. Februar 2008 um 23:02 Uhr #733396MosterblasterTeilnehmer
@smaxJa habe sie weggelassen, habe ich mich etwas undeutlich ausgedrückt.Ich verstehe auch nicht warum der Autor, nicht gleich in das msr register die FID schreibt .. der Umweg über /sys/devices/system/cpu/ ist doch eigntl. komplizierter.Wenn ich das nicht falsch interpretiere müsste doch durch einfaches copy und paste eine set_speed_k8 aus der methode set_voltage_k8 machen lassen. Anschließend noch den bit pointer angepasst (auf die ersten 6 bits wäre doch dann ohne dem <<8) und in der methode set_new_speed die neue methode set_speed_k8 aufrufen.Ich frage mich nur was value am Schluss enthält das ganze 64bit FIDVID_CTL Register?Edit:Ups BIOS is glaub ich die 16, gleich mal updaten
-
18. Februar 2008 um 23:02 Uhr #733404smaxTeilnehmer
Mosterblaster;286277 said:
Ich verstehe auch nicht warum der Autor, nicht gleich in das msr register die FID schreibt .. der Umweg über /sys/devices/system/cpu/ ist doch eigntl. komplizierter.Der Frequenzwechsel ist nicht so einfach. Da muss man aufpassen, ob die Frequenz nach oben oder unten geht, und je nachdem muss man zuerst eine Spannungsänderung durchführen, und erst dann die Frequenz ändern. Der Kernel kann das perfekt, weil auch schon X-mal bei cpufreq bzw. powernowd getestet. Darum finde ich es schon ganz OK, wenn dieser (Um)weg gemacht wird. Bei meinem Test mit FreeBSD habe ich auch diesen Weg gewählt.
Soweit ich mich jetzt erinnern kann, arbeitet cpupw folgendermassen bei einem Frequenzwechsel:
* Wiederherstellung der originalen VID für die jetzt verwendete FID
* Änderung der Frequenz über das Kernelmodul(Kernelinferface)
* Einstellen der VID fürs undervolten
Habe ich unter FreeBSD genauso gemacht, das war die einfachste Möglichkeit. Ich habe nur den powerd patchen müssen.So nun zurück zu deinem Problem.
Ev. kannst du im Quellcode Debugmeldungen einbauen (haufenweise einfache printfs), damit wir einmal wissen, bei welcher Frequenz cpupw bzw. VID Probleme macht. Obs immer an der gleichen Stelle ist, oder verschieden, und in welchen Steps der Frequenzwechsel durchgeführt wird. Wir brauchen einfach mehr Informationen.
Ach ja ich habe noch nirgends geschrieben, das ich Debian Lenny amd64 installiert habe – du hoffentlich auch? -
19. Februar 2008 um 0:02 Uhr #733408MosterblasterTeilnehmer
smax;286284 said:
Der Frequenzwechsel ist nicht so einfach. Da muss man aufpassen, ob die Frequenz nach oben oder unten geht, und je nachdem muss man zuerst eine Spannungsänderung durchführen, und erst dann die Frequenz ändern.Daran habe ich garnicht gedacht … im nachhinein ist es klar das erst VID erhöht werden muss damit der Rechner nicht abstürzt.
Soweit ich mich jetzt erinnern kann, arbeitet cpupw folgendermassen bei einem Frequenzwechsel:
* Wiederherstellung der originalen VID für die jetzt verwendete FID
* Änderung der Frequenz über das Kernelmodul(Kernelinferface)
* Einstellen der VID fürs undervoltenHier könnte genau mein Problem bestehen. Und zwar beim “herunter volten”, wie ich schon geschrieben habe, ein direkter Wechsel von z.b. normal VID 18 auf VID 31 => freeze
Ev. kannst du im Quellcode Debugmeldungen einbauen (haufenweise einfache printfs),
werde ich mal versuchen wenn ich mit der Notation klar komme 🙂
Ach ja ich habe noch nirgends geschrieben, das ich Debian Lenny amd64 installiert habe – du hoffentlich auch?
Leider muss ich dich hier enttäuschen es ist debian testing i386 (soweit ich mich richtig erinnere, das habe ich in mein install log leider nicht festgehalten warum ich mich dafür entschieden hatte, habe ich mich dafür entscheiden wegen manchen Programm Problemen unter amd64)
-
19. Februar 2008 um 1:02 Uhr #733414MosterblasterTeilnehmer
@smaxalso nach BIOS update auf Version 19 hat sich nichts geändert alle Probleme wie zuvor vor allem was ich garnicht verstehe Änderung von VID 32 auf 31 => System ausDas alte Porblem mit dem daemon modus von cpupw besteht auch noch.Ich werde mich jetzt dann mal hinsezten und printfs implementieren… hoffentlich kommt cpupw noch zu einer Ausgabe bevor es abstürzt :)Edit: Ein Wechsel von 33 nach 32 hingegen funktioniert problemlos.Dein Patch für cpupw funktioniert doch nicht korrekt, ist ja klar wegen der Berechnung von cpupw ab VID 31 bzw 0,775V berechnet es dann falsch da der nächste Stepp keine 0,025V weniger sind sondern nur 0,0125V usw. siehe Table 71. 0,765V scheinen stabil zu laufen aber machen nicht mehr viel Watt aus.Edit2:Ich habe gerade noch schnell die msr-powernow-k8.c “fixed”:Für die korrekte Voltage anzeige bitte die Methode vid_to_voltage_k8 von:[code]float vid_to_voltage_k8 (int vid){ return 1.550 – (vid * 0.025);}[/code]in [code]float vid_to_voltage_k8 (int vid){ float speed; if(vid >= 32) speed = 1.550 – ((31 * 0.025) + ((vid-31) * 0.0125)); else speed = 1.550 – (vid * 0.025); return speed;}[/code]ändern.
-
19. Februar 2008 um 2:02 Uhr #733415StevieTeilnehmer
wow coole sache. das geht ja richtig voran hier :)also ich bin mir nicht sicher, wo ich das stepping auslesen kann.mit /proc/cpuinfo bekomme ich “stepping 2” angezeigt.btw, auch mir antwortet der autor von cpupw nicht. obwohl er die leuteauf seiner website dazu auffordert.
-
19. Februar 2008 um 2:02 Uhr #733417MosterblasterTeilnehmer
smax;286284 said:
Der Frequenzwechsel ist nicht so einfach. Da muss man aufpassen, ob die Frequenz nach oben oder unten geht, und je nachdem muss man zuerst eine Spannungsänderung durchführen, und erst dann die Frequenz ändern. Der Kernel kann das perfekt, weil auch schon X-mal bei cpufreq bzw. powernowd getestet. Darum finde ich es schon ganz OK, wenn dieser (Um)weg gemacht wird.nachdem ich mir gerade den Quellcode nochmal grob angeschaut habe muss ich sagen klar ist das Handling wie, wann und welche in Richtung umgeschaltet wird ein Problem, aber im Prinzip geht es ja nur um das “Backend” wenn direkt die FID geschrieben werden würde wären ja die 100mhz schritte möglich. Das restliche Handling, Spannung erhöhen, Frequenz setzen und dann Voltage ändern macht ja cpupw trotzdem. siehe Methode change_speedEdit: Wenn mich nichts täuscht hat leider die “Smart” Option nur mit “Wann wird scaliert” zu tun.
-
19. Februar 2008 um 2:02 Uhr #733416MosterblasterTeilnehmer
@stevieUnter Linux habe ich das korrekte Stepping (in meinem Fall BH-G1) auch nicht herausfinden können /proc/cpuinfo hat mir auch nur Stepping 1 geliefert….Um trotzdem sagen zu können welches Stepping ich habe, habe ich schnell eine WinXPE gestartet und mit cpuz (auf einem USB Stick) die Infos “herausgefischt”.Edit: Wegen dem Autor …. naja *.es halt 🙂 und so wie ich das sehe ist seit Monaten, wenn nicht seit Jahren (im Quelltext steht das (c) von 2006 ) mit cpupw nichts passiert
-
19. Februar 2008 um 3:02 Uhr #733420MosterblasterTeilnehmer
@stevie
Naja so würde ich das nicht sagen, das Programm taugt schon was nur leider wird es nicht gepflegt. Wenn wie gesagt die FID noch direkt gesetzt werden würde und man so manche Einstellungen (single step) einstellen könnte, wäre das das Programm bestimmt top.Knapp 3000 Downloads (Ver 0.2.0 und 0.1.1), auf der Entwickler Seite sagt Einiges, entweder ist kein Bedarf unter Linux für so ein Programm da oder es fehlt die “Promotion” … ich denke wirklich dass das Programm unter Linux sowas wie RMClock unter Windows werden könnte, dafür muss es aber gepflegt werden.
-
19. Februar 2008 um 3:02 Uhr #733423StevieTeilnehmer
lol meinen segen hat er ;D
-
19. Februar 2008 um 3:02 Uhr #733418StevieTeilnehmer
hmm irgendwie hab ich eindruck, dass cpupw irgendwie noch nicht wirklich was taugt.
da muss noch einiges getan werden und ich hab nicht den eindruck, dass das unser coder aus *.es das tun wird… :/ -
19. Februar 2008 um 3:02 Uhr #733422MosterblasterTeilnehmer
hehe, ja das Projekt interessiert mich schon, aber ich glaube dazu fehlt mir das Wissen in der Sprache 😉 vom Prinzip her kann man in jeder Sprache Programmieren wenn man die Grundsätze verstanden hat … nur glaube ich nicht das ich dazu die Zeit aufbringen kann um so etwas zu pflegen … smax wäre in der Sache bestimmt besser, er kennt die Notation, liest gerne Whitepapers .. usw. 🙂 …ich denke er wäre für den Job besser geeignet
(Zukunftsvision … smax Paket Maintainer bei debian für die Energiesparfunktionen *bg*)
-
19. Februar 2008 um 3:02 Uhr #733421StevieTeilnehmer
hmm du könntest recht haben. ich habe fast den eindruck, dass du dich für das projekt interessierst. hey, und du kannst anscheinend auch programmieren 😉
-
19. Februar 2008 um 10:02 Uhr #733444smaxTeilnehmer
Leider muss ich dich hier enttäuschen es ist debian testing i386
OK, dann werde ich mir mal Debian testing i386 installieren.Mit den Original VID-Werten funktioniert ja cpupw. Hast du inzwischen mal getestet, was passiert, wenn z.B. fürs erste nur den VID-Wert für die niedrigste Frequenz um 1 erhöhst und alle änderen VID-Werte gleich lässt?
von VID 32 auf 31 => System aus
Ein Wechsel von 33 nach 32 hingegen funktioniert problemlos.
Ev. könnte die Ursache sein, das sich beim Wechsel der VID von 31 auf 32 sich auch die Spannungsdifferenz ändert (von 25mV auf 12.5mV, was ich vollkommen übersehen habe ;)), und es daher ein Problem gibt – leider habe ich nicht so eine gute AMD-CPU, um das ausprobieren zu können.Probiere ev. mal einen Wechsel von VID 32 auf z.B. 28 – funktioniert das?
Ich habe gerade noch schnell die msr-powernow-k8.c “fixed”:Für die korrekte Voltage anzeige bitte die Methode vid_to_voltage_k8 von:
Gut gemacht, ich habe ja die Änderung der Spannungsdifferenz vollkommen übersehen – dann muss man natürlich auch die Berechnung der Ausgabe ändern.
btw, auch mir antwortet der autor von cpupw nicht
Wegen dem Autor …. naja *.es halt und so wie ich das sehe ist seit Monaten, wenn nicht seit Jahren (im Quelltext steht das (c) von 2006 ) mit cpupw nichts passiert
Ich schimpfe nicht über den Author, das Programm ist ja OpenSource und jeder kann es weiterentwickeln wenn er will. Es kann ja viele verschiedene Gründe geben, warum er nicht mehr will. Habt ihr z.B. einen Quellcode von CrystalCPUID oder RMClock?
nachdem ich mir gerade den Quellcode nochmal grob angeschaut habe muss ich sagen klar ist das Handling wie, wann und welche in Richtung umgeschaltet wird ein Problem, aber im Prinzip geht es ja nur um das “Backend” wenn direkt die FID geschrieben werden würde wären ja die 100mhz schritte möglich
Ich habe nicht gemeint, dass das Frequenzumschalten ein riesiges Problem ist – es ist nur etwas kompilzierter als die Spannung ändern. Mann könnte natürlich den passenden Quellcode fürs Frequenzändern vom Kernelmodul cpufrequ hernehmen und cpupw damit erweitern. Ich persönlich würde das aber nicht machen, denn wenn eine verbesserung im Kernel gemacht wird, müsste man den Quellcode in cpupw immer nachziehen. Mir reichen die 3 Frequenzsteps meiner CPU vollkommen und ich sehe auch keinen Sinn dass in 100MHz Schritten zu machen. Nur wenn die Cool’nQuiet Frequenzen wirklich extrem blöd gewählt sind, hätte für mich nur eine Frequenzmodifikation der Cool’nQuiet Einstellungen wirklich Sinn.Meine Idee eines neuen cpupw wäre eher ein vorhandenes und gut getestetes Programm (z.B. powernowd), einfach um die undervolting Funktionen zu erweitern.
Zukunftsvision … smax Paket Maintainer bei debian für die Energiesparfunktionen *bg*)
Das wird eher eine Vision bleiben 😀 (aber danke für den Gedanken), denn ich verwende eigentlich am liebsten Slackware-Linux und nicht Debian oder Ubuntu. Ausserdem beschäftige ich mich derzeit eigentlich lieber mit FreeBSD, und meine Familie bzw. meine Frau x( mit mir schon, das ich zuviel Zeit mit dem Computer verbringe :D.
-
19. Februar 2008 um 15:02 Uhr #733486MosterblasterTeilnehmer
smax;286331 said:
Mit den Original VID-Werten funktioniert ja cpupw. Hast du inzwischen mal getestet, was passiert, wenn z.B. fürs erste nur den VID-Wert für die niedrigste Frequenz um 1 erhöhst und alle änderen VID-Werte gleich lässt?Das scheint zu funktionieren, ich habe mich jetzt auch mal in 1er Steps bei allen Frequenzen nach unten angenähert. bis 29 bin ich mit der niedrigsten Frequenz gekommen ab 30 Kernel Panic.
Daraufhin habe ich das auch gleich nochmal Manuel versucht. Ein direkter Wechsel von Ursprungs VID 18 nach 29 geht problemlos. Sobald ich direkt auf 30 springe => freeze … Meiner Meinung nach mag der Rechner den akuten Spannungsverlust nicht.
Springe ich erst auf 29 dann auf 30, 31 geht es. Nachdem cpupw zuerst die Original VID herstellt und dann undervoltet dürfte genau das das Problem sein.Probiere ev. mal einen Wechsel von VID 32 auf z.B. 28 – funktioniert das?
Keine Chance, sobald einmal VID 32 eingegeben, kann ich mich nur noch unter 31 bewegen.
Was doch evtl. an den 5/6 bit liegen könnte? gebe ich 32 ein dann ist es 1 00000 springe ich wieder auf 31 erzeuge ich damit 11111, wenn cpupw auf 5 bit ausgelegt ist, wird es doch wahrscheinlich das 6. Bit nicht bei 31 auf 0 setzen.(0 11111) Somit wäre das Ergebnis im Register, vom obigen beispiel 1 11111
meine Frau x( mit mir schon, das ich zuviel Zeit mit dem Computer verbringe :D.
Das kenn ich irgendwoher 🙂
-
19. Februar 2008 um 17:02 Uhr #733509smaxTeilnehmer
Das scheint zu funktionieren, ich habe mich jetzt auch mal in 1er Steps bei allen Frequenzen nach unten angenähert. bis 29 bin ich mit der niedrigsten Frequenz gekommen ab 30 Kernel Panic.Daraufhin habe ich das auch gleich nochmal Manuel versucht. Ein direkter Wechsel von Ursprungs VID 18 nach 29 geht problemlos. Sobald ich direkt auf 30 springe => freeze … Meiner Meinung nach mag der Rechner den akuten Spannungsverlust nicht. Springe ich erst auf 29 dann auf 30, 31 geht es. Nachdem cpupw zuerst die Original VID herstellt und dann undervoltet dürfte genau das das Problem sein.
Da du deine CPU z.B. von VID 18 auf VID 30 undervoltest, machst du ja doch einen Sprung von 0.3V – wenn ich mir das so überlege, ist das gar nicht wenig. Ich undervolte um 0.2V bei der geringsten Frequenz, und um 0.1V bei den anderen beiden Frequenzen. Es könnte sein, dass du damit wirklich den Spannungsregler bzw. die CPU überforderst, und eigentlich dieses undervolting auf 2 Schritte durchführen müsstest. Es gibt im MSR C001_0042h noch einen auslesbaren Wert, der sich MaxRampVID nennt, und dort könnte eine Information stehen, wie viel CPU-Spannung man auf einmal verstellen darf (soll). Das muss ich mir noch einmal anschauen, was da drinnen steht. Probiere inzwischen einmal alle Frequenzzustände um “nur” 0.1V oder vielleicht noch max. um 0.2V zu undervolten – eigentlich sollte dann das undervolting stabil sein.
Keine Chance, sobald einmal VID 32 eingegeben, kann ich mich nur noch unter 31 bewegen.Was doch evtl. an den 5/6 bit liegen könnte? gebe ich 32 ein dann ist es 1 00000 springe ich wieder auf 31 erzeuge ich damit 11111, wenn cpupw auf 5 bit ausgelegt ist, wird es doch wahrscheinlich das 6. Bit nicht bei 31 auf 0 setzen.(0 11111) Somit wäre das Ergebnis im Register, vom obigen beispiel 1 11111
Richtig, das Register ist dann falsch gesetzt, wenn du von VID 32 auf VID 31 zurückwillst – habe das jetzt kontrolliert.Also kommt nun der nächste cpupw Patch. In der Datei msr-powernow-k8.c in der Funktion “int set_voltage_k8 (int vid, int cpu)” in der Zeile 54 steht (eingentlich nicht sehr schlau gemacht):[CODE]value = value & 0XFFF00000FFFEE0FFll;[/CODE]Bitte diese Zeile ersetzen durch folgende Zeile:[CODE]value = value & 0XFFF00000FFFEC0FFll;[/CODE]Nun solltest du zumindest von VID 32 auf VID 31 ohne Probleme zurückkommen.
-
19. Februar 2008 um 20:02 Uhr #733600MosterblasterTeilnehmer
smax;286400 said:
Es gibt im MSR C001_0042h noch einen auslesbaren Wert, der sich MaxRampVID nennt, und dort könnte eine Information stehen, wie viel CPU-Spannung man auf einmal verstellen darf (soll). Das muss ich mir noch einmal anschauen, was da drinnen steht.Hab mal schnell die MaxRAMPVID ausgelesen, wenn mein code dazu stimmt:msr-powernow-k8.c[CODE]int get_ramp(int cpu, int *ramp){ unsigned long long value; unsigned long h; read_msr (cpu, MSRK8FVSTTS, &value); h = value>>24; *ramp = h & 0X1F; return 0;}[/CODE]Ausgeben lass ichs mir ganz einfach in der Status methode mit get_ramp und printf.Ergibt bei mir 8.Was ja, wenn die 8 stimmt, rein rechnerisch 0,2V wären bzw bei mir von VID 18 auf max 26.
Zeile 54 steht (eingentlich nicht sehr schlau gemacht)….[CODE]value = value & 0XFFF00000FFFEC0FFll;[/CODE]
Das Funktioniert, habe diese Zeile eh nicht verstanden, was die einzelnen Zeichen bedeuten.
-
19. Februar 2008 um 21:02 Uhr #733610smaxTeilnehmer
Hab mal schnell die MaxRAMPVID ausgelesen, wenn mein code dazu stimmt:
Stimmt nicht ganz: Zeile[CODE]*ramp = h & 0X1F;[/CODE]sollte gegen[CODE]*ramp = h & 0X3F;[/CODE]getauscht werden.Aber der ausgelesene Wert von 8 sollte richtig sein, da das 6.te Bit ziemlich sicher nicht gesetzt ist :).
Was ja, wenn die 8 stimmt, rein rechnerisch 0,2V wären bzw bei mir von VID 18 auf max 26.
Genau, jetzt haben wir meiner Meinung den Grund, wieso dein Rechner bei einer VID von 30 im Daemonmode abstürzt 🙂 und ich kann mir das installieren von Debian Lenny i386 sparen. Hast du nun schon VID-Werte probiert, die in diesem Rahmen von maximal 0.2 V sind?
Das Funktioniert, habe diese Zeile eh nicht verstanden, was die einzelnen Zeichen bedeuten.
Das heißt, dass du keine Probleme mehr hast, die VID von z.B. 32 auf 30 zurück zustellen?[CODE]value = value & 0XFFF00000FFFEC0FFll;[/CODE]Diese Zeile setzt nur gewisse Bits, z.B. alle reservierten Bits auf eins (natürlich auch das 6-bit bei NewVID). Das MSR bei der Adresse C001_0041h ist 64-Bit breit, jeder Wert dieser Zeile (FFF00000FFFEC0FF) steht für 4 Bits also z.B. F ist Binär 1111 oder E ist Binär 1110 usw.. Wenn du dir die Bits nun in der Reihe aufschreibst und die Beschreibung des Registers drüberlegst, dann kannst du nachvollziehen, welche Bits da gesetzt werden. Zusätzlich wird noch eine Binäre & Operation mit dem vorher ausgelesenen Werte des Registers durchgeführt.Wenn du undervolting mit Differenzwerten von höher als VID 8 durchführen willst, dann bleibt dir (uns) nichts anderes übrig, als cpupw so zu erweitern, das wenn die Spannungsänderung höher ist als die Differenz von der maximal möglichen VID 8, die Spannungsänderung auf mehrere Schritte durchzuführen. Eigentlich kann das nicht so schwer sein, vielleicht habe ich am Wochenende Lust und Zeit das zu machen :D. Derzeit habe ich kein Linux zur Verfügung, da meine Wechselrahmen modifiziert wird, weil die Festplatte zu heiß wird – aber bis zu Wochenende sollte das fertig sein.
-
19. Februar 2008 um 23:02 Uhr #733654MosterblasterTeilnehmer
smax;286515 said:
Stimmt nicht ganz: Zeile
[CODE]*ramp = h & 0X1F;[/CODE]
sollte gegen
[CODE]*ramp = h & 0X3F;[/CODE]
getauscht werden.So ein mist, dass kommt davon wenn man 2 verschiedene Dokumentations Versionen gleichzeitig offen hat… schon schaut man auf das falsche, das alte hat nämlich noch 5 bit.
Hast du nun schon VID-Werte probiert, die in diesem Rahmen von maximal 0.2 V sind?
Ja, scheint zu laufen, habs aber noch nicht allzulange getestet.
Das heißt, dass du keine Probleme mehr hast, die VID von z.B. 32 auf 30 zurück zustellen?
Jop.
[CODE]value = value & 0XFFF00000FFFEC0FFll;[/CODE]
Diese Zeile setzt nur gewisse Bits, z.B. alle reservierten Bits auf eins (natürlich auch das 6-bit bei NewVID). Das MSR bei der Adresse C001_0041h ist 64-Bit breit, jeder Wert dieser Zeile (FFF00000FFFEC0FF) steht für 4 Bits also z.B. F ist Binär 1111 oder E ist Binär 1110 usw.. Wenn du dir die Bits nun in der Reihe aufschreibst und die Beschreibung des Registers drüberlegst, dann kannst du nachvollziehen, welche Bits da gesetzt werden. Zusätzlich wird noch eine Binäre & Operation mit dem vorher ausgelesenen Werte des Registers durchgeführt.Man ich Idiot, dadrauf bin ich nicht gekommen das hex F bin 1111 ist, ich habe mich schon gewundert woher die restlichen bits herkommen und dachte mit F usw an irgendwelche Platzhalter … das war aber echt voll daneben. Hehe das kommt davon wenn 3 veschiedene Zahlensysteme benutzt werden.. Okt kommt aber nicht auch noch irgendwo vor oder 🙂 ?
-
20. Februar 2008 um 0:02 Uhr #733670MosterblasterTeilnehmer
@smax
Danke für deine Hilfe!
Ich habe mal schnell etwas gebastelt, scheint perfekt zu laufen. Gut, lange konnte ich es noch nicht testen.
Schau doch bitte nochmal drüber. Für evtl. Verbesserungsvorschläge.Betrifft die Datei: msr-powernow-k8.c ab Zeile 54
[code]
int set_voltage_k8 (int vid, int cpu)
{
int ramp, current_vid;
long long difference;get_ramp (cpu, &ramp);
get_vid_k8 (cpu, ¤t_vid);
difference = vid – current_vid;
// check difference
if (difference >= ramp){
write_voltage_k8 (vid – (difference/3), cpu);
write_voltage_k8 (vid – ((difference/3)*2), cpu);
}
write_voltage_k8 (vid, cpu);return 0;
}int write_voltage_k8 (int vid, int cpu)
{
unsigned long long value;read_msr (cpu, MSRK8FVCTRL, &value);
value = value & 0XFFF00000FFFEC0FFll;
value = value | vid << 8; value = value | 0X0000000100010000ll; write_msr (cpu, MSRK8FVCTRL, &value); while(in_transition(cpu)) usleep(1000); return 0; } int status_k8(int cpu, int *vid, float *voltage, int *speed, int *fid) { unsigned long long value; unsigned long h, l; read_msr (cpu, MSRK8FVSTTS, &value); h = value>>32;
l = value;*vid = h & 0X3F;
*fid = l & 0X3F;
*voltage = vid_to_voltage_k8(*vid);
*speed = fid_to_mhz_k8(*fid);return 0;
}int get_ramp(int cpu, int *ramp)
{
unsigned long long value;
unsigned long h;read_msr (cpu, MSRK8FVSTTS, &value);
h = value>>24;*ramp = h & 0X3F;
return 0;
}
int get_vid_k8(int cpu, int *vid)
{
unsigned long long value;
unsigned long h;read_msr (cpu, MSRK8FVSTTS, &value);
h = value>>32;*vid = h & 0X3F;
return 0;
}
[/code]Ach ja, 2 Steps waren immer noch zu wenig, zumindest ist mir das system beim runtertakten freezed.
Ich schreibe jetzt noch schnell ein eigenes tortoure script für mprime in Verbindung mit cron alle Minute killen dann nach 30 sek neu starten … und das lass ich mal die ganze Nacht laufen wenn der Rechner morgen noch läuft dann ist es stabil 🙂
-
20. Februar 2008 um 2:02 Uhr #733672StevieTeilnehmer
man jungs, ihr legt echt nen speed an den tag, big respect!
und ich idiot hab jetzt erst verstanden (hatte das thema ne weile ruhen lassen), was
es mit dem VID 32 zu 31 auf sich hat.
mein problem war, dass ich VID 32 eingegeben hatte und auf einmal eine spannung, konform der dok aus 2006, von 1,550 hatte. in totaler panik hab ich sofort den wert auf 31 geändert, mit dem ergebnis, dass auch Monsterblaster hatte, der rechnet freezed, wie es im buche steht. da konnte ich noch nicht wissen, dass die 1,550 V nicht “echt” sind, sondern nur ein “berechnungsfehler” von cpupw. ich kann jetzt die voltage ohne probleme einstellen. ich bin entzückt!
was anscheinend noch nicht geht, ist das wechseln der cpu frequenz.
ich werd jetzt erst mal einen reboot machen und noch ein bisserl rumprobieren.smax und Monsterblaster, super engagement! ihr solltet euch zusammentun 😉
-
20. Februar 2008 um 2:02 Uhr #733674StevieTeilnehmer
ich kann die cpu frequenz nicht mit cpupw auf einen bestimmten wert festsetzen.
-
20. Februar 2008 um 2:02 Uhr #733676StevieTeilnehmer
ich hab an meinem laptop so ne schöne energiespartaste.
da hab ich im moment nen toggle drauf von 800 auf 1800 mhz.
da aber der cpufreq-selector auf userspace stehen muss, kann ich
damit die cpu frequenz nicht ändern, ohne das undervolting zu verlieren 🙁 -
20. Februar 2008 um 2:02 Uhr #733673MosterblasterTeilnehmer
Stevie;286581 said:
was anscheinend noch nicht geht, ist das wechseln der cpu frequenz.
ich werd jetzt erst mal einen reboot machen und noch ein bisserl rumprobieren.Was meinst du genau damit ?
-
20. Februar 2008 um 2:02 Uhr #733678StevieTeilnehmer
ah hey, das klappt!ich hatte cpufrequtils nicht installiert. ich dachte man kann auch über cpupwdie frequenz ändern. aber mit cpufreq-set geht das tatsächlich 🙂
-
20. Februar 2008 um 2:02 Uhr #733677MosterblasterTeilnehmer
Stevie;286585 said:
ich hab an meinem laptop so ne schöne energiespartaste.da hab ich im moment nen toggle drauf von 800 auf 1800 mhz.da aber der cpufreq-selector auf userspace stehen muss, kann ich damit die cpu frequenz nicht ändern, ohne das undervolting zu verlieren 🙁Und wenn du ein Script schreibst und auf die taste legst: so ala[code]— set800mhz.script —-cpufreq-set -f 0.8ghzcpupw -V 0 VIDcpupw -V 0 VIDcpupw -V 0 VID—set1800mhz.script —-cpufreq-set -f 1.8ghzcpupw -V 0 VIDcpupw -V 0 VIDcpupw -V 0 VID[/code]die 3 voltage steps deswegen damit du auf jeden Fall unter 0.2V Spannungsänderung bleibst. Nur geht hier das automatische skalieren flöten da der cpupw daemon nicht laufen kann.p.s. cpufreq-set ist der befehl unter Debian bei anderen Distris ist der anders benannt. Aber fängt auch mit cpufreq an.@stevie pack mal deine Systemdaten in dein Profil .. dann wüsste ich auch was du hast
-
20. Februar 2008 um 2:02 Uhr #733675MosterblasterTeilnehmer
zu welchem Zweck ? zum testen ? oder andere Frequenzen als die 3/4 Vorgegebenen?
-
20. Februar 2008 um 3:02 Uhr #733681MosterblasterTeilnehmer
Hehe ja, das bin ich, aber nur wenn mich irgendetwas wurmt was ich Undbedingt noch hinbekommen möchte … bastle gerade wieder am Quellcode rum
-
20. Februar 2008 um 3:02 Uhr #733679MosterblasterTeilnehmer
Einziger Nachteil, bei jedem cpufreq-set Aufruf wird die original VID gesetzt also muss man immer nach jedem cpufreq-set die VID neu setzen.
-
20. Februar 2008 um 3:02 Uhr #733680StevieTeilnehmer
das stimmt, aber das script nimmt einem die arbeit ja ab.
hey du bist aber auch immer früh/spät wach 😉 -
20. Februar 2008 um 3:02 Uhr #733684MosterblasterTeilnehmer
Ich würde ein Startscript bauen das unter etc/init.d/ kommt und nach rc2.d mit z.B. S01_scriptname gelinked wird, wie es bei dir aussieht weis ich gerade nicht, kenne ubuntu nicht so. sollte aber ziemlich genauso wie debian sein.
-
20. Februar 2008 um 3:02 Uhr #733683StevieTeilnehmer
ich nutze seit dezember linux und hab seitem eigentlich keinen richtigen tagesablauf mehr lol 🙂
bin auch noch am schrauben…
wo starte ich eigentlich den cpupq daemon am besten?
als init.d oder in rc.local? habe ubuntu gutsy am laufen. -
20. Februar 2008 um 3:02 Uhr #733682MosterblasterTeilnehmer
oh mann, knapp 2,5 std hat der cpupw daemon alle changes alle 3 minuten mitgemacht und gerade isser gefreezed … f***
-
20. Februar 2008 um 3:02 Uhr #733686StevieTeilnehmer
oh je, hast auch probleme, wie ich sehe…
naja ich komme erst gar nicht so weit, dass der
daemon bei mir selbst regelt. beim einloggen unter gnome wird
das profil “userspace” immer überschrieben. habe auch schon in
der gconf den wert “ondemand” auf “userspace” geändert.
leider mit null erfolg.das mit dem script nehm ich mal in angriff.
-
20. Februar 2008 um 10:02 Uhr #733703smaxTeilnehmer
@Stevie
Wie das mit dem Startscript unter Ubuntu läuft, findest du im Thread. Da gibts mehrere Einträge dazu – einfach mal durchlesen.
@mosterblaster
An deiner Stelle würde ich zuerst mal testen, ob cpupw nun mit den maximal möglichen 0.2V in einem Step undervolting funktioniert ohne die zusätzlichen Spannungsverstellungsschritte. Wenn das stabil läuft (z.B. eine Nacht durchläuft), kann man meiner Meinung nach den nächsten Schritt mit den zusätzlichen Spannungsverstellungsschritten wagen also nicht immer gleich die radikale Version :), weil du jetzt nach deinem freeze nicht weisst, ob da generel cpupw schuld ist, oder deine Ergänzung.Ich habe mir nur kurz deine Änderungen angeschaut. Ich würde das etwas anders machen z.B.:
* nicht bei jeden set_voltage_k8 die Funtkion get_ramp() aufrufen, die Bits von MaxRAMPVID sind laut Doku ReadOnly und können sich nicht verändern – also nur einmal bei einem init oder so aufrufen
* Die Spannungsänderung in mehreren Schritten durchführen, aber nicht so schnell hintereinander, sondern in Pausen dazwischen, das sollte stabiler sein. D.h. wenn die VID grösser als die MaxRAMPVID ist, nur einmal die MaxRAMPVID verstellen. Wenn dann cpupw wieder überprüft, ob es die Frequenz hoch oder runtertakten soll, dann auch überprüfen ob schon die eingestellte VID erreicht ist, und wenn nicht nochmals die VID erhöhen oder so ähnlich.Da brauche ich etwas Zeit, um mir eine gutes Konzept zu überlegen :D.
-
20. Februar 2008 um 13:02 Uhr #733726smaxTeilnehmer
Ich habe gestern den Author von cpupw nocheinmal ein Mail gesendet.
Er hat mir heute geantwortet :).
In ca. 3 Wochen will er die Weiterentwicklung von cpupw wieder aufnehmen =D>.
Ich werde ihm unsere Erkenntnisse und “Patches” übermitteln und mit ihm zusammen eine Strategie für das mehrstufige Undervolting entwickeln und hoffentlich auch umsetzen. -
20. Februar 2008 um 14:02 Uhr #733742StevieTeilnehmer
smax;286614 said:
@StevieWie das mit dem Startscript unter Ubuntu läuft, findest du im Thread. Da gibts mehrere Einträge dazu – einfach mal durchlesen.ja ist mir auch grad aufgefallen, ist schon wieder zu lange her, dass ich den thread komplett gelesen habe.:)
Ich habe gestern den Author von cpupw nocheinmal ein Mail gesendet.Er hat mir heute geantwortet .In ca. 3 Wochen will er die Weiterentwicklung von cpupw wieder aufnehmen .Ich werde ihm unsere Erkenntnisse und “Patches” übermitteln und mit ihm zusammen eine Strategie für das mehrstufige Undervolting entwickeln und hoffentlich auch umsetzen.
ay carramba! sehr geil 🙂 \D/\D/\D/EDIT:ich hab hier noch ein kleines problemchen… zwar nicht bezüglich der cpu, aber es hängt damit zusammen.der cpu lüfter dreht nach einem neustart auf vollen touren. erst dachte ich es liegt daran, dass die cpu zu heiss wirdund ich das durch undervolting in den griff bekommen kann. abe daran lag es wohl nicht. der lüfter springt gemäß der trip_points bei 60°/68° an. welches der richtige wert ist, weiss ich nicht.das laptop hat auf jeden fall nur einen lüfter, den sich graka und cpu teilen. vielleicht deswegen die 2verschiedenen werte.cat /proc/acpi/thermal_zone/THRM/trip_points critical (S5): 109 Cpassive: 88 C: tc1=3 tc2=1 tsp=150 devices=CPU0 CPU1 active[0]: 68 C: devices= FN1 active[1]: 60 C: devices= FN2 jedenfalls verhält es sich so, dass der rechner beim hochfahren unter 60° bleibt und somit derlüfter theoretisch nicht anspringen dürfte. er läuft aber permanent.ich hab dann mal folgendes eingeben:cat /proc/acpi/fan/FN1/state status: offcat /proc/acpi/fan/FN2/state status: offd.h. der rechner denkt, dass der lüfter aus ist und regelt ihn erst runter, wenn die cpu/gpu über 60°/68° war und wieder diesen wert unterschreitet.ich hoffe man kann das ungefähr nachvollziehen.gibt es jetzt eine möglichkeit, wie ich linux erklären kann, dass der lüfter bereits läuft?gruß,stevie
-
20. Februar 2008 um 17:02 Uhr #733807StevieTeilnehmer
hallo smax!
danke, das werd ich gleich probieren und berichten.
vielleicht hilft es dem ein oder anderen.EDIT:
also irgendwie scheint das nicht zu fruchten. der lüfter steht trotzdem auf “aus”.
den befehl habe ich in /etc/rc.local eingetragen. dort wird unter ubuntu der “autostart” für die shell abgearbeitet. ich muss allerdings dazu sagen, dass ich den befehl manuell nicht mit sudo ausführen konnte. ich musste mich erst mit “sudo su” als root anmelden. dann gings. aber da die rc.local ja mit root rechten ausgeführt wird, dürfte das eigentlich nicht das problem sein, oder?ich hab mir übrigens ein script gebastelt, was ich mit gnome lade, damit die
undervolt settings auch zur laufzeit von gnome automatisch geladen werden:[CODE]cpufreq-selector -g userspace
cpupw -S -d -c /etc/cpupw.conf[/CODE]ich starte auch den daemon von dort aus, weil der ja nicht funktioniert,
bevor der governour auf userspace gestellt wurde. und in einem init.d script würde
cpupw ja VOR dem userspace aufgerufen werden.leider funktioniert das script trotzdem nicht. ich habe fast die befürchtung, dass gconf NACH den sessions ausgeführt wird und mir damit mein energieschema wieder überschreibt. das ist echt nervig 🙁 so muss ich es jetzt jedes mal von hand ausführen. man könnte noch einen “wait” befehl in das script einbauen, oder?
das könnte vielleicht helfen.EDIT2:
ich hab keine ahnung warum, aber die lüfter kann man mit:
[CODE]echo 0 > /proc/acpi/fan/FN1/state
echo 3 > /proc/acpi/fan/FN1/state[/CODE]ausschalten
-
20. Februar 2008 um 17:02 Uhr #733802smaxTeilnehmer
Stevie;286657 said:
cat /proc/acpi/fan/FN1/state
status: off
cat /proc/acpi/fan/FN2/state
status: offIch habe zwar keine Erfahrung mit einem Laptop unter Linux, aber vielleicht hilft folgendes auf der Kommandozeile:
[CODE]echo -n “on” > /proc/acpi/fan/FN1/state
echo -n “on” > /proc/acpi/fan/FN2/state [/CODE]Wenns funktioniert, dann musst die diese beiden Zeilen in einem Startscript einbauen.
-
20. Februar 2008 um 23:02 Uhr #733918MosterblasterTeilnehmer
smax;286852 said:
Wäre fürs erste durchaus möglich, das so zu testen, obs überhaupt hilft (Beispiel unten mit 100ms). Nur für mich ist das keine schöne Lösung (->ist aber natürlich Geschmacksache).nein, schön ist die Lösung nicht aber dadran habe ich gerade nicht gedacht sondern an den 1000 usec in while in_transition()
[code]
int write_voltage_k8 (int vid, int cpu)
{
unsigned long long value;read_msr (cpu, MSRK8FVCTRL, &value);
value = value & 0XFFF00000FFFEC0FFll;
value = value | vid << 8; value = value | 0X0000000100010000ll; write_msr (cpu, MSRK8FVCTRL, &value); while(in_transition(cpu)) usleep(1000); return 0; [/code] -
20. Februar 2008 um 23:02 Uhr #733915MosterblasterTeilnehmer
smax;286614 said:
An deiner Stelle würde ich zuerst mal testen, ob cpupw nun mit den maximal möglichen 0.2V in einem Step undervolting funktioniert ohne die zusätzlichen Spannungsverstellungsschritte. Wenn das stabil läuft (z.B. eine Nacht durchläuft), kann man meiner Meinung nach den nächsten Schritt mit den zusätzlichen Spannungsverstellungsschritten wagen…Ok ok 🙂 bin halt der CPU vorraus gewesen … werde es aber heute Nacht testen.
* Die Spannungsänderung in mehreren Schritten durchführen, aber nicht so schnell hintereinander, sondern in Pausen dazwischen, das sollte stabiler sein.
Sollte das nicht mit usleep() getan sein ?
-
20. Februar 2008 um 23:02 Uhr #733917smaxTeilnehmer
Mosterblaster;286849 said:
Sollte das nicht mit usleep() getan sein ?Wäre fürs erste durchaus möglich, das so zu testen, obs überhaupt hilft (Beispiel unten mit 100ms). Nur für mich ist das keine schöne Lösung (->ist aber natürlich Geschmacksache).
z.B.
[CODE]if (difference >= ramp){
write_voltage_k8 (vid – (difference/3), cpu);
write_voltage_k8 (vid – ((difference/3)*2), cpu);
}
[/CODE]
ändern auf
[CODE]if (difference >= ramp){
write_voltage_k8 (vid – (difference/3), cpu);
usleep(100000);
write_voltage_k8 (vid – ((difference/3)*2), cpu);
usleep(100000);
}[/CODE] -
21. Februar 2008 um 10:02 Uhr #733937smaxTeilnehmer
Mosterblaster;286854 said:
nein, schön ist die Lösung nicht aber dadran habe ich gerade nicht gedacht sondern an den 1000 usec in while in_transition()Dort wird es eventuel nicht helfen, wenn nämlich die Spannungsänderung schnell abgeschlossen ist, wird usleep nie verwendet, weil die CPU ja schon sagt, dass der Spannungswechsel fertig ist (baue einen counter im while-konstrukt ein, dann weisst du wie oft). Bei meiner Variante wird das usleep sicher bei einem mehrstufigen Spannungswechsel ausgeführt. Wir sind ja noch auf der Suche nach der absoluten Stabilität, deine Änderungen für die “Spannungsänderungzwischenschritte” funktionieren ja zu 99% (wenn ich annehme das cpupw nicht noch einen anderen Fehler hat – mir kommt nur komisch vor, dass du 3 Schritte benötigst) – wir benötigen nun noch die letzten 1% :).
-
1. März 2008 um 2:03 Uhr #735890MosterblasterTeilnehmer
So ich melde mich auch mal wieder, habe im Moment leider keine Möglichkeit die Stabilität von cpupw zu testen, da der Server mittlerweile seinen Dienst antreten musste und ich keine unnötigen undefinierte Abstürze riskieren kann.
Aber eine kleine Sache die zum Stromsparen beiträgt will ich noch loswerden.
Jeder der ein Abit Board mit dem Grafikchipsatz von Nvidia besitzt kann nochmal ca 0,4Watt sparen, wenn die Grafik nicht von Bedeutung ist. (Wie bei mir mit einem Server)Dazu braucht man das Tool nvclock.
einfach mit nvclock -f -n 1 aufrufen.
Das ergibt dann eine Frequenz von ca 16mhz.
Für die Konsole reicht das dann Problemlos. Und ergibt die einsparung von ca 0,4 – 0,5 Watt.
Da der Chipsatz nicht offiziell unterstützt wird muss die Option -f mit aufgerufen werden, das ergibt zwar seltsame Ausgaben aber es spart Strom und der Server läuft auch schon Tage damit.Ciao Mosterblaster
-
1. März 2008 um 19:03 Uhr #736124smaxTeilnehmer
Mosterblaster;288989 said:
Dazu braucht man das Tool nvclock.einfach mit nvclock -f -n 1 aufrufen.Das ist eine weitere gute Idee zum Stromsparen.Die Entwicklung von cpupw 0.3.0 wurde nun aufgenommen. Die Struktur vom Programm wird geändert und auch die notwendigen Bugfixes werden programmiert werden.Es wird aber sicher noch einige Wochen vergehen, bis dieses neues Release zur Verfügung stehen wird – ich melde mich dann wenn es soweit ist.
-
1. März 2008 um 23:03 Uhr #736173MosterblasterTeilnehmer
@smax super!
Habe gerade gesehen das der Author sogar schon flink unsere Patches eingebaut hat und die Version 0.2.1 online gestellt hat. Nachdem ich mal schnell drüber gesehen habe sieht der code echt knackig aus, nicht so unbeholfen wie bei mir, beim “voltage anzeige” Patch mit der Hilfsvariablen und dann hab ich die auch noch speed genannt oh mann…
-
4. März 2008 um 2:03 Uhr #736749StevieTeilnehmer
yeah smax! saugeil 🙂
freu mich auf das erste gemeinsame release von euch.
-
23. März 2008 um 10:03 Uhr #741130StevieTeilnehmer
version 0.2.2 ist online!
-
23. März 2008 um 12:03 Uhr #741151smaxTeilnehmer
Stevie;294675 said:
version 0.2.2 ist online!Ja, das ist aber noch nicht die start verbesserte Version, sondern ein kleines Bugfix-Release.
Am neuen, sehr überarbeiteten cpupw wird noch gearbeitet bzw. getestet :D.
-
23. März 2008 um 18:03 Uhr #741253StevieTeilnehmer
ich bin gespannt :Dfrohe ostern!gruß,stevie
-
17. April 2008 um 18:04 Uhr #746744kultexTeilnehmer
gibt es schon ein 0.3.0 Date?
-
17. April 2008 um 22:04 Uhr #746843smaxTeilnehmer
kultex;300723 said:
gibt es schon ein 0.3.0 Date?Leider nein.Auf meinem Rechner funktioniert das Undervolting mit der neuen Version sehr gut (AMD X2 3800+). Langzeittest muss ich aber noch machen. Ausserdem benötige ich noch andere Systeme zum testen, bevorzugt wären Systeme mit höher getakteten AMD K8 CPUs -> wenn sich wer traut:D, bitte PM mit Systemangaben an mich.
-
18. April 2008 um 11:04 Uhr #746924HawkTeilnehmer
smax;300824 said:
Ausserdem benötige ich noch andere Systeme zum testen, bevorzugt wären Systeme mit höher getakteten AMD K8 CPUs -> wenn sich wer traut:D, bitte PM mit Systemangaben an mich.Ist das nicht der Grund warum man Beta-Versionen zum download anbietet ohne Garantie? ;)Nur bei M1cros0ft nennt man das anders, da heißt das “final release” 🙁
-
18. April 2008 um 17:04 Uhr #746998maewynTeilnehmer
ja also ich wäre auch für die Veröffentlichung einer alpha oder beta,
da bei der derzeitigen version mein Be-2400 nach einigen/vielen start/stopzyklen von 2xcpuburn der Rechner beim runtertakten einfriert oder abstürzt, selbst bei etwas moderateren Einstellungen.Gruß Patrick
-
20. April 2008 um 16:04 Uhr #747300slazZTeilnehmer
Moin!
Im Prinzip funkioniert cpupw, nur nicht sehr lange. Nach circa ein bis fünf Minuten stürzt der daemaon ab, obwohl er zu dem Zeitpunkt den Takt nichtmal ändert. Der kernel sagt mir dazu folgendes:/var/log/messages said:
kernel: cpupw[2811] trap divide error rip:402653 rsp:7fff88d65900 error:0Ich sollte auch ein paar Dinge zu meiner Konfiguration sagen:
Habe den neuen AMD Athlon 4450e, der aber wohl der selbe ist wie der BE-2400/etc/cpupw.conf said:
1
2
304
5
2300000 18 -1 -1
2200000 20 -1 -1
2000000 22 -1 -1
1800000 24 -1 -1
1000000 29 -1 -1
2Das ganze läuft mit cpupw 0.2.2 unter Debian Etch 64bit
-
23. April 2008 um 20:04 Uhr #747939slazZTeilnehmer
Habe nun den Kernel gepatcht..
Jetzt kann ich über das Modul “powernow-k8” die Spannungen je Frequenz ganz einfach festlegen und kann zudem noch den besseren ONDEMAND Govenour verwenden:
[CODE]modprobe powernow-k8 freq_list=2300,2200,2000,1800,1000 vcore_list=1100,1050,1000,950,825[/CODE]PS: Der 4450e schafft auch 0,8 Volt @ 1Ghz stabil (Primestable), habe jedoch jeweils eine Sicherheitsreserve von 0,025 Volt eingeräumt, bei 2.3Ghz sogar 0,05 Volt.
-
27. April 2008 um 1:04 Uhr #748594chindaTeilnehmer
Hi!Das ist echt zum Durchdrehen! Habe folgendes Problem:Möchte ich meinen BE-2400 undervolten mittels cpupw, klappt dies im manuellen Modus wunderbar (0,8V bei 1000 Mhz) mit “cpupw –voltage 0 30”, nachdem ich “cpupw -F 0 2” ausgeführt habe, logo.Starte ich jedoch den Dienst “daemonized” (sowohl manuell als auch per Startscript), dann läuft cpupw nur mit VID22 bei FID2! Wenn ich danach manuell weiter runter auf 0,8V (VID30) gehe, klappt es dann auch. Checken tue ich logischerweise immer mit “cpupw –status”Wie kann das sein, dass cpupw bei manuellem Start seinen Dienst ordentlich verrichtet, bei automatischem Start jedoch rumeiert??cuchinda.
-
27. April 2008 um 10:04 Uhr #748614smaxTeilnehmer
chinda;302733 said:
Starte ich jedoch den Dienst “daemonized” (sowohl manuell als auch per Startscript), dann läuft cpupw nur mit VID22 bei FID2!Kannst du Bitte einmal dein Configfile herzeigen und mit wlechen Parametern startest du cpupw “daemonized”?
-
28. April 2008 um 23:04 Uhr #748975lieblingTeilnehmer
Da die Patches von linux-phc teilweise problematisch waren, haben ich einen eigenen Patch entwickelt, um die Spannung anzupassen. Entwickelt ist eigentlich falsch, denn es ist ein kleiner Hack, ca. 30 Minuten hat’s gedauert :). Man übergibt dem Modul damit lediglich einen Parameter “undervolt”, der für jede VID ein FID-Delta festlegt, in FID-Schritten von 25mV. Das ist sehr einfach und IMO dennoch sehr praxistauglich. Es bringt nicht wirklich viel, wenn man die CPU in jeder Frequenz einzeln ans Limit herantuned.
(Um nochmal deutlich zu werden: der Parameter ist in FID-Schritten, also bedeutet der Wert 4 ein Undervolting von 100mV)
-
29. April 2008 um 1:04 Uhr #748989slazZTeilnehmer
Solch einen Patch gibt es schon:
http://www.berniyh.net/powernow-k8-vcore_list-2.6.24-git-v3.patch
Aus:
http://forums.gentoo.org/viewtopic-t-245197-postdays-0-postorder-asc-start-100.html -
29. April 2008 um 4:04 Uhr #748995lieblingTeilnehmer
Dieser Patch hat aber eine andere Funktionalität zur Festlegung der VIDs/FIDs. Außerdem kannte ich ihn nicht.
-
29. April 2008 um 4:04 Uhr #748996slazZTeilnehmer
Bitte fühl Dich dadurch nicht angegriffen, ich wollte ihn nur der Vollständigkeit halber hier nennen 🙂
-
29. April 2008 um 12:04 Uhr #749025lieblingTeilnehmer
Naja, im Endeffekt ist das vielleicht auch die bessere Lösung, da flexibler. Allerdings wird keiner von diesen Hacks je Einzug in den Vanilla-Kernel bekommen, denke ich. Schade eigentlich, denn ohne die Zusatzoptionen verhält es sich ja ganz normal.
-
29. April 2008 um 20:04 Uhr #749117smaxTeilnehmer
liebling;303180 said:
Naja, im Endeffekt ist das vielleicht auch die bessere Lösung, da flexibler. Allerdings wird keiner von diesen Hacks je Einzug in den Vanilla-Kernel bekommen, denke ich. Schade eigentlich, denn ohne die Zusatzoptionen verhält es sich ja ganz normal.Ich schätze auch, das diese Hacks nie in den Vanilla-Kernel kommen werden.Meiner Meinung nach ist daher ein gut funktionierendes externes Programm, unabhängig vom Kernel, die bessere Lösung.Mein neues Programm fürs undervolten unter Linux wird gerade getestet (auch von mehreren Forumsmitgliedern). Bis jetzt sind noch keine Probleme beim undervolting aufgetretten. Es wurden bis jetzt 5 verschiedene AMD-CPUs getestet, eine davon wurde nicht richtig erkannt – warum das ist noch zu klären.EDIT: Bei einer CPU wurde der 2.te Core nicht richtig erkannt, schuld ist vorraussichtlich aber nicht das Undervoltingtool, sondern der Linux-Kernel (wahrscheinlich kein SMP-Kernel oder Kernelproblem), der nur ein Core initialisiert hat und das Tool verwendet die Informationen, welche der Kernel liefert.Daher steht eine Veröffentlichung in nächster Zeit eigentlich nichts mehr im Weg, was fehlt ist noch die vervollständigung der Dokumentation – ev. komme ich dieses Wochenende dazu.
-
29. April 2008 um 22:04 Uhr #749130lieblingTeilnehmer
Ja, aber ein Userspace-Programm kann nicht so schnell nach Bedarf die Frequenz ändern wie der Kernel. Außerdem denke ich mal, dass es periodisch aufwacht und die derzeitige CPU-Last pollt? Das ist aucht nicht sehr schön oder effizient.
-
30. April 2008 um 9:04 Uhr #749180smaxTeilnehmer
liebling;303293 said:
Ja, aber ein Userspace-Programm kann nicht so schnell nach Bedarf die Frequenz ändern wie der Kernel.Ja aber was bringt das, willst du bei jeder kleinen, kürzeren Belastung sofort die CPU-Frequenz hochtakten? Dann taktet die CPU im schlimmsten Fall alle msec hoch und wieder herunter. Das ist meiner Meinung nicht sinnvoll. Ich will ja haben, das die CPU erst bei einer “wirklichen”, längeren Belastung (die Grenzen dafür muss jeder für sich selbst definieren) die Frequenz erhöht.
liebling;303293 said:
Außerdem denke ich mal, dass es periodisch aufwacht und die derzeitige CPU-Last pollt? Das ist aucht nicht sehr schön oder effizient.Da muss ich dir Recht geben, das Pollen ist vielleicht nicht die schönste Lösung, aber kurz nachschauen, ob die CPU belastet ist oder nicht kostet praktisch nichts (es wird ja in /proc/stat nachgeschaut).
Dafür ist es weitaus schwieriger einen Kernelpatch zu erstellen, der z.B. auf alle verschiedenen Linuxkernerversionen der 2.6-Reihe funktioniert. Nicht zuletzt deshalb ist es den Entwicklern von Linux-PHC zu viel geworden. Da hat die userspace Lösung eindeutig einen Vorteil und wiegt das Polling meiner Meinung nach bei weitem auf. Ausserdem kann die Userspacelösung auch für mehrer Betriebssysteme verwendet werden. Zumindest ist geplant, das mein neues Tool später auch ein FreeBSD Modul erhält, und somit der meiste Code wiederverwendet wird.
-
1. Mai 2008 um 0:05 Uhr #749356lieblingTeilnehmer
Ja aber was bringt das, willst du bei jeder kleinen, kürzeren Belastung sofort die CPU-Frequenz hochtakten? Dann taktet die CPU im schlimmsten Fall alle msec hoch und wieder herunter. Das ist meiner Meinung nicht sinnvoll.
Ja, das will ich! Und ich finde es auch sinnvoll. Ich möchte nämlich nicht durch CnQ weniger Performance haben. Doch die hat man spürbar bei Programmen, die ab und zu eben einmal kurz heftig an der CPU zerren, wenn die Frequenz nicht schnell angepasst wird. Ein gutes Beispiel ist sicher ein Webbrowser…Nichtsdestotrotz, ich probier dein Programm dennoch gerne aus, wenn’s fertig ist.
-
1. Mai 2008 um 8:05 Uhr #749381ulvTeilnehmer
liebling;303540 said:
Ja aber was bringt das, willst du bei jeder kleinen, kürzeren Belastung sofort die CPU-Frequenz hochtakten? Dann taktet die CPU im schlimmsten Fall alle msec hoch und wieder herunter. Das ist meiner Meinung nicht sinnvoll.
Ja, das will ich! Und ich finde es auch sinnvoll. Ich möchte nämlich nicht durch CnQ weniger Performance haben. Doch die hat man spürbar bei Programmen, die ab und zu eben einmal kurz heftig an der CPU zerren, wenn die Frequenz nicht schnell angepasst wird. Ein gutes Beispiel ist sicher ein Webbrowser…
Nichtsdestotrotz, ich probier dein Programm dennoch gerne aus, wenn’s fertig ist.
Deine Idee ist schon gut, aber leider macht die CPU beim rauf und runtertackten immer etwas pause für Synchronisation und Spannungs-Stabilisierung, (je nach CPU auch noch für Cache-Rückschreiben und Cache abschalten). Wenn die CPU dauernd springt dann hast du am Ende einen Rechner, der sogar noch langsamer ist als der Runtergetaktete.
Die bessere Lösung ist hier nicht schneller sondern langsamer wechseln. Wenn dir Performance wichtiger ist als Stromsparen kannst du die CPU ja nach 0,5s hoch und erst nach 3 Sekunden wieder runter stellen.
Alles kann man leider nicht haben. 🙄PS: Da dein Browser immer neue Informationen verarbeitet hängt die Performance nicht so sehr an der CPU als am Speicherinterface. Du wirst es also in dem speziellen Fall gar nicht merken. :d:
-
1. Mai 2008 um 18:05 Uhr #749499lieblingTeilnehmer
Ja, aber AFAIK sind diese Zeiten sehr kurz, im µs-Bereich…
Ich finde schnelles Schalten noch immer sinnvoller. Intel bspw. empfiehlt auch ein sehr dynamisches Verhalten mit häufigem Schalten.PS: Da dein Browser immer neue Informationen verarbeitet hängt die Performance nicht so sehr an der CPU als am Speicherinterface. Du wirst es also in dem speziellen Fall gar nicht merken.
Na, der Browser liest ja nicht nur Informationen aus dem Netz, sondern muss sie auch rendern. Und da kann der Cache schon sehr viel Profit bringen. Ich merke jedenfalls einen großen Unterschied zwischen 1000 und 2700 Mhz.
-
2. Mai 2008 um 9:05 Uhr #749604smaxTeilnehmer
liebling;303707 said:
Ja, aber AFAIK sind diese Zeiten sehr kurz, im µs-Bereich…Diese Zeiten sind schon sehr kurz, aber so kurz wiederum auch nicht.Bei jeder Spannungsänderung wird je nach Version der AMD-K8-CPU eine Stabilisierungszeit von 100µs bis zu 40µs empfohlen (wahrscheinlich sind das aber auch etwas konservative Werte). Bei einem Frequenzwechsel (z.B. hinauf) der CPU muss nun die Spannung Schritt für Schritt verstellt werden und bei jeden Schritt jedes mal die Stabilisierungszeit abgewartet werden (Beim hinauftakten wird manche CPU auch noch etwas Übervoltet), denn man kann nicht einfach die Spannung der CPU auf einmal um z.B. 0.1V verstellen – man muss das in kleineren Spannungsschritten (konservativer Wert 0.025V) durchführen. Auf was man beim darauf folgenden Frequenzwechsel warten muss, weiss ich (noch) nicht. Dann wird bei manchen CPUs auch noch die Spannung auf den normalen Level gebracht. Da kommt also schon eine gewissen (kurze) Zeit zusammen.
liebling;303707 said:
Ich finde schnelles Schalten noch immer sinnvoller. Intel bspw. empfiehlt auch ein sehr dynamisches Verhalten mit häufigem Schalten.Na, der Browser liest ja nicht nur Informationen aus dem Netz, sondern muss sie auch rendern. Und da kann der Cache schon sehr viel Profit bringen. Ich merke jedenfalls einen großen Unterschied zwischen 1000 und 2700 Mhz.Ich finde es immer noch nicht sinnvoll, denn gerade bei einem Browser mit einer “normalen” Webseite will ich nicht haben, das die CPU gleich hinauftaktet – erst wenn eine Seite wirklich besondere hohe Renderingleistung erfordert nach einer gewissen Zeit.Aber ich habe oben eh schon geschrieben, das jeder selber seine eigene Grenzen hat was für ihn sinnvoll ist oder nicht (eine generelle Lösung wird es nicht geben).Für mich wäre wirklich noch interessant, wieviel lange der ondemand Governor des Linuxkernels wartet, bevor er wieder die Auslastung wieder überprüft. Nach einem kurzen Bick in den Source kommt mir vor, das er das tausendfache einer Transitionszeit wartet, leider weiss ich aber (noch) nicht wie lange diese Transistionszeit ist (wird wahrscheinlich auch CPU anhängig sein).
Nichtsdestotrotz, ich probier dein Programm dennoch gerne aus, wenn’s fertig ist.
Schicke mir eine PM mit deiner Email-adresse, dann kannst du es sofort haben, den es fehlt nur mehr die (genaue) Dokumentation, der Sourcecode für die erste Version wird normalerweise schon so bleiben (ausser ich finde natürlich noch Bugs).
-
2. Mai 2008 um 16:05 Uhr #749697ulvTeilnehmer
smax;303826 said:
Für mich wäre wirklich noch interessant, wieviel lange der ondemand Governor des Linuxkernels wartet, bevor er wieder die Auslastung wieder überprüft. Nach einem kurzen Bick in den Source kommt mir vor, das er das tausendfache einer Transitionszeit wartet, leider weiss ich aber (noch) nicht wie lange diese Transistionszeit ist (wird wahrscheinlich auch CPU anhängig sein).aus der Man-Page von cpufreqd.conf
[CODE] poll_interval
A float larger than 0.15, measures the interval between system status reading in seconds. Note: the lower bound has been set in order
to try to avoid trashing your system if using a too low value. (default: 1.0)
[/CODE]
Wenn 0,15 Sekunden schon Grenzwertig sind dauert das Schalten scheinbar doch bis zu 0,1 Sekunde. -
2. Mai 2008 um 22:05 Uhr #749772smaxTeilnehmer
ulv;303932 said:
aus der Man-Page von cpufreqd.conf[CODE] poll_interval A float larger than 0.15, measures the interval between system status reading in seconds. Note: the lower bound has been set in order to try to avoid trashing your system if using a too low value. (default: 1.0)[/CODE]Wenn 0,15 Sekunden schon Grenzwertig sind dauert das Schalten scheinbar doch bis zu 0,1 Sekunde.Das ist der Wert vom cpufreqd, das ist ebenfalls ein Userlandprogramm ähnlich dem powernowd und hat mit dem ondemand Governor des Kernel nichts zu tun. Ausserdem stimmt das mit dem Intervall von einer bestimmten Zeit (z.B. 1 sek.)auch nicht genau (zumindest bei meinem Tool), da die Ausführungszeit des Programmcodes dazwischen (mit Spannungsänderung und Frequenzänderung z.B. 100ms) noch dazukommt. Also wäre die Gesamtdauer hier im Beispiel 1.1 sek. von einem Durchlauf.Mit meinem Tool habe ich testweise kurz mal als Pollininterval 100ms verwendet. Hat auch ohne Probleme funktioniert.
-
5. Mai 2008 um 22:05 Uhr #750343maewynTeilnehmer
wird das “neue” cpupw eigentlich alle 6-Bit unterstützen?
dann wären ja Spannungen von 0,375V bis 1,55V möglich.Gruß Patrick
-
5. Mai 2008 um 23:05 Uhr #750354smaxTeilnehmer
maewyn;304647 said:
wird das “neue” cpupw eigentlich alle 6-Bit unterstützen?
dann wären ja Spannungen von 0,375V bis 1,55V möglich.Ja, es unterstütz alle 6-Bits für AMD K8 CPUs ab Stepping F.
Ich habe einen LE-1300 bis auf 0.7250V untervolten können. Aber wirklich stabil ohne freezes im Langezeitbetrieb ist er dann bei 0.775 V bei 1 GHz.
Ein Turion läuft derzeit mit 0.6875 V bei 800MHz. -
15. Mai 2008 um 17:05 Uhr #752124U=R*ITeilnehmer
ich habe cpupw früher schon immer probiert. Leider konnte ich mir nicht erklären, daß ich bei einer Sparta LE-1100 CPU unter Windows im idle bis auf 0,775V stabil runtervolten konnte. Unter Linux mit cpupw jedoch “nur” auf minimal 0.85V. Auch nach oben hin hatten mir unter Windows immer maximal 0.975V bei voller Last genügt. Mit Linux mußte ich auch hier bis auf 1.05V raufgehen. Stabilitätsmäßig hatte ich jedoch mit cpupw ansonsten überhaupt keine Probleme. Hast Du eine Ahnung woran das mit den unterschiedlichen Spannungswerten liegen kann?
Ich verwende z.Zt anstatt cpupw den powernow-k8 patch aus dem Gentoo-Forum mit Kernel 2.6.25.
Damit kann ich dann zumindest bis 0.825V bzw. 1.000V runtervolten. -
15. Mai 2008 um 18:05 Uhr #752139U=R*ITeilnehmer
Na das sind doch mal schöne Aussichten :d:
Basiert Dein Tool jetzt dann auf dem bisherigen cpupw oder ist das ein komplett neues Stück Software ?
-
15. Mai 2008 um 18:05 Uhr #752137smaxTeilnehmer
U=R*I;306550 said:
Stabilitätsmäßig hatte ich jedoch mit cpupw ansonsten überhaupt keine Probleme. Hast Du eine Ahnung woran das mit den unterschiedlichen Spannungswerten liegen kann?cpupw verstellt die CPU-Spannung in einem Schritt (egal wie hoch die Spannung ist), den AMD-Spez. nach muss das aber in einzelnen Schritten erfolgen. Daher könnte sein, dass die CPU nicht so weit undervoltet werden konnte, da bei einem grösseren Schritt (z.B. 0.3V) die CPU das nicht mehr verkraftet.
So wie es jetzt ausschaut wird das Undervolting-Tool von mir dieses oder spätestens nächstes Wochenende released \D/.
Der Name des Undervolting-Tools ist cpupowerd und es werden derzeit nur AMD K8 CPUs unterstützt.
Es wird unter sourceforge zum Download angeboten werden.
Dann solltes du auch ähnliche CPU-Spannungswerte wie unter Windows erreichen können :D. -
15. Mai 2008 um 18:05 Uhr #752145smaxTeilnehmer
U=R*I;306566 said:
Basiert Dein Tool jetzt dann auf dem bisherigen cpupw oder ist das ein komplett neues Stück Software ?Es ist praktisch eine ganz neue Software in Modulbauweise, sodaß möglichst leicht zusätzliche Betriebssysteme (z.B. FreeBSD) bzw. zusätzliche (Intel) CPUs unterstützt werden können.
Die Bedienung ist ziemlich ähnlich dem cpupw und es werden derzeit auch nur die Cool ‘n Quiet Freqeunzen unterstüzt (Frequenz soll bei einer späteren Release selbst wählbar sein).Es wurde auf die Stabilität und die Modulbauweise besonderen Wert gelegt.
Die Stabilität ist aber natürlich auch vom Benutzer abhängig, denn wenn zuviel undervoltet wird, habe ich auf die Stabilität keinen Einfluss mehr. -
16. Mai 2008 um 23:05 Uhr #752359NetworkerZTeilnehmer
Hallo an alle Forenmember und Stromsparfreaks!
Ich habe eben erfolgreich das neue UV Tool von smax getestet. Alles läuft problemlos und ohne Absturz oder sonstigen Fehlermeldungen. Für mich ist es auf alle Fälle DER Ersatz für cpupw! Alleine die leserliche conf File ist schon Gold wert 🙂 Wenn jetzt noch das Feature kommt, dass man die Frequenzstufen selbst wählen kann, hab ich endlich das, worauf ich schon solange warte!
Danke schon mal an dieser Stelle an smax für dieses Tool!
Greetz
NetworkerZ
-
24. Mai 2008 um 0:05 Uhr #753964
-
23. Juli 2008 um 12:07 Uhr #766112heinzelrumpelTeilnehmer
Hi,
bei mir haut es leider mit cpupw nicht so ganz hin
no2:/usr/src/cpupw-0.2.2# cpupw -S -d -c /etc/cpupw.conf
Different frequencies in config fileDie cpupw.conf sieht so aus.
[code]
1
1
304
4
2200000 18
2000000 20
1800000 22
1000000 24
1
[/code]Was könnte die Fehlermeldung hervorrufen?
Gruß, Heinzelrumpel
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.