From owner-freebsd-stable@FreeBSD.ORG Sun Mar 29 11:14:19 2009 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6384A106566B; Sun, 29 Mar 2009 11:14:19 +0000 (UTC) (envelope-from kamikaze@bsdforen.de) Received: from mail.bsdforen.de (bsdforen.de [212.204.60.79]) by mx1.freebsd.org (Postfix) with ESMTP id 06B058FC0A; Sun, 29 Mar 2009 11:14:18 +0000 (UTC) (envelope-from kamikaze@bsdforen.de) Received: from mobileKamikaze.norad (unknown [88.130.212.151]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.bsdforen.de (Postfix) with ESMTP id 8D0D18A00D1; Sun, 29 Mar 2009 13:14:17 +0200 (CEST) Message-ID: <49CF49F5.6010800@bsdforen.de> Date: Sun, 29 Mar 2009 12:14:13 +0200 From: Dominic Fandrey User-Agent: Thunderbird 2.0.0.21 (X11/20090321) MIME-Version: 1.0 To: Alexander Motin References: <1238293386.00093672.1238281804@10.7.7.3> <49CF0803.1070505@FreeBSD.org> <49CF2F8D.6000905@bsdforen.de> <49CF4EB9.60108@FreeBSD.org> In-Reply-To: <49CF4EB9.60108@FreeBSD.org> X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-stable@freebsd.org Subject: Re: powerd broken X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Mar 2009 11:14:19 -0000 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 >>>> root@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 kern.cp_times: 27714 1 14994 901071 1020049 122339 0 34973 2705 1803228 kern.cp_times: 27714 1 14995 901149 1020104 122348 0 34975 2705 1803351 kern.cp_times: 27715 1 14997 901220 1020164 122363 0 34976 2705 1803468 kern.cp_times: 27716 1 14999 901295 1020220 122371 0 34977 2705 1803593 kern.cp_times: 27717 1 15002 901371 1020273 122385 0 34985 2705 1803705 kern.cp_times: 27719 1 15002 901449 1020327 122390 0 34985 2705 1803834 kern.cp_times: 27719 1 15004 901522 1020386 122398 0 34987 2705 1803958 kern.cp_times: 27720 1 15006 901599 1020440 122416 0 34987 2705 1804074 kern.cp_times: 27722 1 15006 901668 1020503 122424 0 34994 2705 1804192 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 1 0 1 79 55 7 0 2 0 127 0 0 1 70 68 17 0 4 0 118 2 0 1 95 39 16 0 5 0 116 0 0 0 77 60 9 0 5 0 123 0 0 0 88 48 8 0 2 0 126 1 0 1 79 57 14 0 6 0 118 1 0 0 88 48 12 0 5 0 120 0 0 0 80 58 12 0 6 0 119 3 0 0 82 53 13 0 3 0 122 2 0 3 85 47 11 0 7 0 120 1 0 0 81 54 8 0 3 1 124 2 0 2 69 65 13 0 7 0 117 0 0 4 73 60 8 0 4 0 126 2 0 4 81 52 12 0 8 0 119 6 0 1 81 51 22 0 4 0 113 3 0 2 78 52 11 0 5 0 118