power management, ahci link power management and DragonFly

Alex Hornung ahornung at gmail.com
Mon Nov 8 03:34:33 PST 2010


first off, I apologize if I'm actually sending this twice. The first
time I sent it to kernel at dragonflybsd.org, which I think goes nowhere,
so I'm resending it to ... at lists.*.

I've been playing around today to see the our power efficiency on my
ThinkPad. I have been using acpiconf -i 0 to see the discharge rate, and
it seems we can't get below 19W. On linux and Windows I can get as low
as 10-12W.

I've set the brightness to the lowest level. I didn't enable any wifi
power management, but on linux I can't do that either since it has been
marked as broken for my card on linux (iwl3945).

I've set the P-State to be fixed at 1GHz (the lowest), since powerd
doesn't seem to work correctly; it didn't seem to scale down from 2GHz
anymore after a while on an idle system. FWIW, estd seems to do a better
job, though. In any case discussing the sense or lack thereof behind
powerd is not the subject of this mail.

I've also set the lowest C-state to C3 and according to
hw.acpi.cpu*.cx_usage, it is actually spending most of the idle time in
C3 (around 75%).

Additionally I've set the ahci link power management to aggressive. This
is the biggest problem. While it seems to save another watt or so, it
also causes a long wait for even a simple ls if the stuff isn't cached.
dmesg shows timeouts:
ahci0.0: CMD TIMEOUT state=5 slot=22
	cmd-reg 0xc00d617<ASP,ALPE,CR,FR,FRE,POD,SUD,ST>
	sactive=00400000 active=00000000 expired=00000000
	   sact=00400000     ci=00000000
ahci0.0: disk_rw: timeout

This definitely doesn't occur on linux with ahci aggressive link power
management, and would seem like quite a big issue. Anyone knows why
these timeouts occur with aggressive link power management?

I'm also wondering what we need to do to increase our power efficiency
to a Linux-like level, or at least down to 15W on this ThinkPad.

It would also be helpful if we could gather more information on why we
are so power inefficient. Can we see the number of wakeups per second
and what causes the wakeups, much like powertop on linux does?

Alex Hornung

More information about the Kernel mailing list