Low-Power Linux



               Wolfram Luithardt

Hochschule für Technik und Architektur,
         Fribourg, Schweiz




     DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   1
Warum Low Power Linux?

Server: Performance ist wichtiger als Energie-
        verbrauch. Low Power primär aus
        Kostengründen
Desktop: Performance ist oft wichtiger als Low Power
Laptops: Low Power primär zur Verlängerung der
         Batterielaufzeit
Mobile:   Batterielaufzeit
Embedded: Oft nur wenig Energie vorhanden.


          DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   2
Embedded Systems




DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   3
Warum Low-Power Systeme ?

                                   - Weniger Wärme
                                   - Weniger bewegliche Teile
      Low                          - Weniger Lärm
     Power
     System                         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, 05.04.2011   4
Motivation
         Embedded System Roadmap 2002:
     ″Power is considered as the most important
         constraint in embedded systems″

Energy-Harvesting:
- Photovoltaik                                              Leistungsabgaben
- Thermoelektrik                                            an ein System ca:
- Vibrationsgeneratoren                                      100 uW – 10mW
- Mikro-Luftgeneratoren
  Langfristiges Ziel:
  Ein Linuxrechner, der mit einer Energyharvesting-
  Versorgung gespeist wird.

          DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   5
Neue Low Power Komponenten

- Display: bistabiles LCD: hält sein Bild auch
  im stromlosen Zustand

- Ram: PASR (Partitial Array Self Refresh):
  dynamisches Ram, das nur teilweise refreshed
  wird.
                                                                             15
- Ram: NVRam (Nichtflüchtiges Ram): >10
  Schreib-Löschzyklen

- Energiespeicher: Supercaps

         DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011        6
Leistung einzelner PC-Komponenten

* Mainboard: 25 Watt
* Gehäuselüfter: 5 Watt
* Prozessorlüfter: 3 Watt
* Speichermodul: 10 Watt
* PCI Soundkarte/Netzwerkkarte/Modem: 5 Watt
* Festplatte: 30 Watt
* CD/DVD Laufwerk/Brenner: 30 Watt
* Diskettenlaufwerk: 4 Watt
* Tastatur/Maus/andere USB-Geräte: 3 Watt/Stück
* Grafikkarte: ca. 50-100 Watt je nach Hersteller
* Prozessor:
    Duron: 27Watt /600MHz - 80Watt /1,6 GHz
    Athlon XP: 60Watt /1500+ - 110Watt / 3200+
    Intel P4: 50Watt / 1,6GHz - 100 Watt / 3,2 GHz


      DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   7
Vergleich verschiedener Linux-
    fähiger Prozessorfamilien
Intel Pentium: 120 Watt
Intel Duo 2 Core (z.B. E8600): 65 Watt
Intel Atom: 2-6 Watt
Transmeta Crusoe: 1 Watt
ARM: z.B. AT91SAM9260: 200 mW
Atmel AVR32: 80mW.




         DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   8
Bekannte Energiespar-Methoden


       - Screen off-mode

       - Suspend to Ram

     - Suspend to disk
    (Hibernation mode)

   DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   9
Die grundlegende Gleichungen
       P gesamt =P statisch P dynamisch
                    P statisch =∑ U⋅I Leak
U: Corespannung
IL e a k : Leckstrom
                        1      2
           P dynamisch = ⋅⋅C⋅U ⋅f
                        2
α: Aktivitätsfaktor
C: Parasitäre Kapazität (Transistoren und Leitungen)
U: Corespannung
f: Frequenz
          DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   10
Technologische Entwicklungen

Von Generation zu Generation:

-   Parasitäre Kapazität/Transistor:                                         ↓
-   Corespannungen: ↓
-   Taktfrequenz: ↑
-   Anzahl-Transistoren pro Chip: ↑

      Dynamische Leistung: =/↑
        Statische Leistung: ↑
         DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011       11
Technologische Entwicklungen
        zur Reduktion statischer Verluste:
                   P statisch =∑ U⋅I Leak
- Neue Dielektrika
- DVTCMOS (Dual Voltage Threshold-CMOS):
  Man benützt 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 für
   eine gewisse Funktionalität nicht benötigt werden,
   werden stromlos geschaltet.

           DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   12
Technologische Entwicklungen
    zur Reduktion dynamischer Verluste:
                    1      2
       P dynamisch = ⋅⋅C⋅U ⋅f
                    2
- ULV-Prozessoren
- Clock-Gating: Optimierung der Anzahl
  der Transistoren, die bei einer gewissen
  Operation getaktet werden müssen.

- Cross Talk Avoidance: z. B. durch Vertau-
  schen von Leitungen etc.
        DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   13
Sparmöglichkeiten
      - Abschaltung von nicht benötigter
        Peripherie
                                                   Verbrauch ARM Cortex M3- STM32F103x8
- Reduktion der
  Taktfrequenz                                    40
                                                           Run, Peri on
                                                  35       Run, Peri off
                                                           Sleep, Peri on
                                                  30
- Reduktion der             Stromverbaruch [mA]
                                                  25
                                                           Sleep, Peri off
                                                           Stop
  Versorgungs-                                    20
  spannung                                        15

                                                  10

                                                   5
- Kombination                                      0

  von Allem !!!!                                       0     10     20        30     40     50
                                                                             Taktfrequenz [MHz]
                                                                                                  60   70   80




           DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011                                14
The real world
      Verbrauch UNC90, AT91RM9200




DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   15
Abhängigkeit von Spannung und Frequenz




                                                             XScale, Quelle Intel

     DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011          16
X86 Sleep-modes
                                P-States:
   Verringerung der Frequenz und der Corespannung

                                C-States:
Beispiel: Intel® Core™2 Duo
C-State                             max Leistung
C0            Running Mode            35.0 Watt
C1            Idle Mode               13.5 Watt
C2            Ohne Datenbus           12.9 Watt
C3            Deaktivierung PLL        7.7 Watt
C4            Enhanced Deeper Sleep    1.2 Watt

          http://www.lesswatts.org/documentation/silicon-power-mgmnt/
               DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   17
Warum verschiedene Sleep-Modes?

Leistungsaufnahme                                                    Beispiel: Intel®
                                     C0 Mode                         Core™2 Duo
                                      35.0 Watt


                10 ns

         C1 Mode                   100 ns                        250 us
          13.5 Watt
                                                   50 us
                         C2 Mode
                          12.9 Watt

                                               C3 Mode
                                                  7.7 Watt                       C4 Mode
                                                                                  1.2 Watt


             DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011               18
Beispiel Sleep-Modes: ARM

Strongarm SA1100                   Active
                                  400 mW


              10μs
                                                         160ms
                           10μs              90μs

           Idle                                             Sleep
          50 mW                    90μs                    160 μW


 Woher weiss der Prozessor, in welchen Zustand er gehen kann ?


           DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   19
Grundlegende Prinzipien

 Grundzustand aktiv, schlafen nur,                               Wartendes
      wenn nichts zu tun ist                                   Betriebssystem



Grundzustand schlafend, aktiv nur, Ereignisgesteuertes
      wenn etwas zu tun ist           Betriebssystem



   Grundzustand aus, aktiv nur,
                                                           Energiegesteuertes
     wenn genügend Energie                                   Betriebssystem
         vorhanden ist

          DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011     20
Unix- Prozessmodel

externes                                                  Problematik bei
Gerät                  Polling                          energiegesteuertem
                                                          Betriebssystem:

                                    Aktiv                   Bootzeit
Interrupt



                Blockiert                          Wartend



       DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   21
Reduktion der Aufstartzeit
Karo TX-25




                         66 Sek               8 Sek
                               Quelle: D. Doninelli: TX25-Fast Boot, EIA-FR 2011
         DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011     22
Wie sieht dies in der Praxis aus ?

      - Dynamische
       Reduktion der
        Taktfrequenz                                 - Prozessor
                                                    schlafen legen
- Abschaltung von
  nicht benötigter
     Peripherie                             - Reduktion der
                                              Versorgungs-
                                                spannung

         DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   23
Plattform UNC90
    http://www.digi.com/pdf/prd_em_unc90.pdf
     - Prozessor: AT91RM9200 (ARM 920EJ)
     - Maximale Frequenz: 180 MHz
     - 32 MB Ram, 16 MB Flash
     - Linux Kernel 2.6.12

                                          Um

 Spannungs-
   regler
                              0.1 Ω                      UNC90- Modul
Ausgang 3.3 V           I = Um / 0.1Ω
                        P = U·I = Um2 / R

        DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   24
Crosscompiling
                                      PC mit Ubuntu +
                                      UNC90-Crosscompiling
 UNC90                                Umgebung
                            TFTP        TFTP-Server mit
 Kernel                                 Kernel für UNC90

                            NFS         Filesystem auf
Filesystem                              NFS-Partition

                           seriell      Terminalprogramm
 Terminal
                                        (minicom)

  DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   25
Frequencyscaling
             Power Management Controller PMC



  Prozessorfrequenz




Frequenzverhältnis
   zur Peripherie


             DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   26
Manuelles Frequencyscaling

saveCurrent()
{
   PMC_ MCKR |= PRES_DIV2;               // Master Clock register auf /2 stellen
   US_BRGR = US_BRGR /2;                  // USART Baudrate Divider Register
}

normalCurrent()
{
   PMC_ MCKR &= ~PRES_DIV2;                 // Master Clock register auf /1 stellen
   US_BRGR = US_BRGR *2;                    // USART Baudrate Divider Register
}



     Wie kann dieses automatisiert werden ?
            DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   27
Unix- Prozessmodel

externes
Gerät                  Polling


                                 Laufend                                   Aktive
                                                                           Prozesse
Interrupt



                Blockiert                          Wartend



       DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011        28
Die runqueue
        runqueue-Struktur im Kernel                                         geblockte Prozesse:



run      Idle-         Proc          Proc
queue    Task           1             2




 Ein Feld dieser Struktur: nr_running enthält die Anzahl
     der aktiven Prozesse (inklusive des Idle-Tasks)



                 DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011           29
Ein einfacher Patch in sched.c

Die Funktion schedule() wird bei jedem Kontextwechsel
(preemptiv oder gewünscht) aufgerufen:
if(unlikely(rq -> nr_running == 1)){
     if(saveMode == 0){
          saveCurrent();
          saveMode = 1;
     }
} else {
     if(saveMode != 0){
          normalCurrent();
          saveMode = 0;
     }
}

          DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   30
Die Routinen
saveCurrent() {
   local_irq_disable();
   waitForTXReady();                    waitForTXReady(){
   saveCurrent();                         do {
   local_irq_enable();                         /* wait until TX_Ready
}                                                 Bit in USART Channel
                                                  Status Register set
normalCurrent() {                              */
   local_irq_disable();                   }
   waitForTXReady();                      while((US_ CSR & TXRDY)==0)
   normalCurrent();                     }
   local_irq_enable();
}


          DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   31
Ein etwas besserer Patch

if(unlikely(rq -> nr_running == 1)){
  if((saveMode == 0)&&(saveCounter > SAVEWAIT)){
     saveCurrent();
     saveMode = 1;
  } else {
     saveCounter++;
  }
} else {
  if(saveMode != 0){
     normalCurrent();
     saveMode = 0;
  }
  saveCounter = 0;
}

           DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   32
Ergebnisse
                 ohne         SAVEWAIT SAVEWAIT SAVEWAIT SAVEWAIT
                 Patch           =1       =2       =3       =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
Stabilität         80              200              170               130           100
  [ms]

Die Zeit wird mit einem Programm gemessen, das eine einfache mathe-
matische Funktion ausführt.

          Warum nicht die Frequenz noch weiter senken?

               DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011          33
Sleep-Mode

in linux/include/asm-arm/arch-at91rm9200/system.h

static inline void arch_cpu_idle()
{
   AT91_SYS -> PMC_SCDR = AT91C_PMC_PCK;
}

Ergebnisse: sleepmode: 232 mA → 130 mA
mit Frequenzscaling:   170 mA → 112 mA


Wie lange kann ein System im Sleep-Mode bleiben?

        DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   34
PowerTop
      PowerTOP version 1.9                  (C) 2007 Intel Corporation
      Cn        Verweildauer                 P-States (Frequenzen)
      C0           0,3%                           2,00 GHz      0%
      C1           0,0%                           1,60 GHz      0%
      C2          99,7%                           1,20 GHz 100 %
Aufwachen pro Sekunde : 52,1 Intervall: 15,0s
Häufigste Ursachen für das Aufwachen:
32,5% (20,0)     beagled : futex_wait (hrtimer_wakeup)
16,3% (10,0) <kernel core> : ehci_work (ehci_watchdog)
11,1% ( 6,8) <interrupt> : ahci
 6,9% ( 4,3) <interrupt> : acpi
 6,5% ( 4,0) <kernel module> : usb_hcd_poll_rh_status (rh_timer_func)
 5,2% ( 3,2) <interrupt> : extra timer interrupt
 4,9% ( 3,0)     kicker : schedule_timeout (process_timeout)
 2,2% ( 1,3)     klipper : schedule_timeout (process_timeout)

            DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   35
Nach allen Tipps
      Cn               Verweildauer              P-States (Frequenzen)
      C0                0,1%                    2,00 GHz      0,0%
      C1                0,0%                    1,60 GHz      0,0%
      C2              99,9%                     1200 MHz 100,0%
Aufwachen pro Sekunde : 21,8 Intervall: 20,0s
Häufigste Ursachen für das Aufwachen:
42,6% ( 10,0) <kernel core> : ehci_work (ehci_watchdog)
17,3% ( 4,0) <kernel module> : usb_hcd_poll_rh_status (rh_timer_func)
 8,7% ( 2,0)    kicker : schedule_timeout (process_timeout)
 7,9% ( 1,9)    kwin : schedule_timeout (process_timeout)
 5,3% ( 1,2)    klipper : schedule_timeout (process_timeout)
 4,3% ( 1,0)    kwrapper : do_nanosleep (hrtimer_wakeup)
 4,3% ( 1,0) <kernel core> : queue_delayed_work_on
 1,7% ( 0,4)    kdesktop : schedule_timeout (process_timeout)

              DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   36
Linux Kernel vor 2.6.21

                                        Erhöhung der jiffies-Variable

Timer-Ticks
(alle 1, 4 oder                         Process Accounting: Wieviel Zeit
10 ms)                                  hat jeder Prozess verbraucht ?

                                        Scheduler: Muss ein Kontext-
                                        wechsel durchgeführt werden ?


                                        Sind SW-Timer abgelaufen ?

         Nur benötigt, wenn ein Programm aktiv ist
        Wird auch im Idle-Modus benötigt

            DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   37
Linux Kernel nach 2.6.21
         Thomas Gleixner, Ingo Molnár et al.:
                  Tickless Kernel

HPET (High Precission                         Jiffies-Variable wird nur
    Event Timer)                              erhöht, wenn ein Prozess
                                              aktiv ist

                                              Process Accounting
     Scheduler
                                              Kontextwechsel

                                              Abgelaufene Timer werden
                                              vom HPET gemanaged
     Interrupts
 Wenn kein Prozess aktiv ist kann der Prozessor im
              Schlaf-Mode bleiben!
         DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   38
Linux Kernel nach 2.6.21
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
                    ähnlichem testen !

 Alle gezeigten Messungen waren mit einem alten Kernel.
      Wie sieht es mit einem aktuelleren System aus?
             DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   39
Armadeus: APF-27

www.armadeus.org

- Prozessor Freescale i.mx27
- Takt bis 400MHz
- 64 MB RAM
- 16 MB Flash
- Ethernet, USB etc...
- FPGA

- Kernel: 2.6.29.4

          DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   40
On demand Governor
  make linux26-menuconfig




DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   41
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 über das sysfs bestimmt werden:
   /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

Interessantes Paper zum Thema:
http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/doc/OLS2006-ondemand-paper.pdf


                 DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011       42
Sleep Mode auf APF-27
  Im File:/linux-2.6.29.4/arch/arm/mm/proc-arm926.S
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 << 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

 Ausschaltbar über Kernelboot-Parameter: no-hlt oder über Systemfunktion: disable_hlt();
 Strom:                     512 mA → 725 mA
                 DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   43
Was bringt Tickless ?
ohne Tickless: I = 535 mA




Tickless: I = 515 mA




   DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   44
Was bringt Tickless ?




http://www.phoronix.com/scan.php?page=article&item=651&num=1
            DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   45
Ausschalten von Peripherie
  Bisher wurden die Messungen ohne
       USB-Support durchgeführt !




   DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   46
Eingeschaltetes USB
512 mA → 725 mA (+ ~30%)

Wird dies durch SW oder HW verursacht ?




  DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   47
Konfiguration des USB
- Über 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 ??? --> !!!)

- Der AHB Clock wird aber nur zum Erkennen eines neuen
  USB-Gerätes benötigt. Dies' ermöglicht, durch ein einfaches
  Programm, welches periodisch den USB AHB Clock ein-
  schaltet, den Stromverbrauch massgeblich zu reduzieren....


           DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   48
Userspace-dynamisches USB

User Space                                Kernel Space

 Procedure
  loop{
 - AHB einschalten
 - Status Register lesen                             Zugriff auf Register
 - AHB ausschalten
 - sleep(1);
 }

             Einsparung bei APF-27: 30%

Lassen sich solche Lösungen generalisieren ?
         DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   49
Neue Plattform FRIARM

- Komplettes ereignisgesteuertes System
  (Interrupt-Handling)
- Dynamische Frequenz- und Corespannungs-Anpassung
- Dual-Ram zur Reduktion der Zugriffsfrequenz und damit
  Reduktion der Versorgungsspannung
- Ram/Flash wird durch NV-Ram ersetzt: Ausschalten des
  Stromes in Ruhephasen, Live-Daten im Ram, um
  schnelles Booten zu ermöglichen
- Display mit bistabilem LCD


          DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   50
Literatur

Daniel P. Bovet, Marco Cesati: Understanding the
Linux Kernel, O'Reilly, ISBN: 978-0-596-00565-8

http://www.mjmwired.net/kernel/Documentation/cpu-
freq/governors.txt

http://www.carlthompson.net/software/cpuspeed/

www.lesswatts.org

Manuals der Prozessoren

          DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   51
Dank an die beteiligten Personen

Vielen Dank an:
Silvain Décastel, Xavier Menoud, Andéol Demierre
und Igor Zanetti für die interessanten Analysen des
Linux-Systems.
Guy Morand und Davide Doninelli für Ihre tollen
Arbeiten zum Fastboot an verschiedenen Systemen.
Sowie an Daniel Gachet und Nicolas Schroeter ' für
die vielen interessante Diskussionen zu diesem
Thema....



          DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   52
und natürlich....

Vielen Dank auch für Ihre
    Aufmerksamkeit !



                  Weitere Infos:

       wolfram.luithardt@hefr.ch



 DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011   53

Low power linux

  • 1.
    Low-Power Linux Wolfram Luithardt Hochschule für Technik und Architektur, Fribourg, Schweiz DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 1
  • 2.
    Warum Low PowerLinux? Server: Performance ist wichtiger als Energie- verbrauch. Low Power primär aus Kostengründen Desktop: Performance ist oft wichtiger als Low Power Laptops: Low Power primär zur Verlängerung der Batterielaufzeit Mobile: Batterielaufzeit Embedded: Oft nur wenig Energie vorhanden. DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 2
  • 3.
    Embedded Systems DIGICOMP OpenTuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 3
  • 4.
    Warum Low-Power Systeme? - Weniger Wärme - Weniger bewegliche Teile Low - Weniger Lärm Power System 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, 05.04.2011 4
  • 5.
    Motivation Embedded System Roadmap 2002: ″Power is considered as the most important constraint in embedded systems″ Energy-Harvesting: - Photovoltaik Leistungsabgaben - Thermoelektrik an ein System ca: - Vibrationsgeneratoren 100 uW – 10mW - Mikro-Luftgeneratoren Langfristiges Ziel: Ein Linuxrechner, der mit einer Energyharvesting- Versorgung gespeist wird. DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 5
  • 6.
    Neue Low PowerKomponenten - Display: bistabiles LCD: hält sein Bild auch im stromlosen Zustand - Ram: PASR (Partitial Array Self Refresh): dynamisches Ram, das nur teilweise refreshed wird. 15 - Ram: NVRam (Nichtflüchtiges Ram): >10 Schreib-Löschzyklen - Energiespeicher: Supercaps DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 6
  • 7.
    Leistung einzelner PC-Komponenten *Mainboard: 25 Watt * Gehäuselüfter: 5 Watt * Prozessorlüfter: 3 Watt * Speichermodul: 10 Watt * PCI Soundkarte/Netzwerkkarte/Modem: 5 Watt * Festplatte: 30 Watt * CD/DVD Laufwerk/Brenner: 30 Watt * Diskettenlaufwerk: 4 Watt * Tastatur/Maus/andere USB-Geräte: 3 Watt/Stück * Grafikkarte: ca. 50-100 Watt je nach Hersteller * Prozessor: Duron: 27Watt /600MHz - 80Watt /1,6 GHz Athlon XP: 60Watt /1500+ - 110Watt / 3200+ Intel P4: 50Watt / 1,6GHz - 100 Watt / 3,2 GHz DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 7
  • 8.
    Vergleich verschiedener Linux- fähiger Prozessorfamilien Intel Pentium: 120 Watt Intel Duo 2 Core (z.B. E8600): 65 Watt Intel Atom: 2-6 Watt Transmeta Crusoe: 1 Watt ARM: z.B. AT91SAM9260: 200 mW Atmel AVR32: 80mW. DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 8
  • 9.
    Bekannte Energiespar-Methoden - Screen off-mode - Suspend to Ram - Suspend to disk (Hibernation mode) DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 9
  • 10.
    Die grundlegende Gleichungen P gesamt =P statisch P dynamisch P statisch =∑ U⋅I Leak U: Corespannung IL e a k : Leckstrom 1 2 P dynamisch = ⋅⋅C⋅U ⋅f 2 α: Aktivitätsfaktor C: Parasitäre Kapazität (Transistoren und Leitungen) U: Corespannung f: Frequenz DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 10
  • 11.
    Technologische Entwicklungen Von Generationzu Generation: - Parasitäre Kapazität/Transistor: ↓ - Corespannungen: ↓ - Taktfrequenz: ↑ - Anzahl-Transistoren pro Chip: ↑ Dynamische Leistung: =/↑ Statische Leistung: ↑ DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 11
  • 12.
    Technologische Entwicklungen zur Reduktion statischer Verluste: P statisch =∑ U⋅I Leak - Neue Dielektrika - DVTCMOS (Dual Voltage Threshold-CMOS): Man benützt 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 für eine gewisse Funktionalität nicht benötigt werden, werden stromlos geschaltet. DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 12
  • 13.
    Technologische Entwicklungen zur Reduktion dynamischer Verluste: 1 2 P dynamisch = ⋅⋅C⋅U ⋅f 2 - ULV-Prozessoren - Clock-Gating: Optimierung der Anzahl der Transistoren, die bei einer gewissen Operation getaktet werden müssen. - Cross Talk Avoidance: z. B. durch Vertau- schen von Leitungen etc. DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 13
  • 14.
    Sparmöglichkeiten - Abschaltung von nicht benötigter Peripherie Verbrauch ARM Cortex M3- STM32F103x8 - Reduktion der Taktfrequenz 40 Run, Peri on 35 Run, Peri off Sleep, Peri on 30 - Reduktion der Stromverbaruch [mA] 25 Sleep, Peri off Stop Versorgungs- 20 spannung 15 10 5 - Kombination 0 von Allem !!!! 0 10 20 30 40 50 Taktfrequenz [MHz] 60 70 80 DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 14
  • 15.
    The real world Verbrauch UNC90, AT91RM9200 DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 15
  • 16.
    Abhängigkeit von Spannungund Frequenz XScale, Quelle Intel DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 16
  • 17.
    X86 Sleep-modes P-States: Verringerung der Frequenz und der Corespannung C-States: Beispiel: Intel® Core™2 Duo C-State max Leistung C0 Running Mode 35.0 Watt C1 Idle Mode 13.5 Watt C2 Ohne Datenbus 12.9 Watt C3 Deaktivierung PLL 7.7 Watt C4 Enhanced Deeper Sleep 1.2 Watt http://www.lesswatts.org/documentation/silicon-power-mgmnt/ DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 17
  • 18.
    Warum verschiedene Sleep-Modes? Leistungsaufnahme Beispiel: Intel® C0 Mode Core™2 Duo 35.0 Watt 10 ns C1 Mode 100 ns 250 us 13.5 Watt 50 us C2 Mode 12.9 Watt C3 Mode 7.7 Watt C4 Mode 1.2 Watt DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 18
  • 19.
    Beispiel Sleep-Modes: ARM StrongarmSA1100 Active 400 mW 10μs 160ms 10μs 90μs Idle Sleep 50 mW 90μs 160 μW Woher weiss der Prozessor, in welchen Zustand er gehen kann ? DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 19
  • 20.
    Grundlegende Prinzipien Grundzustandaktiv, schlafen nur, Wartendes wenn nichts zu tun ist Betriebssystem Grundzustand schlafend, aktiv nur, Ereignisgesteuertes wenn etwas zu tun ist Betriebssystem Grundzustand aus, aktiv nur, Energiegesteuertes wenn genügend Energie Betriebssystem vorhanden ist DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 20
  • 21.
    Unix- Prozessmodel externes Problematik bei Gerät Polling energiegesteuertem Betriebssystem: Aktiv Bootzeit Interrupt Blockiert Wartend DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 21
  • 22.
    Reduktion der Aufstartzeit KaroTX-25 66 Sek 8 Sek Quelle: D. Doninelli: TX25-Fast Boot, EIA-FR 2011 DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 22
  • 23.
    Wie sieht diesin der Praxis aus ? - Dynamische Reduktion der Taktfrequenz - Prozessor schlafen legen - Abschaltung von nicht benötigter Peripherie - Reduktion der Versorgungs- spannung DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 23
  • 24.
    Plattform UNC90 http://www.digi.com/pdf/prd_em_unc90.pdf - Prozessor: AT91RM9200 (ARM 920EJ) - Maximale Frequenz: 180 MHz - 32 MB Ram, 16 MB Flash - Linux Kernel 2.6.12 Um Spannungs- regler 0.1 Ω UNC90- Modul Ausgang 3.3 V I = Um / 0.1Ω P = U·I = Um2 / R DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 24
  • 25.
    Crosscompiling PC mit Ubuntu + UNC90-Crosscompiling UNC90 Umgebung TFTP TFTP-Server mit Kernel Kernel für UNC90 NFS Filesystem auf Filesystem NFS-Partition seriell Terminalprogramm Terminal (minicom) DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 25
  • 26.
    Frequencyscaling Power Management Controller PMC Prozessorfrequenz Frequenzverhältnis zur Peripherie DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 26
  • 27.
    Manuelles Frequencyscaling saveCurrent() { PMC_ MCKR |= PRES_DIV2; // Master Clock register auf /2 stellen US_BRGR = US_BRGR /2; // USART Baudrate Divider Register } normalCurrent() { PMC_ MCKR &= ~PRES_DIV2; // Master Clock register auf /1 stellen US_BRGR = US_BRGR *2; // USART Baudrate Divider Register } Wie kann dieses automatisiert werden ? DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 27
  • 28.
    Unix- Prozessmodel externes Gerät Polling Laufend Aktive Prozesse Interrupt Blockiert Wartend DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 28
  • 29.
    Die runqueue runqueue-Struktur im Kernel geblockte Prozesse: run Idle- Proc Proc queue Task 1 2 Ein Feld dieser Struktur: nr_running enthält die Anzahl der aktiven Prozesse (inklusive des Idle-Tasks) DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 29
  • 30.
    Ein einfacher Patchin sched.c Die Funktion schedule() wird bei jedem Kontextwechsel (preemptiv oder gewünscht) aufgerufen: if(unlikely(rq -> nr_running == 1)){ if(saveMode == 0){ saveCurrent(); saveMode = 1; } } else { if(saveMode != 0){ normalCurrent(); saveMode = 0; } } DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 30
  • 31.
    Die Routinen saveCurrent() { local_irq_disable(); waitForTXReady(); waitForTXReady(){ saveCurrent(); do { local_irq_enable(); /* wait until TX_Ready } Bit in USART Channel Status Register set normalCurrent() { */ local_irq_disable(); } waitForTXReady(); while((US_ CSR & TXRDY)==0) normalCurrent(); } local_irq_enable(); } DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 31
  • 32.
    Ein etwas bessererPatch if(unlikely(rq -> nr_running == 1)){ if((saveMode == 0)&&(saveCounter > SAVEWAIT)){ saveCurrent(); saveMode = 1; } else { saveCounter++; } } else { if(saveMode != 0){ normalCurrent(); saveMode = 0; } saveCounter = 0; } DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 32
  • 33.
    Ergebnisse ohne SAVEWAIT SAVEWAIT SAVEWAIT SAVEWAIT Patch =1 =2 =3 =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 Stabilität 80 200 170 130 100 [ms] Die Zeit wird mit einem Programm gemessen, das eine einfache mathe- matische Funktion ausführt. Warum nicht die Frequenz noch weiter senken? DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 33
  • 34.
    Sleep-Mode in linux/include/asm-arm/arch-at91rm9200/system.h static inlinevoid arch_cpu_idle() { AT91_SYS -> PMC_SCDR = AT91C_PMC_PCK; } Ergebnisse: sleepmode: 232 mA → 130 mA mit Frequenzscaling: 170 mA → 112 mA Wie lange kann ein System im Sleep-Mode bleiben? DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 34
  • 35.
    PowerTop PowerTOP version 1.9 (C) 2007 Intel Corporation Cn Verweildauer P-States (Frequenzen) C0 0,3% 2,00 GHz 0% C1 0,0% 1,60 GHz 0% C2 99,7% 1,20 GHz 100 % Aufwachen pro Sekunde : 52,1 Intervall: 15,0s Häufigste Ursachen für das Aufwachen: 32,5% (20,0) beagled : futex_wait (hrtimer_wakeup) 16,3% (10,0) <kernel core> : ehci_work (ehci_watchdog) 11,1% ( 6,8) <interrupt> : ahci 6,9% ( 4,3) <interrupt> : acpi 6,5% ( 4,0) <kernel module> : usb_hcd_poll_rh_status (rh_timer_func) 5,2% ( 3,2) <interrupt> : extra timer interrupt 4,9% ( 3,0) kicker : schedule_timeout (process_timeout) 2,2% ( 1,3) klipper : schedule_timeout (process_timeout) DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 35
  • 36.
    Nach allen Tipps Cn Verweildauer P-States (Frequenzen) C0 0,1% 2,00 GHz 0,0% C1 0,0% 1,60 GHz 0,0% C2 99,9% 1200 MHz 100,0% Aufwachen pro Sekunde : 21,8 Intervall: 20,0s Häufigste Ursachen für das Aufwachen: 42,6% ( 10,0) <kernel core> : ehci_work (ehci_watchdog) 17,3% ( 4,0) <kernel module> : usb_hcd_poll_rh_status (rh_timer_func) 8,7% ( 2,0) kicker : schedule_timeout (process_timeout) 7,9% ( 1,9) kwin : schedule_timeout (process_timeout) 5,3% ( 1,2) klipper : schedule_timeout (process_timeout) 4,3% ( 1,0) kwrapper : do_nanosleep (hrtimer_wakeup) 4,3% ( 1,0) <kernel core> : queue_delayed_work_on 1,7% ( 0,4) kdesktop : schedule_timeout (process_timeout) DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 36
  • 37.
    Linux Kernel vor2.6.21 Erhöhung der jiffies-Variable Timer-Ticks (alle 1, 4 oder Process Accounting: Wieviel Zeit 10 ms) hat jeder Prozess verbraucht ? Scheduler: Muss ein Kontext- wechsel durchgeführt werden ? Sind SW-Timer abgelaufen ? Nur benötigt, wenn ein Programm aktiv ist Wird auch im Idle-Modus benötigt DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 37
  • 38.
    Linux Kernel nach2.6.21 Thomas Gleixner, Ingo Molnár et al.: Tickless Kernel HPET (High Precission Jiffies-Variable wird nur Event Timer) erhöht, wenn ein Prozess aktiv ist Process Accounting Scheduler Kontextwechsel Abgelaufene Timer werden vom HPET gemanaged Interrupts Wenn kein Prozess aktiv ist kann der Prozessor im Schlaf-Mode bleiben! DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 38
  • 39.
    Linux Kernel nach2.6.21 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 ähnlichem testen ! Alle gezeigten Messungen waren mit einem alten Kernel. Wie sieht es mit einem aktuelleren System aus? DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 39
  • 40.
    Armadeus: APF-27 www.armadeus.org - ProzessorFreescale i.mx27 - Takt bis 400MHz - 64 MB RAM - 16 MB Flash - Ethernet, USB etc... - FPGA - Kernel: 2.6.29.4 DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 40
  • 41.
    On demand Governor make linux26-menuconfig DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 41
  • 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 über das sysfs bestimmt werden: /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq Interessantes Paper zum Thema: http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/doc/OLS2006-ondemand-paper.pdf DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 42
  • 43.
    Sleep Mode aufAPF-27 Im File:/linux-2.6.29.4/arch/arm/mm/proc-arm926.S 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 << 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 Ausschaltbar über Kernelboot-Parameter: no-hlt oder über Systemfunktion: disable_hlt(); Strom: 512 mA → 725 mA DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 43
  • 44.
    Was bringt Tickless? ohne Tickless: I = 535 mA Tickless: I = 515 mA DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 44
  • 45.
    Was bringt Tickless? http://www.phoronix.com/scan.php?page=article&item=651&num=1 DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 45
  • 46.
    Ausschalten von Peripherie Bisher wurden die Messungen ohne USB-Support durchgeführt ! DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 46
  • 47.
    Eingeschaltetes USB 512 mA→ 725 mA (+ ~30%) Wird dies durch SW oder HW verursacht ? DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 47
  • 48.
    Konfiguration des USB -Über 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 ??? --> !!!) - Der AHB Clock wird aber nur zum Erkennen eines neuen USB-Gerätes benötigt. Dies' ermöglicht, durch ein einfaches Programm, welches periodisch den USB AHB Clock ein- schaltet, den Stromverbrauch massgeblich zu reduzieren.... DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 48
  • 49.
    Userspace-dynamisches USB User Space Kernel Space Procedure loop{ - AHB einschalten - Status Register lesen Zugriff auf Register - AHB ausschalten - sleep(1); } Einsparung bei APF-27: 30% Lassen sich solche Lösungen generalisieren ? DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 49
  • 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 - Ram/Flash wird durch NV-Ram ersetzt: Ausschalten des Stromes in Ruhephasen, Live-Daten im Ram, um schnelles Booten zu ermöglichen - Display mit bistabilem LCD DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 50
  • 51.
    Literatur Daniel P. Bovet,Marco Cesati: Understanding the Linux Kernel, O'Reilly, ISBN: 978-0-596-00565-8 http://www.mjmwired.net/kernel/Documentation/cpu- freq/governors.txt http://www.carlthompson.net/software/cpuspeed/ www.lesswatts.org Manuals der Prozessoren DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 51
  • 52.
    Dank an diebeteiligten Personen Vielen Dank an: Silvain Décastel, Xavier Menoud, Andéol Demierre und Igor Zanetti für die interessanten Analysen des Linux-Systems. Guy Morand und Davide Doninelli für Ihre tollen Arbeiten zum Fastboot an verschiedenen Systemen. Sowie an Daniel Gachet und Nicolas Schroeter ' für die vielen interessante Diskussionen zu diesem Thema.... DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 52
  • 53.
    und natürlich.... Vielen Dankauch für Ihre Aufmerksamkeit ! Weitere Infos: wolfram.luithardt@hefr.ch DIGICOMP Open Tuesday, Wolfram Luithardt HTA-Freiburg, 05.04.2011 53