Linux Projektvorstellung: TLP – Linux Stromsparen

Linux Betriebssystem

linrunner

Ubuntuversteher
Themenstarter
Registriert
22 Juni 2007
Beiträge
13.276
Nachdem im Forum öfters nachgefragt wird, wie man Linux die Feinheiten des Stromsparens beibringt, habe ich mich vor einiger Zeit entschlossen, meine Skriptsammlung in eine allgemein benutzbare Form zu bringen. Das Ergebnis möchte ich Euch an dieser Stelle vorstellen.

Dokumentation ist auf der offiziellen Website https://linrunner.de/tlp/ zu finden (die Infos in unserem Wiki werden von mir nicht mehr gepflegt und sind veraltet).

Fragen und Probleme einfach hier im Thread posten.

Für die erste Analyse benötige ich bitte stets den kompletten Output von

Code:
sudo tlp-stat
Anmerkung: ich fordere oft in der weiteren Analyse Teilausgaben an - das sollt ihr jedoch nicht selbstständig tun! Immer zuerst die vollständige Ausgabe.

Bitte auch die FAQ beachten!

Rückmeldungen der Art "alles funktioniert" sind natürlich auch gern gesehen ... :cool:
 
Zuletzt bearbeitet:
Kann es sein, dass die Ladeschwellen aufgehoben werden, wenn das TP vom Stromnetz getrennt wird, bzw. auf 100% geladen wird, wenn man das Netzteil wieder anschließt, und man den Rechner nicht wieder startet.
Normalerweise nicht. Es gibt aber diverse Berichte von ThinkPads die sich nicht immer an die Ladeschwellen halten.
 
So, nach einigen Tests sind auch die openSUSE Pakete (Versionen 11.3 und 11.4) bereit für den Einsatz. Nähere Informationen zur Installation sind im TLP Artikel im ThinkPad Wiki verfügbar.

Falls irgendetwas nicht ganz so läuft wie es soll einfach melden :)


Moin, erst einmal vielen Dank für TLP und die verschiedenen Portierungen!

Ich habe TLP gestern in ein SUSE 11.4, dass auf einem brandneuen T410s installiert ist, integriert und seitdem funktionieren die Suspend To Disk / Suspend To Ram-Funktionen nicht mehr.

Deinstalliere ich TLP und tp_smapi-kmp-desktop, klappt es auch wieder mit den Suspends.

Kann ich irgendwelche Traces/ Debug-Informationen zur Verfügung stellen, die geeignet sind, um dem Problem auf die Schliche zu kommen?

Vielen Dank!

Gruß, Rüdiger
 
Ist es eigentlich auch möglich eine Konfigurationsdatei von TLP im Home-Verzeichnis des Users zu haben, die dann automatisch statt der normalerweise genutzten, verwendet wird? Wenn ja, wo muss die liegen? Wenn nein, wäre das ein Featurewunsch. Würde das Neu-konfigurieren (oder das vorherige Backup und Wiedereinspielen der Datei) bei einer Neuinstallation ersparen.
 
@RuedigerB: willkommen im Forum! :D

Ich hätte zunächst gerne die im Wiki beschriebenen Standardausgaben. Dann müssen wir als nächstes eingrenzen ob es an TLP oder tp-smapi liegt. Bitte tp_smapi-kmp-desktop deinstallieren, Neustart und nochmal testen bitte.


@samba: ich kann dein Problem sehr gut nachvollziehen. Dennoch gibt es Gründe, die mich von einer Implementierung deines Vorschlags abhalten:
  • Systemweite Konfigurationen gehören nunmal nach /etc :D
  • TLP läuft mit Root-Rechten und muß vor bzw. unabhängig von der Benutzeranmeldung gestartet werden können
  • Stolperfallen wie z.B. verschlüsselte Homeverzeichnisse (die Root nicht lesen kann) und die Frage "welcher Benutzer soll's denn sein?"
 
@RuedigerB: willkommen im Forum! :D

Ich hätte zunächst gerne die im Wiki beschriebenen Standardausgaben. Dann müssen wir als nächstes eingrenzen ob es an TLP oder tp-smapi liegt. Bitte tp_smapi-kmp-desktop deinstallieren, Neustart und nochmal testen bitte.
"

TLP ist installiert, tp_smapi-kmp-desktop ist deinstalliert - Standby und Ruhezustand funktionieren nicht. Anbei die gewünschte Standardausgabe:

grep "tlp" /var/log/debug
Sep 8 21:40:55 linux tlp[1385,1376]: +++ init.d start
Sep 8 21:40:55 linux tlp[1385,1376]: set_charge_thresholds.enter
Sep 8 21:41:56 linux tlp[2152,2121]: +++ mode=true
Sep 8 21:41:56 linux tlp[2152,2121]: set_laptopmode(1): 2
Sep 8 21:41:56 linux tlp[2152,2121]: set_dirty_parms(1): 60 6000
Sep 8 21:41:57 linux tlp[2152,2121]: set_sched_powersave(1): sched_smt_power_savings 0
Sep 8 21:41:57 linux tlp[2152,2121]: set_disk_apm_level(1): sda [] 128
Sep 8 21:41:57 linux tlp[2152,2121]: set_sata_link_power(1): min_power
Sep 8 21:41:57 linux tlp[2152,2121]: set_pcie_aspm(1): powersave
Sep 8 21:41:57 linux tlp[2152,2121]: set_radeon_profile(1).not_available
Sep 8 21:41:57 linux tlp[2152,2121]: set_wifi_power_mode(1, wlan0): on
Sep 8 21:41:57 linux tlp[2152,2121]: disable_wake_on_lan: y
Sep 8 21:41:57 linux tlp[2152,2121]: set_sound_power_mode.hda: 1 Y
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:00.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:02.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:16.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:16.3
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:19.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1a.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1b.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1c.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1c.1
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1c.3
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1d.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1e.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1f.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1f.2
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1f.3
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:00:1f.6
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:03:00.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:ff:00.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:ff:00.1
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:ff:02.0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:ff:02.1
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:ff:02.2
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/pci/devices/0000:ff:02.3
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-0
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-1
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-10
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-11
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-12
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-13
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-14
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-15
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-16
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-17
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-2
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-3
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-4
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-5
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-6
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-7
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-8
Sep 8 21:41:57 linux tlp[2152,2121]: set_runtime_pm(1).on: /sys/bus/i2c/devices/i2c-9
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.autosuspend_delay_ms_not_writable: /sys/bus/usb/devices/1-1
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.auto: /sys/bus/usb/devices/1-1 (control, autosuspend)
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.autosuspend_delay_ms_not_writable: /sys/bus/usb/devices/1-1.3
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.auto: /sys/bus/usb/devices/1-1.3 (control, autosuspend)
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.autosuspend_delay_ms_not_writable: /sys/bus/usb/devices/1-1.4
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.auto: /sys/bus/usb/devices/1-1.4 (control, autosuspend)
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.autosuspend_delay_ms_not_writable: /sys/bus/usb/devices/1-1.6
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.auto: /sys/bus/usb/devices/1-1.6 (control, autosuspend)
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.autosuspend_delay_ms_not_writable: /sys/bus/usb/devices/2-1
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.auto: /sys/bus/usb/devices/2-1 (control, autosuspend)
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.autosuspend_delay_ms_not_writable: /sys/bus/usb/devices/2-1.4
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.auto: /sys/bus/usb/devices/2-1.4 (control, autosuspend)
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.autosuspend_delay_ms_not_writable: /sys/bus/usb/devices/usb1
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.auto: /sys/bus/usb/devices/usb1 (control, autosuspend)
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.autosuspend_delay_ms_not_writable: /sys/bus/usb/devices/usb2
Sep 8 21:41:57 linux tlp[2152,2121]: enable_usb_suspend.auto: /sys/bus/usb/devices/usb2 (control, autosuspend)
Sep 8 21:42:00 linux tlp[2526,2050]: +++ mode=xlogin


Ich bin gespannt... :thumbup:

Gruß, Rüdiger
 
Ich meinte noch nicht den Trace, sondern
Code:
egrep -v '^#|^\s*$' /etc/default/tlp
sudo tlp-stat
 
Ich meinte noch nicht den Trace, sondern
Code:
egrep -v '^#|^\s*$' /etc/default/tlp
sudo tlp-stat

Bitteschön:

linux:/home/rb # egrep -v '^#|^\s*$' /etc/default/tlp
TLP_ENABLE=1
DISK_IDLE_SECS_ON_AC=0
DISK_IDLE_SECS_ON_BAT=2
MAX_LOST_WORK_SECS_ON_AC=15
MAX_LOST_WORK_SECS_ON_BAT=60
SCHED_POWERSAVE_ON_AC=0
SCHED_POWERSAVE_ON_BAT=1
DISK_DEVICES="sda sdb"
DISK_APM_LEVEL_ON_AC="254 254"
DISK_APM_LEVEL_ON_BAT="128 128"
SATA_LINKPWR_ON_AC=max_performance
SATA_LINKPWR_ON_BAT=min_power
PCIE_ASPM_ON_AC=performance
PCIE_ASPM_ON_BAT=powersave
RADEON_POWER_PROFILE_ON_AC=high
RADEON_POWER_PROFILE_ON_BAT=low
WIFI_PWR_ON_AC=1
WIFI_PWR_ON_BAT=5
WOL_DISABLE=Y
SOUND_POWER_SAVE=1
SOUND_POWER_SAVE_CONTROLLER=Y
BAY_POWEROFF_ON_BAT=0
BAY_DEVICE="sr0"
RUNTIME_PM_ON_AC=on
RUNTIME_PM_ON_BAT=on
USB_AUTOSUSPEND=1
linux:/home/rb # tlp stat
--- tlp 0.3.2 --------------------------------------------
System = LENOVO ThinkPad T410s 291245G
BIOS = 6UET64WW (1.44 )
Release = "openSUSE 11.4 (x86_64)"
Kernel = 2.6.37.6-0.7-desktop x86_64

tlp power save = enabled
power source = battery

/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand
/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor = ondemand
/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor = ondemand
/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor = ondemand

/sys/devices/system/cpu/sched_smt_power_savings = 0

/sys/devices/system/cpu/cpu?/cpufreq/phc_controls = (phc kernel not available)

/proc/acpi/ibm/thermal = temperatures: 41 0 0 0 0 0 0 0

/proc/sys/vm/laptop_mode = 2
/proc/sys/vm/dirty_writeback_centisecs = 6000
/proc/sys/vm/dirty_expire_centisecs = 6000
/proc/sys/vm/dirty_ratio = 60
/proc/sys/vm/dirty_background_ratio = 1
/proc/sys/fs/xfs/age_buffer_centisecs = (not available)
/proc/sys/fs/xfs/xfssyncd_centisecs = (not available)
/proc/sys/fs/xfs/xfsbufd_centisecs = (not available)

/dev/sda:
Model = TOSHIBA MK2533GSG
Firmware = QS002E
APM Level = 128
scheduler = cfq

SMART info:
4 Start_Stop_Count = 68
5 Reallocated_Sector_Ct = 17
9 Power_On_Hours = 50 [h]
193 Load_Cycle_Count = 1556

/sys/class/scsi_host/host0/link_power_management_policy = min_power
/sys/class/scsi_host/host1/link_power_management_policy = min_power
/sys/class/scsi_host/host2/link_power_management_policy = min_power
/sys/class/scsi_host/host3/link_power_management_policy = min_power
/sys/class/scsi_host/host4/link_power_management_policy = min_power
/sys/class/scsi_host/host5/link_power_management_policy = min_power

/sys/module/pcie_aspm/parameters/policy = powersave

bluetooth = on
wifi = on
wwan = on

wlan0(iwlagn): power management = on

/sys/module/snd_hda_intel/parameters/power_save = 1
/sys/module/snd_hda_intel/parameters/power_save_controller = Y

ThinkPad extended battery info not available (missing tp_smapi kernel module).
/sys/class/power_supply/BAT0/manufacturer = SANYO
/sys/class/power_supply/BAT0/charge_full_design = 43290 [mAh]
/sys/class/power_supply/BAT0/charge_full = 44400 [mAh]
/sys/class/power_supply/BAT0/charge_now = 22860 [mAh]
/sys/class/power_supply/BAT0/cycle_count = 0

tlp usb autosuspend = enabled
tlp usb blacklist = (not configured)

/sys/bus/usb/devices/1-1/power/autosuspend = 2, control = auto -- 8087:0020 unknown device (hub)
/sys/bus/usb/devices/1-1.3/power/autosuspend = 2, control = auto -- 147e:2016 Biometric Coprocessor (no driver)
/sys/bus/usb/devices/1-1.4/power/autosuspend = 2, control = auto -- 0a5c:217f Broadcom Bluetooth Device (btusb)
/sys/bus/usb/devices/1-1.6/power/autosuspend = 2, control = auto -- 17ef:480d Integrated Camera (uvcvideo)
/sys/bus/usb/devices/2-1/power/autosuspend = 2, control = auto -- 8087:0020 unknown device (hub)
/sys/bus/usb/devices/2-1.4/power/autosuspend = 2, control = auto -- 05c6:9204 Qualcomm Gobi 2000 (qcserial)
/sys/bus/usb/devices/usb1/power/autosuspend = 2, control = auto -- 1d6b:0002 EHCI Host Controller (hub)
/sys/bus/usb/devices/usb2/power/autosuspend = 2, control = auto -- 1d6b:0002 EHCI Host Controller (hub)

Gruß, Rüdiger
 
Gut, dann schauen wir mal wo es hakt. Was passiert genau und ist das Problem beim Suspend oder beim Resume?

Geh mal nach /var/log und benenne die vorhandenen Dateien pm-suspend.log und pm-powersave.log um (zur Abgrenzung). Dann machst Du einen Suspend/Resume-Versuch und zeigst hinterher die beiden Dateien und außerdem den entsprechenden Trace-Abschnitt.

Am besten stellst Du die langen Outputs bei http://paste.ubuntuusers.de ein, dann wird der Thread nicht so unübersichtlich.
 
Gut, dann schauen wir mal wo es hakt. Was passiert genau und ist das Problem beim Suspend oder beim Resume?

Geh mal nach /var/log und benenne die vorhandenen Dateien pm-suspend.log und pm-powersave.log um (zur Abgrenzung). Dann machst Du einen Suspend/Resume-Versuch und zeigst hinterher die beiden Dateien und außerdem den entsprechenden Trace-Abschnitt.

Der Versuch, in den Suspend-Modus zu wechseln, führt nach einem kurzen Versuch (Blinken der "Schlaf-LED") zu einem gesperrten Bildschirm. Anbei die Logdateien und der Trace: http://paste.ubuntuusers.de/402547/

Gruß, Rüdiger
 
Hi,

alle Skripte laufen sauber durch, es liegt also wahrscheinlich an einer der Einstellungen. Ich bin noch am Überlegen wie wir es weiter eingrenzen. Tritt das Problem gleichermaßen am Netzteil und im Akkubetetrieb auf?
 
Hi,

alle Skripte laufen sauber durch, es liegt also wahrscheinlich an einer der Einstellungen. Ich bin noch am Überlegen wie wir es weiter eingrenzen. Tritt das Problem gleichermaßen am Netzteil und im Akkubetetrieb auf?

Hi,

gerade getestet. Ja, es ist unerheblich, ob ich im Akku- oder im AC-Betrieb bin.

Gruß, Rüdiger
 
Was mir eben noch auffällt: der Trace scheint unvollständig zu sein. Zu Beginn und Ende des Hibernate wird /usr/lib/pm-utils/sleep.d/00powersave aufgerufen, das dann wiederum alles in /usr/lib/pm-utils/power.d/ - d.h. auch zztlp - aufrufen sollte. Den zeitlich passenden Aufruf von tlp false sehe ich aber nicht im Trace. Ebenso fehlt der Trace-Output von sleep.d/49bay und sleep.d/49wwan.

Falls Du es nochmal probieren möchtest, würde mich ein Suspend statt eines Hibernate interessieren.
 
Zuletzt bearbeitet:
Was mir eben noch auffällt: der Trace scheint unvollständig zu sein. Zu Beginn und Ende des Hibernate wird /usr/lib/pm-utils/sleep.d/00powersave aufgerufen, das dann wiederum alles in /usr/lib/pm-utils/power.d/ - d.h. auch zztlp - aufrufen sollte. Den zeitlich passenden Aufruf von tlp false sehe ich aber nicht im Trace. Ebenso fehlt der Trace-Output von sleep.d/49bay und sleep.d/49wwan.

Falls Du es nochmal probieren möchtest, würde mich ein Suspend statt eines Hibernate interessieren.

Bitteschön: http://paste.ubuntuusers.de/402602/
 
Mach mal USB Autosuspend aus in /etc/default/tlp
Code:
USB_AUTOSUSPEND=0
Einstellung aktivieren per
Code:
tlp start
Dann wieder Suspend testen.
 
Ich würde gerne noch herausfinden welches Gerät es ist. Dieses kann man dann gezielt Blacklisten, d.h. vom Autosuspend ausnehmen. Autosuspend generell auszuschalten steigert u.U. den Stromverbrauch deutlich.
 
um mal ne zahl in den raum zu werfen:
die sierra mc8775, wwan-karte der 61er-thinkpads, verbrät ohne autosuspend ca 2,5 w zusätzlich, auch wenn sie gar nicht genutzt wird. leider muss man autosuspend vor der benutzung deaktivieren, da die karte mit autosuspend nicht funktioniert.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben