[ltp] The zen of power saving, still 21.4W on Thinpad Z61p :(

Marc MERLIN linux-thinkpad@linux-thinkpad.org
Fri, 28 Dec 2007 10:45:16 -0800


On Thu, Dec 27, 2007 at 11:38:13PM -0500, Theodore Tso wrote:
> It actually makes a huge amount of sense to do APS in the drive,
> because it means you don't have to constantly wake up the CPU to
> sample the accelerometers to see if the laptop is falling.  So it
> makes a huge difference in terms of batter life and power saving.

This prodded me to look into the humongous power usage of my Z61p some
more, and here are all the details I found, along with a plea for more
suggestions and help :)

The laptop starts at around 30W when I unplug it, and that's only with
firefox/xmms running, no compile or anything. After some work, I can
get it down to 21.4W, but no further :(
Details are below:

Thinkpad Z61p 1920x1200, fglrx, 2.6.22.15 (required by 8.38.6)
kernel built as p4smp-preempt-1khz-noticks
ATI FireGL 5200 (which requires fglrx, and not newer than 8.38.6)
Dual Core Duo T7200 @ 2.00GHz, and 2GB of Ram

After unplug:

     PowerTOP version 1.9       (C) 2007 Intel Corporation

Cn                Avg residency       P-states (frequencies)
C0 (cpu running)        (15.9%)         2.00 Ghz     0.0%
C1                0.0ms ( 0.0%)         1.67 Ghz     0.0%
C2                0.6ms ( 8.4%)         1333 Mhz     0.0%
C3                0.8ms (75.6%)         1000 Mhz   100.0%


Wakeups-from-idle per second : 1136.4   interval: 0.3s
Power usage (ACPI estimate): 27.9W (3.0 hours)

Top causes for wakeups:
  39.1% (  inf)              xmms : schedule_timeout (process_timeout) 
  19.5% (  inf)       firefox-bin : schedule_timeout (process_timeout) 
   7.4% (  inf)       <interrupt> : uhci_hcd:usb2, ohci1394, HDA Intel, ipw3945 
   5.9% (  inf)       <interrupt> : ahci, uhci_hcd:usb1, tifm_7xx1, sdhci:slot0,
   5.1% (  inf)            hdapsd : do_nanosleep (hrtimer_wakeup) 
   5.1% (  inf)      S20powernowd : queue_delayed_work_on (delayed_work_timer_fn)
   5.1% (  inf)       firefox-bin : futex_wait (hrtimer_wakeup) 
   3.9% (  inf)              Xorg : do_setitimer (it_real_fn) 
   2.7% (  inf)           mplayer : schedule_timeout (process_timeout) 
   2.3% (  inf)           mplayer : do_nanosleep (hrtimer_wakeup) 
   1.6% (  inf)           gkrellm : schedule_timeout (process_timeout) 
   0.8% (  inf)       <interrupt> : PS/2 keyboard/mouse/touchpad 
   0.4% (  inf)         Eterm.bin : schedule_timeout (process_timeout)

That's after:
0) options usbcore autosuspend=1
1) laptop mode on
2) iwpriv setpower 5
3) fglrx powermode on, although it won't go all the way do 128/135Mhz:
gandalf:~$ /usr/bin/aticonfig --lsp
    core/mem      [flags]
-----------------
  1: 128/135 MHz  [low voltage]
*    209/135 MHz  [low voltage]
  2: 324/135 MHz
  3: 398/324 MHz  [default state]
gandalf:~$ /usr/bin/aticonfig --set-powerstate=1
gandalf:~$ /usr/bin/aticonfig --lsp
    core/mem      [flags]
-----------------
  1: 128/135 MHz  [low voltage]
*    209/135 MHz  [low voltage]
  2: 324/135 MHz
  3: 398/324 MHz  [default state]
4) cpu scaling
gandalf:/sys/devices/system/cpu# cat cpu[01]/cpufreq/scaling_governor
ondemand
ondemand

Stopping the two biggest wakers helps a bit:
gandalf:~# killall -STOP xmms firefox-bin
and letting the HD spin down:

> Cn                Avg residency       P-states (frequencies)
> C0 (cpu running)        (10.6%)         2.00 Ghz     0.4%
> C1                0.0ms ( 0.0%)         1.67 Ghz     0.0%
> C2                0.8ms ( 6.0%)         1333 Mhz     0.0%
> C3                1.4ms (83.4%)         1000 Mhz    99.6%
> 
> 
> Wakeups-from-idle per second : 686.9    interval: 10.0s
> Power usage (ACPI estimate): 26.9W (3.0 hours) (long term: 27.8W,/2.9h)
> 
> Top causes for wakeups:
>   28.6% (158.3)       <interrupt> : extra timer interrupt 
>   11.1% ( 61.2)       <interrupt> : ahci, uhci_hcd:usb1, tifm_7xx1, sdhci:slot0,
>    9.0% ( 50.0)      S20powernowd : queue_delayed_work_on (delayed_work_timer_fn)
>    8.9% ( 49.2)            hdapsd : do_nanosleep (hrtimer_wakeup) 
>    8.7% ( 47.9)       <interrupt> : acpi 

Removing the spun down HD in the ultrabay:
> Power usage (ACPI estimate): 24.9W (3.2 hours) (long term: 27.1W,/2.9h)
(I'm not saying it costs 2W, but by then the power had gone down to about 2W)

Bringing backlight to minimum:
> Power usage (ACPI estimate): 22.0W (3.6 hours) (long term: 25.9W,/3.0h)

LCD off brings down to 22W to 17.2W, almost 5W!
In other words: LCD full bright = 24.5W, minimum bright = 22W, off = 17.2W

By now, I also have:
C3                1.3ms (81.2%)         1000 Mhz   100.0%

Unloading ipw3945 makes no difference, neither does iwpriv eth1 set_power 7
Still ast 21.9/22W

At this point, without changing anything, my power is down to 21.4W if
I don't touch the keyboard at all and let the system do as little as
possible (hdapsd has been killed too by now). I think it may be the fans.

> rmmod tg3
-> .2W maybe, 0 a best

> rmmod usb_storage libusual ehci_hcd uhci_hcd usbcore
> rmmod irtty_sir sir_dev nsc_ircc irda ohci1394 sdhci mmc_core tifm_7xx1 tifm_core
-> no clear change, still 21.4W at full idle

going to text mode turned the fan on and brought usage to 27.5W!

So, 21.4W seems like as low as I can go right now, without turning off
my LCD altogether.
This is way higher than most people, and I'm envious of Ted's 10W or
less :-/

I'm going to try his custom tbek kernel, although I know it won't really
work well for my laptop due to fglrx.

Marc
-- 
"A mouse is a device used to point at the xterm you want to type in" - A.S.R.
Microsoft is to operating systems & security ....
                                      .... what McDonalds is to gourmet cooking
Home page: http://marc.merlins.org/