Low power linux

53
DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 1 Low-Power Linux Wolfram Luithardt Hochschule für Technik und Architektur, Fribourg, Schweiz

description

Server: Performance ist wichtiger als Energieverbrauch.Low Power primär ausKostengründenDesktop: Performance ist oft wichtiger als Low PowerLaptops: Low Power primär zur Verlängerung derBatterielaufzeitMobile: BatterielaufzeitEmbedded: Oft nur wenig Energie vorhanden.

Transcript of Low power linux

Page 1: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 1

Low-Power Linux

Wolfram Luithardt

Hochschule fuumlr Technik und Architektur Fribourg Schweiz

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 2

Warum Low Power Linux

Server Performance ist wichtiger als Energie-verbrauch Low Power primaumlr aus Kostengruumlnden

Desktop Performance ist oft wichtiger als Low Power

Laptops Low Power primaumlr zur Verlaumlngerung der Batterielaufzeit

Mobile Batterielaufzeit

Embedded Oft nur wenig Energie vorhanden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 3

Embedded Systems

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 4

Warum Low-Power Systeme

Low Power

System

- Weniger Waumlrme - Weniger bewegliche Teile - Weniger Laumlrm

Lebensdauer und Wirkungs-grad der elektronischen Komponenten

Weniger Kosten (Energie ist teuer)

Low Power Systeme sind im wahrsten Sinne des Wortes

cool

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 5

Motivation

- Photovoltaik- Thermoelektrik- Vibrationsgeneratoren- Mikro-Luftgeneratoren

Embedded System Roadmap 2002 PrimePower is considered as the most important

constraint in embedded systemsPrime

Langfristiges Ziel Ein Linuxrechner der mit einer Energyharvesting-Versorgung gespeist wird

Leistungsabgaben an ein System ca 100 uW ndash 10mW

Energy-Harvesting

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6

Neue Low Power Komponenten

- Energiespeicher Supercaps

- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand

- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird

- Ram NVRam (Nichtfluumlchtiges Ram) gt1015

Schreib-Loumlschzyklen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7

Leistung einzelner PC-Komponenten

Mainboard 25 Watt Gehaumluseluumlfter 5 Watt

Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8

Vergleich verschiedener Linux-faumlhiger Prozessorfamilien

Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9

Bekannte Energiespar-Methoden

- Screen off-mode

- Suspend to Ram

- Suspend to disk (Hibernation mode)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10

Die grundlegende Gleichungen

α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz

P statisch=sumUsdotI Leak

Pdynamisch=12sdotsdotCsdotU 2sdotf

Pgesamt=P statischPdynamisch

U CorespannungIL e a k Leckstrom

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 2: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 2

Warum Low Power Linux

Server Performance ist wichtiger als Energie-verbrauch Low Power primaumlr aus Kostengruumlnden

Desktop Performance ist oft wichtiger als Low Power

Laptops Low Power primaumlr zur Verlaumlngerung der Batterielaufzeit

Mobile Batterielaufzeit

Embedded Oft nur wenig Energie vorhanden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 3

Embedded Systems

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 4

Warum Low-Power Systeme

Low Power

System

- Weniger Waumlrme - Weniger bewegliche Teile - Weniger Laumlrm

Lebensdauer und Wirkungs-grad der elektronischen Komponenten

Weniger Kosten (Energie ist teuer)

Low Power Systeme sind im wahrsten Sinne des Wortes

cool

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 5

Motivation

- Photovoltaik- Thermoelektrik- Vibrationsgeneratoren- Mikro-Luftgeneratoren

Embedded System Roadmap 2002 PrimePower is considered as the most important

constraint in embedded systemsPrime

Langfristiges Ziel Ein Linuxrechner der mit einer Energyharvesting-Versorgung gespeist wird

Leistungsabgaben an ein System ca 100 uW ndash 10mW

Energy-Harvesting

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6

Neue Low Power Komponenten

- Energiespeicher Supercaps

- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand

- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird

- Ram NVRam (Nichtfluumlchtiges Ram) gt1015

Schreib-Loumlschzyklen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7

Leistung einzelner PC-Komponenten

Mainboard 25 Watt Gehaumluseluumlfter 5 Watt

Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8

Vergleich verschiedener Linux-faumlhiger Prozessorfamilien

Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9

Bekannte Energiespar-Methoden

- Screen off-mode

- Suspend to Ram

- Suspend to disk (Hibernation mode)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10

Die grundlegende Gleichungen

α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz

P statisch=sumUsdotI Leak

Pdynamisch=12sdotsdotCsdotU 2sdotf

Pgesamt=P statischPdynamisch

U CorespannungIL e a k Leckstrom

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 3: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 3

Embedded Systems

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 4

Warum Low-Power Systeme

Low Power

System

- Weniger Waumlrme - Weniger bewegliche Teile - Weniger Laumlrm

Lebensdauer und Wirkungs-grad der elektronischen Komponenten

Weniger Kosten (Energie ist teuer)

Low Power Systeme sind im wahrsten Sinne des Wortes

cool

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 5

Motivation

- Photovoltaik- Thermoelektrik- Vibrationsgeneratoren- Mikro-Luftgeneratoren

Embedded System Roadmap 2002 PrimePower is considered as the most important

constraint in embedded systemsPrime

Langfristiges Ziel Ein Linuxrechner der mit einer Energyharvesting-Versorgung gespeist wird

Leistungsabgaben an ein System ca 100 uW ndash 10mW

Energy-Harvesting

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6

Neue Low Power Komponenten

- Energiespeicher Supercaps

- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand

- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird

- Ram NVRam (Nichtfluumlchtiges Ram) gt1015

Schreib-Loumlschzyklen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7

Leistung einzelner PC-Komponenten

Mainboard 25 Watt Gehaumluseluumlfter 5 Watt

Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8

Vergleich verschiedener Linux-faumlhiger Prozessorfamilien

Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9

Bekannte Energiespar-Methoden

- Screen off-mode

- Suspend to Ram

- Suspend to disk (Hibernation mode)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10

Die grundlegende Gleichungen

α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz

P statisch=sumUsdotI Leak

Pdynamisch=12sdotsdotCsdotU 2sdotf

Pgesamt=P statischPdynamisch

U CorespannungIL e a k Leckstrom

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 4: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 4

Warum Low-Power Systeme

Low Power

System

- Weniger Waumlrme - Weniger bewegliche Teile - Weniger Laumlrm

Lebensdauer und Wirkungs-grad der elektronischen Komponenten

Weniger Kosten (Energie ist teuer)

Low Power Systeme sind im wahrsten Sinne des Wortes

cool

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 5

Motivation

- Photovoltaik- Thermoelektrik- Vibrationsgeneratoren- Mikro-Luftgeneratoren

Embedded System Roadmap 2002 PrimePower is considered as the most important

constraint in embedded systemsPrime

Langfristiges Ziel Ein Linuxrechner der mit einer Energyharvesting-Versorgung gespeist wird

Leistungsabgaben an ein System ca 100 uW ndash 10mW

Energy-Harvesting

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6

Neue Low Power Komponenten

- Energiespeicher Supercaps

- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand

- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird

- Ram NVRam (Nichtfluumlchtiges Ram) gt1015

Schreib-Loumlschzyklen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7

Leistung einzelner PC-Komponenten

Mainboard 25 Watt Gehaumluseluumlfter 5 Watt

Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8

Vergleich verschiedener Linux-faumlhiger Prozessorfamilien

Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9

Bekannte Energiespar-Methoden

- Screen off-mode

- Suspend to Ram

- Suspend to disk (Hibernation mode)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10

Die grundlegende Gleichungen

α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz

P statisch=sumUsdotI Leak

Pdynamisch=12sdotsdotCsdotU 2sdotf

Pgesamt=P statischPdynamisch

U CorespannungIL e a k Leckstrom

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 5: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 5

Motivation

- Photovoltaik- Thermoelektrik- Vibrationsgeneratoren- Mikro-Luftgeneratoren

Embedded System Roadmap 2002 PrimePower is considered as the most important

constraint in embedded systemsPrime

Langfristiges Ziel Ein Linuxrechner der mit einer Energyharvesting-Versorgung gespeist wird

Leistungsabgaben an ein System ca 100 uW ndash 10mW

Energy-Harvesting

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6

Neue Low Power Komponenten

- Energiespeicher Supercaps

- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand

- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird

- Ram NVRam (Nichtfluumlchtiges Ram) gt1015

Schreib-Loumlschzyklen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7

Leistung einzelner PC-Komponenten

Mainboard 25 Watt Gehaumluseluumlfter 5 Watt

Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8

Vergleich verschiedener Linux-faumlhiger Prozessorfamilien

Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9

Bekannte Energiespar-Methoden

- Screen off-mode

- Suspend to Ram

- Suspend to disk (Hibernation mode)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10

Die grundlegende Gleichungen

α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz

P statisch=sumUsdotI Leak

Pdynamisch=12sdotsdotCsdotU 2sdotf

Pgesamt=P statischPdynamisch

U CorespannungIL e a k Leckstrom

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 6: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 6

Neue Low Power Komponenten

- Energiespeicher Supercaps

- Display bistabiles LCD haumllt sein Bild auch im stromlosen Zustand

- Ram PASR (Partitial Array Self Refresh) dynamisches Ram das nur teilweise refreshed wird

- Ram NVRam (Nichtfluumlchtiges Ram) gt1015

Schreib-Loumlschzyklen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7

Leistung einzelner PC-Komponenten

Mainboard 25 Watt Gehaumluseluumlfter 5 Watt

Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8

Vergleich verschiedener Linux-faumlhiger Prozessorfamilien

Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9

Bekannte Energiespar-Methoden

- Screen off-mode

- Suspend to Ram

- Suspend to disk (Hibernation mode)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10

Die grundlegende Gleichungen

α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz

P statisch=sumUsdotI Leak

Pdynamisch=12sdotsdotCsdotU 2sdotf

Pgesamt=P statischPdynamisch

U CorespannungIL e a k Leckstrom

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 7: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 7

Leistung einzelner PC-Komponenten

Mainboard 25 Watt Gehaumluseluumlfter 5 Watt

Prozessorluumlfter 3 Watt Speichermodul 10 Watt PCI SoundkarteNetzwerkkarteModem 5 Watt Festplatte 30 Watt CDDVD LaufwerkBrenner 30 Watt Diskettenlaufwerk 4 Watt TastaturMausandere USB-Geraumlte 3 WattStuumlck Grafikkarte ca 50-100 Watt je nach Hersteller Prozessor Duron 27Watt 600MHz - 80Watt 16 GHz Athlon XP 60Watt 1500+ - 110Watt 3200+ Intel P4 50Watt 16GHz - 100 Watt 32 GHz

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8

Vergleich verschiedener Linux-faumlhiger Prozessorfamilien

Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9

Bekannte Energiespar-Methoden

- Screen off-mode

- Suspend to Ram

- Suspend to disk (Hibernation mode)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10

Die grundlegende Gleichungen

α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz

P statisch=sumUsdotI Leak

Pdynamisch=12sdotsdotCsdotU 2sdotf

Pgesamt=P statischPdynamisch

U CorespannungIL e a k Leckstrom

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 8: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 8

Vergleich verschiedener Linux-faumlhiger Prozessorfamilien

Intel Pentium 120 WattIntel Duo 2 Core (zB E8600) 65 WattIntel Atom 2-6 WattTransmeta Crusoe 1 WattARM zB AT91SAM9260 200 mWAtmel AVR32 80mW

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9

Bekannte Energiespar-Methoden

- Screen off-mode

- Suspend to Ram

- Suspend to disk (Hibernation mode)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10

Die grundlegende Gleichungen

α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz

P statisch=sumUsdotI Leak

Pdynamisch=12sdotsdotCsdotU 2sdotf

Pgesamt=P statischPdynamisch

U CorespannungIL e a k Leckstrom

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 9: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 9

Bekannte Energiespar-Methoden

- Screen off-mode

- Suspend to Ram

- Suspend to disk (Hibernation mode)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10

Die grundlegende Gleichungen

α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz

P statisch=sumUsdotI Leak

Pdynamisch=12sdotsdotCsdotU 2sdotf

Pgesamt=P statischPdynamisch

U CorespannungIL e a k Leckstrom

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 10: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 10

Die grundlegende Gleichungen

α AktivitaumltsfaktorC Parasitaumlre Kapazitaumlt (Transistoren und Leitungen)U Corespannung f Frequenz

P statisch=sumUsdotI Leak

Pdynamisch=12sdotsdotCsdotU 2sdotf

Pgesamt=P statischPdynamisch

U CorespannungIL e a k Leckstrom

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 11: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 11

Technologische Entwicklungen

Von Generation zu Generation

- Parasitaumlre KapazitaumltTransistor darr- Corespannungen darr- Taktfrequenz uarr- Anzahl-Transistoren pro Chip uarr

Dynamische Leistung =uarr Statische Leistung uarr

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 12: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 12

Technologische Entwicklungen

zur Reduktion statischer Verluste

- DVTCMOS (Dual Voltage Threshold-CMOS) Man benuumltzt je nach Aufgabe 2 verschiedene Arten von Transistoren (schnell mit hohem IL e a k oder langsam mit niedrigem IL e a k

- STI (Sleep Transistor Insertion) Transistoren die fuumlr eine gewisse Funktionalitaumlt nicht benoumltigt werden werden stromlos geschaltet

- Neue Dielektrika

P statisch=sumUsdotI Leak

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 13: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 13

zur Reduktion dynamischer Verluste

Technologische Entwicklungen

- Cross Talk Avoidance z B durch Vertau-schen von Leitungen etc

- Clock-Gating Optimierung der Anzahl der Transistoren die bei einer gewissen Operation getaktet werden muumlssen

- ULV-Prozessoren

Pdynamisch=12sdotsdotCsdotU 2

sdotf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 14: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 14

- Kombination von Allem

Sparmoumlglichkeiten

0 10 20 30 40 50 60 70 800

5

10

15

20

25

30

35

40

Verbrauch ARM Cortex M3- STM32F103x8

Run Peri onRun Peri offSleep Peri onSleep Peri offStop

Taktfrequenz [MHz]

Str

om

ve

rba

ruc

h [

mA

]

- Reduktion der Taktfrequenz

- Reduktion der Versorgungs-spannung

- Abschaltung von nicht benoumltigter Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 15: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 15

The real worldVerbrauch UNC90 AT91RM9200

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 16: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 16

Abhaumlngigkeit von Spannung und Frequenz

XScale Quelle Intel

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 17: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 17

X86 Sleep-modes

P-StatesVerringerung der Frequenz und der Corespannung

C-StatesBeispiel Intelreg Coretrade2 Duo

C-State max LeistungC0 Running Mode 350 Watt C1 Idle Mode 135 WattC2 Ohne Datenbus 129 WattC3 Deaktivierung PLL 77 WattC4 Enhanced Deeper Sleep 12 Watt

httpwwwlesswattsorgdocumentationsilicon-power-mgmnt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 18: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 18

Warum verschiedene Sleep-Modes

C0 Mode350 Watt

C1 Mode135 Watt

C2 Mode129 Watt

C3 Mode77 Watt C4 Mode

12 Watt

Leistungsaufnahme

250 us

50 us100 ns

10 ns

Beispiel Intelreg Coretrade2 Duo

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 19: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 19

Beispiel Sleep-Modes ARM

Active400 mW

Idle50 mW

Sleep160 μW

160ms90μs

90μs

10μs10μs

Strongarm SA1100

Woher weiss der Prozessor in welchen Zustand er gehen kann

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 20: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 20

Grundlegende Prinzipien

Ereignisgesteuertes Betriebssystem

Grundzustand aktiv schlafen nur wenn nichts zu tun ist

Grundzustand schlafend aktiv nur wenn etwas zu tun ist

Grundzustand aus aktiv nur wenn genuumlgend Energie

vorhanden ist

Energiegesteuertes Betriebssystem

WartendesBetriebssystem

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 21: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 21

Unix- Prozessmodel

WartendBlockiert

Aktiv

externes Geraumlt Polling

Interrupt

Problematik bei energiegesteuertem

Betriebssystem

Bootzeit

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 22: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 22

Reduktion der Aufstartzeit

Karo TX-25

66 Sek 8 SekQuelle D Doninelli TX25-Fast Boot EIA-FR 2011

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 23: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 23

Wie sieht dies in der Praxis aus

- Abschaltung von nicht benoumltigter

Peripherie

- Dynamische Reduktion der Taktfrequenz - Prozessor

schlafen legen

- Reduktion der Versorgungs-

spannung

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 24: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 24

Plattform UNC90

Spannungs- regler

Ausgang 33 V UNC90- Modul01 Ω

I = Um 01Ω

P = UI = Um2 R

Um

- Prozessor AT91RM9200 (ARM 920EJ)- Maximale Frequenz 180 MHz- 32 MB Ram 16 MB Flash- Linux Kernel 2612

httpwwwdigicompdfprd_em_unc90pdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 25: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 25

Crosscompiling

PC mit Ubuntu + UNC90-Crosscompiling Umgebung

TFTP-Server mit Kernel fuumlr UNC90

Filesystem auf NFS-Partition

Terminalprogramm (minicom)

UNC90

Kernel

Filesystem

Terminal

TFTP

NFS

TFTP

seriell

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 26: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 26

Frequencyscaling

Power Management Controller PMC

Prozessorfrequenz

Frequenzverhaumlltniszur Peripherie

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 27: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 27

Manuelles Frequencyscaling

saveCurrent()

PMC_ MCKR |= PRES_DIV2 Master Clock register auf 2 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

normalCurrent()

PMC_ MCKR amp= ~PRES_DIV2 Master Clock register auf 1 stellenUS_BRGR = US_BRGR 2 USART Baudrate Divider Register

Wie kann dieses automatisiert werden

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 28: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 28

Unix- Prozessmodel

WartendBlockiert

Laufend

externes Geraumlt Polling

Interrupt

Aktive Prozesse

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 29: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 29

Die runqueue

runqueue-Struktur im Kernel

Idle-Task

Proc1

Ein Feld dieser Struktur nr_running enthaumllt die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks)

run queue

geblockte Prozesse

Proc2

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 30: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 30

Ein einfacher Patch in schedc

if(unlikely(rq -gt nr_running == 1)) if(saveMode == 0)

saveCurrent()saveMode = 1

else if(saveMode = 0) normalCurrent()

saveMode = 0

Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewuumlnscht) aufgerufen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 31: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 31

Die Routinen

saveCurrent() local_irq_disable()

waitForTXReady() saveCurrent() local_irq_enable()

normalCurrent() local_irq_disable()

waitForTXReady() normalCurrent() local_irq_enable()

waitForTXReady() do

wait until TX_Ready Bit in USART Channel Status Register set

while((US_ CSR amp TXRDY)==0)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 32: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 32

Ein etwas besserer Patch

if(unlikely(rq -gt nr_running == 1))if((saveMode == 0)ampamp(saveCounter gt SAVEWAIT))

saveCurrent() saveMode = 1 else

saveCounter++

else if(saveMode = 0) normalCurrent()

saveMode = 0 saveCounter = 0

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 33: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 33

Die Zeit wird mit einem Programm gemessen das eine einfache mathe-matische Funktion ausfuumlhrt

Ergebnisse

ohne Patch

SAVEWAIT = 1

SAVEWAIT = 2

SAVEWAIT = 3

SAVEWAIT = 5

Active 232 mA 232 mA 232 mA 232 mA 232 mA

Idle 232 mA 170 mA 170 mA 170 mA 170 mA

Time [ms] 15810 16700 16200 16000 15830

Stabilitaumlt [ms]

80 200 170 130 100

Warum nicht die Frequenz noch weiter senken

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 34: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 34

Sleep-Mode

in linuxincludeasm-armarch-at91rm9200systemh

static inline void arch_cpu_idle()

AT91_SYS -gt PMC_SCDR = AT91C_PMC_PCK

Ergebnisse sleepmode 232 mA rarr 130 mA

Wie lange kann ein System im Sleep-Mode bleiben

mit Frequenzscaling 170 mA rarr 112 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 35: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 35

PowerTop PowerTOP version 19 (C) 2007 Intel Corporation

Cn Verweildauer P-States (Frequenzen)C0 03 200 GHz 0C1 00 160 GHz 0C2 997 120 GHz 100

Aufwachen pro Sekunde 521 Intervall 150sHaumlufigste Ursachen fuumlr das Aufwachen 325 (200) beagled futex_wait (hrtimer_wakeup) 163 (100) ltkernel coregt ehci_work (ehci_watchdog) 111 ( 68) ltinterruptgt ahci 69 ( 43) ltinterruptgt acpi 65 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 52 ( 32) ltinterruptgt extra timer interrupt 49 ( 30) kicker schedule_timeout (process_timeout) 22 ( 13) klipper schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 36: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 36

Nach allen Tipps

Cn Verweildauer P-States (Frequenzen)C0 01 200 GHz 00C1 00 160 GHz 00C2 999 1200 MHz 1000

Aufwachen pro Sekunde 218 Intervall 200sHaumlufigste Ursachen fuumlr das Aufwachen 426 ( 100) ltkernel coregt ehci_work (ehci_watchdog) 173 ( 40) ltkernel modulegt usb_hcd_poll_rh_status (rh_timer_func) 87 ( 20) kicker schedule_timeout (process_timeout) 79 ( 19) kwin schedule_timeout (process_timeout) 53 ( 12) klipper schedule_timeout (process_timeout) 43 ( 10) kwrapper do_nanosleep (hrtimer_wakeup) 43 ( 10) ltkernel coregt queue_delayed_work_on 17 ( 04) kdesktop schedule_timeout (process_timeout)

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 37: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 37

Linux Kernel vor 2621

Timer-Ticks (alle 1 4 oder 10 ms)

Erhoumlhung der jiffies-Variable

Process Accounting Wieviel Zeit hat jeder Prozess verbraucht

Scheduler Muss ein Kontext-wechsel durchgefuumlhrt werden

Sind SW-Timer abgelaufen

Nur benoumltigt wenn ein Programm aktiv ist

Wird auch im Idle-Modus benoumltigt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 38: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 38

Linux Kernel nach 2621Thomas Gleixner Ingo Molnaacuter et al

Tickless Kernel

Jiffies-Variable wird nur erhoumlht wenn ein Prozess aktiv ist

HPET (High Precission Event Timer)

Scheduler

Abgelaufene Timer werden vom HPET gemanaged

Process Accounting

Kontextwechsel

Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben

Interrupts

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 39: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 39

Linux Kernel nach 2621

Grouping

1 Sekunde 1 Sekunde

Systemaufrufe

unsigned long round_jiffies(unsigned long j)unsigned long __round_jiffies_relative(unsigned long j int cpu)

Neue Applikationen immer mit Power-Top oder aumlhnlichem testen

Alle gezeigten Messungen waren mit einem alten Kernel Wie sieht es mit einem aktuelleren System aus

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 40: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 40

Armadeus APF-27

wwwarmadeusorg

- Prozessor Freescale imx27- Takt bis 400MHz- 64 MB RAM- 16 MB Flash- Ethernet USB etc- FPGA

- Kernel 26294

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 41: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 41

On demand Governormake linux26-menuconfig

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 42: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 42

Messungen unterschiedlicher Frequenzscalingmethoden

Frequenzscaling Methode Strom Idle [mA] Strom aktiv [mA]

Perfomance Governor 512 (400 MHz) 723 (400 MHz)

Powersave Governor 494 (133 MHz) 494 (133 MHz)

Ondemand Governor 494 (133 MHz) 723 (400 MHz)

Scheduler Patch 371 (200 MHz) 723 (400 MHz)

Scheduler Patch 348 (133 MHz) 723 (400 MHz)

Die aktuelle Frequenz kann uumlber das sysfs bestimmt werden sysdevicessystemcpucpu0cpufreqscaling_cur_freq

Interessantes Paper zum Thema

httpftpkernelorgpublinuxkernelpeoplelenbacpidocOLS2006-ondemand-paperpdf

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 43: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 43

Sleep Mode auf APF-27

ENTRY(cpu_arm926_do_idle) mov r0 0 mrc p15 0 r1 c1 c0 0 Read control register mcr p15 0 r0 c7 c10 4 Drain write buffer bic r2 r1 1 ltlt 12 mrs r3 cpsr Disable FIQs while Icache orr ip r3 PSR_F_BIT is disabled msr cpsr_c ip mcr p15 0 r2 c1 c0 0 Disable I cache mcr p15 0 r0 c7 c0 4 Wait for interrupt mcr p15 0 r1 c1 c0 0 Restore ICache enable msr cpsr_c r3 Restore FIQ state mov pc lr

Im Filelinux-26294archarmmmproc-arm926S

Ausschaltbar uumlber Kernelboot-Parameter no-hlt oder uumlber Systemfunktion disable_hlt()

Strom 512 mA rarr 725 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 44: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 44

Was bringt Tickless

ohne Tickless I = 535 mA

Tickless I = 515 mA

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 45: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 45

Was bringt Tickless

httpwwwphoronixcomscanphppage=articleampitem=651ampnum=1

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 46: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 46

Ausschalten von PeripherieBisher wurden die Messungen ohne

USB-Support durchgefuumlhrt

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 47: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 47

Eingeschaltetes USB

512 mA rarr 725 mA (+ ~30)

Wird dies durch SW oder HW verursacht

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 48: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 48

- Uumlber 100 Register

- Peripheral Clock Control Register des Clockmoduls

Durch Ausschalten des Bits USB AHB Clock Enable (Advanced High-performance Bus) wird der Strom reduziert(Clock-Gating --gt )

- Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Geraumltes benoumltigt Dies ermoumlglicht durch ein einfaches Programm welches periodisch den USB AHB Clock ein-schaltet den Stromverbrauch massgeblich zu reduzieren

Konfiguration des USB

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 49: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 49

Userspace-dynamisches USB

Lassen sich solche Loumlsungen generalisieren

User Space

Procedure loop- AHB einschalten- Status Register lesen- AHB ausschalten- sleep(1)

Kernel Space

Zugriff auf Register

Einsparung bei APF-27 30

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 50: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 50

Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System (Interrupt-Handling)

- Dynamische Frequenz- und Corespannungs-Anpassung

- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit Reduktion der Versorgungsspannung

- RamFlash wird durch NV-Ram ersetzt Ausschalten des Stromes in Ruhephasen Live-Daten im Ram um schnelles Booten zu ermoumlglichen

- Display mit bistabilem LCD

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 51: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 51

Literatur

Daniel P Bovet Marco Cesati Understanding the Linux Kernel OReilly ISBN 978-0-596-00565-8

httpwwwmjmwirednetkernelDocumentationcpu-freqgovernorstxt

httpwwwcarlthompsonnetsoftwarecpuspeed

wwwlesswattsorg

Manuals der Prozessoren

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 52: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 52

Vielen Dank an

Silvain Deacutecastel Xavier Menoud Andeacuteol Demierre und Igor Zanetti fuumlr die interessanten Analysen des Linux-Systems

Guy Morand und Davide Doninelli fuumlr Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen

Sowie an Daniel Gachet und Nicolas Schroeter fuumlr die vielen interessante Diskussionen zu diesem Thema

Dank an die beteiligten Personen

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
Page 53: Low power linux

DIGICOMP Open Tuesday Wolfram Luithardt HTA-Freiburg 05042011 53

und natuumlrlich

Vielen Dank auch fuumlr Ihre Aufmerksamkeit

Weitere Infos

wolframluithardthefrch

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53