PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : radeon-Treiber beim Start zum Strom sparen veranlassen...



xone 62
28.06.11, 18:59
Hallo zusammen!

Nach nun ca. 6 Jahren hab ich mir einen neuen Rechner gegönnt. Und man lernt ja aus Fehlern, der Neue ist flüsterleise. Nun wird die passiv gekühlte Grafikkarte (HD 5750) beim normalen KDE4-Betrieb schnell bis zu 100°C heiss. Also möchte ich die Karte drosseln. Den fglrx-Treiber bringe ich beim besten Willen nicht zum laufen, jedoch habe ich das hier gefunden: http://www.overclock.net/linux-unix/731469-how-power-saving-radeon-driver.html

Mittels "profile" und "low" kann ich die Karte nun drosseln und sie wird "nur" noch 80°C warm.


amd-x6:/etc/init.d/boot.d # cat /sys/kernel/debug/dri/0/radeon_pm_info
default engine clock: 700000 kHz
current engine clock: 699990 kHz
default memory clock: 1150000 kHz
current memory clock: 1150000 kHz
voltage: 1100 mV

amd-x6:/etc/init.d/boot.d # echo profile > /sys/class/drm/card0/device/power_profile
amd-x6:/etc/init.d/boot.d # echo low > /sys/class/drm/card0/device/power_profile

amd-x6:/etc/init.d/boot.d # cat /sys/kernel/debug/dri/0/radeon_pm_info
default engine clock: 700000 kHz
current engine clock: 399990 kHz
default memory clock: 1150000 kHz
current memory clock: 1150000 kHz
voltage: 950 mV


Wie aber bringe ich das System nun dazu, diese Einstellungen beim starten anzuwenden? Eintragen in die boot.local hat nichts gebracht und damit wären meine bescheidenen Linux-Kentnisse bereits erschöpft...

Ich freue mich auf eure Antworten!

MfG Xone 62

-hanky-
28.06.11, 19:24
Hi,

normalerweise sollte das nach dem Eintragen in die rc.local funktionieren.

Der Fehler liegt vermutlich eher hier:



amd-x6:/etc/init.d/boot.d # echo profile > /sys/class/drm/card0/device/power_profile


muss korrekterweise



amd-x6:/etc/init.d/boot.d # echo profile > /sys/class/drm/card0/device/power_method


lauten.

-hanky-

xone 62
28.06.11, 20:12
Hallo -hanky-

Danke für die rasche Antwort! Mit dem falschen Befehl hast du wohl recht gehabt. Eine rc.local habe ich in /etc/init.d nicht gefunden (bin ich im falschen Pfad?), aber eine rc. Aus dieser bin ich aber nicht wirklich schlau geworden, also hab ichs nochmals mit der boot.local versucht. Naja, nach Grub wurden die Bildschirme schwarz und ich musste mittels Rescue-System und vim die beiden EInträge wieder löschen damit das System wieder mit Anzeige bootete. :D

MfG Xone 62

-hanky-
28.06.11, 20:19
Hi,

bei den beiden von mir aktuell verwendeten Distributionen (Ubuntu 11.04, Fedora 15) gibt es unter /etc eine rc.local, die standardmäßig am Ende des Bootvorgangs ausgeführt wird.

Wie das bei deiner Distribution gelöst ist kann ich nicht sagen, die hast du ja nicht verraten. ;)

Dass das System hängenbleibt sollte allerdings nicht passieren - bist du dir sicher dass das mit den Einträgen zusammenhängt? Wenn du die Befehle manuell eingibst funktioniert ja auch alles, oder?

-hanky-

P.S.: Ich tippe mal auf Suse - da bist du (nach kurzer Google-Recherche) bei der /etc/init.d/boot.local wohl richtig. Du kannst ja mal die boot.local hier posten, vielleicht fällt einem Suse-Nutzer was auf!

xone 62
28.06.11, 20:35
Hallo nochmals

Richtig getippt, ich fahre unter openSUSE 11.4 mit dem 2.6.37.1-1.2-default auf x86_64. Habs doch tatsächlich zweimal vergessen zu schreiben.

Gebe ich die Einträge manuell ein, so funktioniert alles richtig. Der Bildschirm flackert allerdings ganz kurz beim Wechsel in den low-powermode. Und vielleicht liegt hier der Hund begraben. Gleich zum Beginn des Boot-Vorgangs wird doch von VESA auf den "neuen" Treiber, hier radeondrmfb umgeschaltet. Vielleicht plagt sich hier etwas bzw. der Eintrag in boot.local wird zu früh ausgeführt?


6.534268] fb: conflicting fb hw usage radeondrmfb vs VESA VGA - removing generic driver
[ 6.534293] Console: switching to colour dummy device 80x25
[ 6.534551] radeon 0000:01:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
[ 6.534555] radeon 0000:01:00.0: setting latency timer to 64
[ 6.535707] [drm] initializing kernel modesetting (JUNIPER 0x1002:0x68BE).
[ 6.535822] [drm] register mmio base: 0xFE6E0000
[ 6.535823] [drm] register mmio size: 131072
[ 6.536419] ATOM BIOS: JUNIPER
[ 6.536428] radeon 0000:01:00.0: GPU softreset
[ 6.536430] radeon 0000:01:00.0: GRBM_STATUS=0x00003828
[ 6.536431] radeon 0000:01:00.0: GRBM_STATUS_SE0=0x00000007
[ 6.536433] radeon 0000:01:00.0: GRBM_STATUS_SE1=0x00000007
[ 6.536435] radeon 0000:01:00.0: SRBM_STATUS=0x200000C0
[ 6.536446] radeon 0000:01:00.0: GRBM_SOFT_RESET=0x00007F6B
[ 6.536548] radeon 0000:01:00.0: GRBM_STATUS=0x00003828
[ 6.536549] radeon 0000:01:00.0: GRBM_STATUS_SE0=0x00000007
[ 6.536551] radeon 0000:01:00.0: GRBM_STATUS_SE1=0x00000007
[ 6.536552] radeon 0000:01:00.0: SRBM_STATUS=0x200000C0
[ 6.537554] radeon 0000:01:00.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M used)
[ 6.537556] radeon 0000:01:00.0: GTT: 512M 0x0000000040000000 - 0x000000005FFFFFFF
[ 6.540798] [drm] Detected VRAM RAM=1024M, BAR=256M
[ 6.540802] [drm] RAM width 128bits DDR
[ 6.540869] [TTM] Zone kernel: Available graphics memory: 4096044 kiB.
[ 6.540870] [TTM] Zone dma32: Available graphics memory: 2097152 kiB.
[ 6.540871] [TTM] Initializing pool allocator.
[ 6.540890] [drm] radeon: 1024M of VRAM memory ready
[ 6.540892] [drm] radeon: 512M of GTT memory ready.
[ 6.540937] radeon 0000:01:00.0: irq 53 for MSI/MSI-X
[ 6.540941] radeon 0000:01:00.0: radeon: using MSI.
[ 6.540970] [drm] radeon: irq initialized.
[ 6.540972] [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 6.541500] [drm] Loading JUNIPER Microcode

Die boot.local ist (beinahe) leer, bis auf einen Eintrag für meine Logitech-Maus:


xxx@amd-x6:~> cat /etc/init.d/boot.local
#! /bin/sh
#
# Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany. All rights reserved.
#
# Author: Werner Fink, 1996
# Burchard Steinbild, 1996
#
# /etc/init.d/boot.local
#
# script with local commands to be executed from init on system startup
#
# Here you should add things, that should happen directly after booting
# before we're going to the first run level.
#

lomoco -8 --sms

Eigentlich bin ich ja nicht auf die beiden Zeilen angewiesen, ich bin jedem anderen Vorschlag gegenüber offen, der meine Grafikkarte untertaktet. Ich meine anstelle von 100°C noch 76°C ist doch ein Unterschied. Und die Leistung meiner Grafikkarte dürfte auch gedrosselt noch lange für meine Ansprüche reichen (Onboard-Grakas shaben eben so selten Dual.DVI...). ;)

MfG Xone 62

-hanky-
28.06.11, 21:05
Hi,

problematisch ist evtl. Folgendes:



# Here you should add things, that should happen directly after booting
# before we're going to the first run level.


Meines Wissens wird die rc.local ganz am Schluss ausgeführt, also nachdem alle übrigen Startskripte ausgeführt wurden. Wenn ich die Beschreibung aus der boot.local hingegen richtig interpretiere, wird diese ganz zu Beginn ausgeführt. Das könnte wie von dir vermutet evtl. Probleme bereiten.

Du hättest die Möglichkeit ein eigenes Startskript anzulegen und das dann ganz gegen Ende ausführen zu lassen.

Da sich Ubuntu/Suse hier sehr ähnlich sind, könnte dir [1] als Ansatz helfen.

Das mit dem Flackern ist "normal" - KMS macht hier wohl noch ab und an Probleme. Das ist auch der Grund wieso sich "dynpm" als Profil nicht empfiehlt, da flackert der Bildschirm andauernd beim Wechsel der Taktfrequenz. Ich hoffe ja dass das bald behoben wird, dynpm ist einfach die sauberere Lösung.
Ich seh mich schon vor dem Laptop sitzen und fluchen, weil irgendeine Grafikanwendung unerklärlicherweise ruckelt und ich vergessen hab, dass die Grafikkarte ja auf low steht... :ugly:

-hanky-

[1] http://wiki.ubuntuusers.de/dienste

xone 62
28.06.11, 21:26
Ich denke, du hast den entscheidenden Punkt gefunden. update-rc.d gibt es bei SuSE anscheinend nicht, dafür habe ich aber folgendes gefunden:


amd-x6:/etc/init.d # cat before.local
#! /bin/sh
#
# Copyright (c) 2010 SuSE LINUX Products GmbH, Germany. All rights reserved.
#
# Author: Werner Fink, 2010
#
# /etc/init.d/before.local
#
# script with local commands to be executed from init before executing
# any script of a runlevel.
#
# Here you should add things, that should happen directly before entering
# a runlevel. Common environment variables for this are:
# RUNLEVEL -- The current system runlevel.
# PREVLEVEL -- The previous runlevel (useful after a runlevel switch).
#


amd-x6:/etc/init.d # cat after.local
#! /bin/sh
#
# Copyright (c) 2010 SuSE LINUX Products GmbH, Germany. All rights reserved.
#
# Author: Werner Fink, 2010
#
# /etc/init.d/after.local
#
# script with local commands to be executed from init after all scripts
# of a runlevel have been executed.
#
# Here you should add things, that should happen directly after
# runlevel has been reached. Common environment
# variables for this are:
# RUNLEVEL -- The current system runlevel.
# PREVLEVEL -- The previous runlevel (useful after a runlevel switch).
#


Ich denke, dass ich hier mehr Erfolg haben sollte. Ich werde mich wohl mal etwas ins Skripting einlesen müssen, würde ja sowieso nichts schaden wenn man da zumindest ein Bisschen Bescheid wüsste. :ugly:

Tja, meine ersten Erfahrungen mit KMS dazumals waren ja ganz was Übles. Aber mittlerweile scheint es ganz ordentlich zu klappen. Aber dynpm wär natürlich was hübsches, aber wenn ich dies aktiviere bleibt meine GraKa dauernd hochgetaktet, in meinem Fall wäre das vorläufig also sowieso keine Lösung. Klar, low ist wie du schreibst keine dauerhaft brauchbare Lösung. Aber immerhin. :)

MfG Xone 62

-hanky-
28.06.11, 23:03
Moin,

dann würd ich mal testen ob es klappt wenn du die Befehle in die after.local einträgst. So wie sich das liest sollte das dann ja am Ende des Runlevels ausgeführt werden. Im schlimmsten Fall flackert der Bildschirm dann 1x kurz und das wars.

Skripting-Erfahrung schadet nie, da kann ich nur zustimmen. Wenn ich dran denke wie viele Dreizeiler mir schon Unmengen an Arbeit erspart haben...

Dynpm "funktioniert" bei mir schon, will heißen: Er taktet schön rauf und runter. Dafür blitzt dann in unregelmäßigen Abständen der Bildschirm kurz auf und man kommt sich vor wie bei Men in Black... Ich habs dann freiwillig deaktiviert. :ugly:

-hanky-

simpleminds
29.06.11, 09:41
Ich hab SuSe noch nie benutzt. Aber ein wenig googeln scheint mir zu bestätigen, dass SuSe wie Ubuntu und bei mir gentoo ein Paket namens (oder ähnlich) sysfsutils hat. Innerhalb dieses Pakets sollte man die nötigen Einstellungen treffen können.

xone 62
29.06.11, 20:20
Tacho!

Ich habe die beiden Zeilen nun in der before.local eingetragen und siehe da, die Grafik wird erfolgreich heruntergetaktet und erreich 80°C nicht mehr, was ich durchaus akzeptabel finde.

Naja, man will ja nicht immer alles vergessen wenn die Grafik hoch- oder runtergetaktet wird. Deshalb lasse ich das Profil vorläufig mal auf low.

Vielen Dank für die rasche Hilfe!

MfG Xone 62

gropiuskalle
30.06.11, 00:25
Ich habe die beiden Zeilen nun in der before.local eingetragen und siehe da, die Grafik wird erfolgreich heruntergetaktet und erreich 80°C nicht mehr, was ich durchaus akzeptabel finde.

Ohne Dir Deinen Erfolg mies machen zu wollen, aber eigentlich laufen auch passiv gekühlte Karten i.d.R. bedeutend kühler. Ich würde mal schauen, ob Dein Gehäuse für derartige Szenarien ausgelegt ist, d.h. halbwegs geräumig ist, ansonsten Durchzug herrscht etc. Bei einem Freund habe ich kürzlich eine passiv gekühlte NVidia Geforce 9500GT eingebaut, und die kommt selten über 60°C, wenn nix los ist, pendelt die sich bei etwa 45°C ein. Eine Karte, die permanent derart warm ist, kann u.U. auch andere Teile des Systems über Gebühr thermisch belasten.

xone 62
30.06.11, 21:29
Hallo groipuskalle!

Klar, auch die 75°C sind noch ziemlich warm. Da das Gehäuse aber gut durchlüfttet wird, die CPU und das Netzteil eine gute Kühllösung besitzen und CPU und Mainboard sehr moderate Temperaturen aufweisen befürchte ich keine grossen Nachteile durch die warme GraKa. Diese selbst sollte mit diesen Temperaturen ja gut zurechtkommen und andere Komponenten sollten keine in Mitleidenschaft gezogen werden.

Wenn jemand aber einen Tipp hat wie ich die Wärmeabgabe der Karte weiter senken könnte bin ich ganz Ohr. :)

MfG Xone 62