summaryrefslogtreecommitdiffstats
path: root/doc/TIPS.txt
blob: 6b76dd13cb797d4e6a3281eefa183108d8c57991 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
=== Simple user tips for improving power usage ===
* Use a properly dimensioned system for the job (no need for overpowered systems for simple Desktop use e.g.) 
* For servers consolidate services on fewer systems to maximize efficiency of each system
* Enforce turning of machines that are not used (e.g. company policy)
* Unplug and/or turn of peripherals that aren't used (e.g. external USB devices, monitors, printers, scanners)
* Turn of unused hardware already in BIOS.
* Disable power hungry features.
* Enable CPU scaling if supported for ondemand CPU governor. DONT use powersave governor, typically uses more power than ondemand
(race to idle).
* Put network card to 100 mbit/10 mbit:
** 10 mbit: ethtool -s eth0 advertise 0x002
** 100 mbit: ethtool -s eth0 advertise 0x008
** Doesn't work for every card
* Put harddisk to spindown fast and full power saving:
** hdparm -S240 /dev/sda (20m idle to spindown)
** hdparm -B1 /dev/sda (Max powersave mode)
* Make sure writes to hd don't wake it up too quickly:
** Set flusing to once 5 minutes
** echo "3000" > /proc/sys/vm/dirty_writeback_centisecs
** Enable laptop mode
** echo "5" > /proc/sys/vm/laptop_mode
* Use relatime for your / partition
** mount -o remount,relatime / 
* Disable CD-ROM polling from HAL (prevents popups when a CD is inserted):
** hal-disable-polling --device /dev/scd0 
* Enable USB autosuspend by adding the following to the kernel boot commandline:
** usbcore.autosuspend=5 
* Screensaver needs to dpms off the screen, not just make colors black.  To turn of monitor after 120s when X is running:
** xset dpms 0 0 120

=== Simple programmer tips for improving power usage ===
* Avoid unecessary work/computation
* Wake up only when necessary
* Do not actively poll in programs or use short regular timeouts, rather react to events 
* If you wake up, do everything at once (race to idle) and as fast as possible
* Use large buffers to avoid frequent disk access. Write one large block at a time
* Don't use [f]sync() if not necessary
* Group timers accross applications if possible (even systems)