Dominic Fandrey wrote:
Alexander Motin wrote:
Dominic Fandrey wrote:
Alexander Motin wrote:
Dominic Fandrey wrote:
Since I updated to the 7.2 prerelease, powerd is broken.

uname -a
FreeBSD mobileKamikaze.norad 7.2-PRERELEASE FreeBSD 7.2-PRERELEASE #0:
Tue Mar 24 07:57:30 CET 2009 r...@mobilekamikaze.norad:/usr/obj/HP6510b/amd64/usr/src/sys/HP6510b
amd64

It increases the CPU frequency very aggressively in adaptive mode.
That means full speed with a system load below 1%. I have to use the
following nonsensical powerd_flags to make it work sensibly:
-a adaptive -b minimum -i 95 -r 99

The system is a Core2 Duo, if that is of any help.
Run powerd in foreground with -v option to get it's work trace. If it
reaches full speed, there must be some reason to do it.

Updated powerd indeed may behave a bit more aggressively (especially in
new hiadaptive mode, default for AC power). But it was made several
months ago and nobody have complained yet. I am personally using it on
8-CURRENT on my Core2Duo laptop every day.

# grep powerd /etc/rc.conf
powerd_enable="YES"
#powerd_flags="-a adaptive -b minimum -i 95 -r 99"
powerd_flags="-a adaptive -b minimum -v"
# rcrestart powerd powerd not running?
Starting powerd.
powerd: using sysctl for AC line status
powerd: using devd for AC line status
load  77%, current freq 2400 MHz ( 0), wanted freq 2400 MHz
load  74%, current freq 2400 MHz ( 0), wanted freq 2400 MHz
load  78%, current freq 2400 MHz ( 0), wanted freq 2400 MHz
load  79%, current freq 2400 MHz ( 0), wanted freq 2400 MHz
load  65%, current freq 2400 MHz ( 0), wanted freq 2400 MHz
load  72%, current freq 2400 MHz ( 0), wanted freq 2400 MHz
load  76%, current freq 2400 MHz ( 0), wanted freq 2400 MHz
...

The real load was between 3 and 7 % while these were recorded.

Note that I use the normal/old adaptive mode.
Reason is not in algorithm. Reason is in reporting so high load
(65-79%). Run this test please at the same conditions to understand
what's going on there:

sysctl kern.cp_times && sleep 1 && \
sysctl kern.cp_times && sleep 1 && \
sysctl kern.cp_times && sleep 1 && \
sysctl kern.cp_times


Measurings done with cpu speed set to 800MHz with ~6% CPU load.

# while sleep 1; do sysctl kern.cp_times; done
kern.cp_times: 27709 1 14989 900764 1019830 122302 0 34956 2705 1802746
kern.cp_times: 27711 1 14989 900835 1019891 122308 0 34959 2705 1802871
kern.cp_times: 27711 1 14991 900914 1019944 122316 0 34960 2705 1802996
kern.cp_times: 27712 1 14993 900992 1019997 122328 0 34966 2705 1803112

A more convinient output:
# oldtimes=$(sysctl -n kern.cp_times); while sleep 1; do times=$(sysctl -n 
kern.cp_times); for time in $times; do printf "%8s" $(($time - ${oldtimes%% 
*})); oldtimes=${oldtimes#* }; done; echo; oldtimes=$times; done
       0       0       3      66      64      10       0       3       0     121
       1       0       3      78      56       7       0       8       0     122
       1       0       4      64      68      23       0       4       0     111
       2       0       2      85      56       7       0      12       0     126

It means that one of your CPUs spent most of it's time in interrupt processing and so far from idle. What does `top -P` shows you? Where have you seen that ~6% CPU load?

--
Alexander Motin
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"

Reply via email to