Linux Projektvorstellung: TLP – Linux Stromsparen

Linux Betriebssystem

linrunner

Ubuntuversteher
Themenstarter
Registriert
22 Juni 2007
Beiträge
13.291
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:
Hallo,

kurze Frage: Kann es sein, dass TLP bei meinem Yoga den Digitizer/Touchscreen nach einer Weile ausschaltet? Der ist per USB angebunden, müsste also doch eigentlich auch von TLP verwaltet werden, oder?

Irgendwie funktionieren regelmäßig meine Toucheingaben nicht, lassen sich aber durch einen Neustart wiederbeleben. Ich kann den Fehler nicht so richtig reproduzieren, weshalb die Suche nach der Ursache etwas schwierig ist. Aber wenn TLP dem Digitizer den Strom abdreht wäre das vllt eine Erklärung...
 
@milaidin: Gegenfrage: kann es sein, dass Du die – für den Support obligatorische – Ausgabe von tlp-stat vergessen hast? :D
 
@milaidin: Gegenfrage: kann es sein, dass Du die – für den Support obligatorische – Ausgabe von tlp-stat vergessen hast?

Viel schlimmer: Bewusst drauf verzichtet weil ich noch eben schnell zwischendurch gepostet habe und die Ausgabe deshalb gerade nicht zur Hand hatte... :rolleyes:
Zu meiner Ehrenrettung sei gesagt, dass ich auch nicht mit einer vollständigen Antwort gerechnet hatte sondern eher mit: "Ja, kann sein, guck in die Dokumentation wie du das verhinderst" bzw. mit "Nein, such deinen Fehler woanders"...

Here we go:

Code:
--- TLP 0.9 --------------------------------------------

+++ Configured Settings: /etc/default/tlp
TLP_ENABLE=1
TLP_DEFAULT_MODE=AC
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
NMI_WATCHDOG=0
ENERGY_PERF_POLICY_ON_AC=performance
ENERGY_PERF_POLICY_ON_BAT=powersave
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
AHCI_RUNTIME_PM_TIMEOUT=15
PCIE_ASPM_ON_AC=performance
PCIE_ASPM_ON_BAT=powersave
RADEON_POWER_PROFILE_ON_AC=high
RADEON_POWER_PROFILE_ON_BAT=low
RADEON_DPM_STATE_ON_AC=performance
RADEON_DPM_STATE_ON_BAT=battery
RADEON_DPM_PERF_LEVEL_ON_AC=auto
RADEON_DPM_PERF_LEVEL_ON_BAT=auto
WIFI_PWR_ON_AC=off
WIFI_PWR_ON_BAT=on
WOL_DISABLE=Y
SOUND_POWER_SAVE_ON_AC=0
SOUND_POWER_SAVE_ON_BAT=1
SOUND_POWER_SAVE_CONTROLLER=Y
BAY_POWEROFF_ON_BAT=0
BAY_DEVICE="sr0"
RUNTIME_PM_ON_AC=on
RUNTIME_PM_ON_BAT=auto
RUNTIME_PM_ALL=1
RUNTIME_PM_DRIVER_BLACKLIST="radeon nouveau nvidia"
USB_AUTOSUSPEND=1
USB_BLACKLIST_WWAN=1
RESTORE_DEVICE_STATE_ON_STARTUP=0
DEVICES_TO_DISABLE_ON_STARTUP="bluetooth"
START_CHARGE_THRESH_BAT0=45
STOP_CHARGE_THRESH_BAT0=60

+++ System Info
System         = LENOVO ThinkPad S3 Yoga 14 20DNS02H00
BIOS           = JFET43WW(1.20)
Release        = "Manjaro Linux"
Kernel         = 4.9.16-1-MANJARO #1 SMP PREEMPT Sun Mar 19 07:53:55 UTC 2017 x86_64
/proc/cmdline  = BOOT_IMAGE=/boot/vmlinuz-4.9-x86_64 root=UUID=313d38fc-0584-49b5-b564-d952a9799801 rw
Init system    = systemd 
Boot mode      = BIOS (CSM, Legacy)

+++ TLP Status
State          = enabled
Last run       = 14:32:31,   6343 sec(s) ago
Mode           = battery
Power source   = battery

Notice: systemd-rfkill.service is not masked -- invoke "systemctl mask systemd-rfkill.service" to correct this!

+++ Processor
CPU model      = Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz

/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver    = intel_pstate
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor  = powersave
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors = performance powersave
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq  =   500000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq  =  2700000 [kHz]

/sys/devices/system/cpu/cpu1/cpufreq/scaling_driver    = intel_pstate
/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor  = powersave
/sys/devices/system/cpu/cpu1/cpufreq/scaling_available_governors = performance powersave
/sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq  =   500000 [kHz]
/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq  =  2700000 [kHz]

/sys/devices/system/cpu/cpu2/cpufreq/scaling_driver    = intel_pstate
/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor  = powersave
/sys/devices/system/cpu/cpu2/cpufreq/scaling_available_governors = performance powersave
/sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq  =   500000 [kHz]
/sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq  =  2700000 [kHz]

/sys/devices/system/cpu/cpu3/cpufreq/scaling_driver    = intel_pstate
/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor  = powersave
/sys/devices/system/cpu/cpu3/cpufreq/scaling_available_governors = performance powersave
/sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq  =   500000 [kHz]
/sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq  =  2700000 [kHz]

/sys/devices/system/cpu/intel_pstate/min_perf_pct      = 18
/sys/devices/system/cpu/intel_pstate/max_perf_pct      = 100
/sys/devices/system/cpu/intel_pstate/no_turbo          = 0
/sys/devices/system/cpu/intel_pstate/turbo_pct         = 27
/sys/devices/system/cpu/intel_pstate/num_pstates       = 23

x86_energy_perf_policy: program not installed.

/proc/sys/kernel/nmi_watchdog                          = 0

+++ Undervolting
PHC kernel not available.

+++ Temperatures
/proc/acpi/ibm/thermal = 43 30 39 41 49 0 39 31 [°C]
/proc/acpi/ibm/fan     =     0 [/min]

+++ File System
/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               =    20
/proc/sys/vm/dirty_background_ratio    =    10
/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)

+++ Storage Devices
/dev/sda:
  Model     = LITEON LCH-256V2S                       
  Firmware  = 3C87901 
  APM Level = none/disabled
  Status    = active/idle
  TRIM      = supported
  Scheduler = bfq

  Runtime PM: control = on, autosuspend_delay =   -1

  SMART info:
      5 Reallocated_Sector_Ct     =        0 
      9 Power_On_Hours            =       24 [h]
     12 Power_Cycle_Count         =     1209 
    178 Used_Rsvd_Blk_Cnt_Chip    =        0 
    180 Unused_Rsvd_Blk_Cnt_Tot   =      115 
    194 Temperature_Celsius       =       45    [°C]
    233 Media_Wearout_Indicator   =      100 [%]
    241 Total_LBAs_Written        =    0.000 [TB]

/dev/sdb:
  Model     = TS256GMTS400                            
  Firmware  = N1126KB 
  APM Level = none/disabled
  Status    = active/idle
  TRIM      = supported
  Scheduler = bfq

  Runtime PM: control = on, autosuspend_delay =   -1

  SMART info:
      5 Reallocated_Sector_Ct     =        0 
      9 Power_On_Hours            =      947 [h]
     12 Power_Cycle_Count         =      886 
    177 Wear_Leveling_Count       =      100 [%]
    178 Used_Rsvd_Blk_Cnt_Chip    =        0 
    194 Temperature_Celsius       =       21    [°C]
    232 Available_Reservd_Space   =      100 [%]
    241 Total_LBAs_Written        =    0.000 [TB]


+++ SATA Aggressive Link Power Management
/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

+++ AHCI Host Controller Runtime Power Management
/sys/bus/pci/devices/0000:00:1f.2/ata1/power/control = on
/sys/bus/pci/devices/0000:00:1f.2/ata2/power/control = on
/sys/bus/pci/devices/0000:00:1f.2/ata3/power/control = on

+++ PCIe Active State Power Management
/sys/module/pcie_aspm/parameters/policy = default (using bios preferences)

+++ Intel Graphics
/sys/module/i915/parameters/powersave        = (not available)
/sys/module/i915/parameters/enable_rc6       =  1 (enabled)
/sys/module/i915/parameters/enable_dc        = -1 (use per-chip default)
/sys/module/i915/parameters/enable_fbc       =  1 (enabled)
/sys/module/i915/parameters/enable_psr       =  0 (disabled)
/sys/module/i915/parameters/lvds_downclock   = (not available)
/sys/module/i915/parameters/modeset          = -1 (use per-chip default)
/sys/module/i915/parameters/semaphores       =  0 (disabled)

+++ Wireless
bluetooth = on
wifi      = on
wwan      = none (no device)

hci0(btusb)                   : bluetooth, not connected
wlp2s0(iwlwifi)               : wifi, connected, power management = on

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

+++ Runtime Power Management
Device classes   = all
Device blacklist = (not configured)
Driver blacklist = radeon nouveau nvidia

/sys/bus/pci/devices/0000:00:00.0/power/control = auto (0x060000, Host bridge, bdw_uncore)
/sys/bus/pci/devices/0000:00:02.0/power/control = auto (0x030000, VGA compatible controller, i915)
/sys/bus/pci/devices/0000:00:03.0/power/control = auto (0x040300, Audio device, snd_hda_intel)
/sys/bus/pci/devices/0000:00:14.0/power/control = auto (0x0c0330, USB controller, xhci_hcd)
/sys/bus/pci/devices/0000:00:16.0/power/control = auto (0x078000, Communication controller, mei_me)
/sys/bus/pci/devices/0000:00:1b.0/power/control = auto (0x040300, Audio device, snd_hda_intel)
/sys/bus/pci/devices/0000:00:1c.0/power/control = auto (0x060400, PCI bridge, pcieport)
/sys/bus/pci/devices/0000:00:1c.1/power/control = auto (0x060400, PCI bridge, pcieport)
/sys/bus/pci/devices/0000:00:1c.3/power/control = auto (0x060400, PCI bridge, pcieport)
/sys/bus/pci/devices/0000:00:1c.4/power/control = auto (0x060400, PCI bridge, pcieport)
/sys/bus/pci/devices/0000:00:1d.0/power/control = auto (0x0c0320, USB controller, ehci-pci)
/sys/bus/pci/devices/0000:00:1f.0/power/control = auto (0x060100, ISA bridge, no driver)
/sys/bus/pci/devices/0000:00:1f.2/power/control = auto (0x010601, SATA controller, ahci)
/sys/bus/pci/devices/0000:00:1f.3/power/control = auto (0x0c0500, SMBus, i801_smbus)
/sys/bus/pci/devices/0000:00:1f.6/power/control = auto (0x118000, Signal processing controller, intel_pch_thermal)
/sys/bus/pci/devices/0000:02:00.0/power/control = auto (0x028000, Network controller, iwlwifi)
/sys/bus/pci/devices/0000:03:00.0/power/control = auto (0x080501, SD Host controller, sdhci-pci)
/sys/bus/pci/devices/0000:04:00.0/power/control = auto (0x030200, 3D controller, no driver)

+++ USB
Autosuspend        = enabled
Device whitelist   = (not configured)
Device blacklist   = (not configured)
WWAN blacklist     = enabled

Bus 003 Device 002 ID 8087:8001 control = auto, autosuspend_delay_ms =     0 -- Intel Corp.  (hub)
Bus 003 Device 001 ID 1d6b:0002 control = auto, autosuspend_delay_ms =     0 -- Linux Foundation 2.0 root hub (hub)
Bus 002 Device 001 ID 1d6b:0003 control = auto, autosuspend_delay_ms =     0 -- Linux Foundation 3.0 root hub (hub)
Bus 001 Device 007 ID 8087:0a2a control = auto, autosuspend_delay_ms =  2000 -- Intel Corp.  (btusb)
Bus 001 Device 004 ID 1bcf:2c79 control = auto, autosuspend_delay_ms =  2000 -- Sunplus Innovation Technology Inc.  (uvcvideo)
Bus 001 Device 005 ID 0483:91d1 control = on,   autosuspend_delay_ms =  2000 -- STMicroelectronics Sensor Hub (usbhid)
Bus 001 Device 003 ID 05e3:0608 control = auto, autosuspend_delay_ms =     0 -- Genesys Logic, Inc. Hub (hub)
Bus 001 Device 002 ID 056a:502b control = on,   autosuspend_delay_ms =  2000 -- Wacom Co., Ltd  (usbhid)
Bus 001 Device 001 ID 1d6b:0002 control = auto, autosuspend_delay_ms =     0 -- Linux Foundation 2.0 root hub (hub)

+++ ThinkPad Extended Battery Functions
tp-smapi   = inactive (kernel module 'tp_smapi' not installed)
tpacpi-bat = active

+++ ThinkPad Battery Status: BAT0 (Main / Internal)
/sys/class/power_supply/BAT0/manufacturer                   = SONY
/sys/class/power_supply/BAT0/model_name                     = 00HW000
/sys/class/power_supply/BAT0/cycle_count                    = (not supported)
/sys/class/power_supply/BAT0/energy_full_design             =  56010 [mWh]
/sys/class/power_supply/BAT0/energy_full                    =  50490 [mWh]
/sys/class/power_supply/BAT0/energy_now                     =  14260 [mWh]
/sys/class/power_supply/BAT0/power_now                      =  10067 [mW]
/sys/class/power_supply/BAT0/status                         = Discharging

tpacpi-bat.BAT0.startThreshold                              =     45 [%]
tpacpi-bat.BAT0.stopThreshold                               =     45 [%]
tpacpi-bat.BAT0.forceDischarge                              =      0

Charge                                                      =   28.2 [%]
Capacity                                                    =   90.1 [%]

+++ Suggestions
* Install tp-smapi kernel modules for ThinkPad advanced battery functions
 
Das hier dürfte dein Touchscreen sein:
Bus 001 Device 002 ID 056a:502b control = on, autosuspend_delay_ms = 2000 -- Wacom Co., Ltd (usbhid)
TLP hat ihn als Eingabegerät (usbhid) erkannt und automatisch vom Autosuspend ausgenommen (= on). Somit lautet die Antwort auf deine ursprüngliche Fragestellung: nein.
 
Könnte es nicht auch sein (ohne die IDs geprüft zu haben), dass lediglich der Digitizer für die Stifteingabe erkannt und von der Autosuspend-Liste genommen wird, während der für die Fingereingabe nicht davon ausgenommen wird?
 
Zuletzt bearbeitet:
Es gibt in der Auflistung in der Tat einen weiteren Kandidaten, der jedoch korrekt gehandhabt wird (s.o.):
Bus 001 Device 005 ID 0483:91d1 control = on, autosuspend_delay_ms = 2000 -- STMicroelectronics Sensor Hub (usbhid)
In der Liste sind ansonsten noch die Webcam und Bluetooth, der Rest sind Hübe.
 
TLP hat ihn als Eingabegerät (usbhid) erkannt und automatisch vom Autosuspend ausgenommen (= on). Somit lautet die Antwort auf deine ursprüngliche Fragestellung: nein.

Danke, dann muss ich woanders suchen... vllt entdecke ich ja doch noch eine Systematik hinter den Aussetzern.
 
Hi,

mal eine Frage, wäre es möglich die Funktion in TLP zu integrieren, dass man den Befehl "tlp fullcharge [BAT0/BAT1]" rückgängig machen kann, also wieder die vorherigen Ladeschwellen gesetzt werden, ohne das Notebook neu zu starten oder von Hand die Ladeschwellen zu setzen?
Ich nutze diesen Befehl gerne, um einen Akku ohne verändern der Ladeschwellen dennoch zu laden, aber gerade beim x220 mit 2 Akkus komme ich dabei hin und wieder mal an die Grenzen, wenn der eine Akku noch geladen werden muss, während der der Ladevorgang beim anderen Akku abgeschlossen werden kann.

Mir persönlich würde es auch schon reichen, wenn man TLP neu starten könnte, so dass die ganzen Einstellungen wieder neu geladen werden.
 
@Megalodon: ich verstehe das zugrundeliegende Problem nicht. Was meinst Du mit
aber gerade beim x220 mit 2 Akkus komme ich dabei hin und wieder mal an die Grenzen, wenn der eine Akku noch geladen werden muss
? Bitte erklär mal den Use Case Schritt für Schritt.

Die konfigurierten Schwellen kannst Du jederzeit neu schreiben mit:
Code:
sudo tlp setcharge BAT0
sudo tlp setcharge BAT1
oder auch
Code:
sudo tlp start

Ausserdem enthält die kommende Version folgende neue Funktion:
Code:
# Restore charge thresholds when AC is unplugged: 0=disable, 1=enable
RESTORE_THRESHOLDS_ON_BAT=1
Sie schreibt die Schwellen ebenfalls erneut, sobald Du das Netzteil absteckst.
 
Hi

sorry hat sich erledigt, ich hatte einen Denkfehler auf meiner Seite...



Aber einen Punkt noch, ich habe gerade mal Testweise tlp 0.9.903 installiert, aber den folgenden Punkt kann ich nirgends finden:
# Restore charge thresholds when AC is unplugged: 0=disable, 1=enable
RESTORE_THRESHOLDS_ON_BAT=1
Auch bei den Ausgaben der anderen User finde ich diese Zeile nicht bei der Ausgabe von "tlp stat"
 
@Megalodon: das ist eine Einstellung in der Konfigurationsdatei. Falls Du deine vorhandene übernommen hast, muss Du das selbst ergänzen. Siehe auch hier.
 
TLP 1.0 ist da

Hi,

Beschreibung der Änderungen wie immer hier.

Pakete für Arch Linux und Ubuntu sind bereits online. Der Rest kommt, sobald die Paketierer soweit sind.

Have fun! :D
 
Jaaa, gestern schon im Updater angezeigt bekommen, installiert und das neue Config-File angepasst. Wieder mal saubere Arbeit! :thumbsup: Man kann sich nur beim Bedanken wiederholen.

Beim Konfigurieren ist mir auch in tlpui eine recht irreführende Umsetzung der WOL_DISABLE-Einstellung aufgefallen, werde ich gleich mal im entsprechenden Thread posten.

Und am Rande noch eine kleine Frage: Beißt sich die Einstellung CPU_HWP_ON_AC/BAT mit irgendwelchen anderen Einstellungen? Wenn ich das richtig verstanden habe, ersetzt ja diese neue Speed Shift-Technologie das alte Stepping per Multiplier (oder erweitert sie diese nur?).
 
Hallo linrunner,

könntest Du vielleicht an markanten Stellen Deiner Dokumentation bitte mal einfügen, wofür die Abkürzung TLP steht? Dann kann man sich den Begriff besser merken.

Grüße, Ulf
 
Die Aussage, dass TLP keine Abkürzung sei, stammt vom "Erfinder" aka. Programmierer von TLP himself. ;)
 
Ich habe gerade "Installationsschwierigkeiten" mit dem Paket tlp-rdw in Version 1.1 unter Linux Mint 17.

Beim Versuch, das Paket zu aktualisieren, kommt eine Fehlermeldung "E: /var/cache/apt/archives/tlp-rdw_1.1-1~trusty_all.deb: Unterprozess neues pre-installation-Skript gab den Fehlerwert 1 zurück"

Wenn ich mir die Terminal-Ausgabe anschaue, sehe ich diese Zeilen:
Code:
Vorbereitung zum Entpacken von .../tlp-rdw_1.1-1~trusty_all.deb ...
dpkg-maintscript-helper: error: last version is missing
dpkg: Fehler beim Bearbeiten des Archivs /var/cache/apt/archives/tlp-rdw_1.1-1~trusty_all.deb (--unpack):
 Unterprozess neues pre-installation-Skript gab den Fehlerwert 1 zurück
dpkg-maintscript-helper: error: last version is missing
dpkg: Fehler beim Aufräumen:
 Unterprozess neues post-removal-Skript gab den Fehlerwert 1 zurück
Fehler traten auf beim Bearbeiten von:
 /var/cache/apt/archives/tlp-rdw_1.1-1~trusty_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Ein Paket konnte nicht installiert werden. Wiederherstellung wird versucht:

Interessanterweise kommt der Fehler auch, wenn ich in der graphischen Aktualisierungsverwaltung lediglich auf "Auffrischen" klicke, da scheint dann gleich versucht zu werden das Paket ebenfalls zu installieren - ein apt-get update im Terminal funktioniert jedoch zum Glück noch...
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben