From owner-freebsd-acpi@FreeBSD.ORG Fri Feb 8 06:17:42 2008 Return-Path: Delivered-To: acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1D89E16A46E for ; Fri, 8 Feb 2008 06:17:42 +0000 (UTC) (envelope-from nate@root.org) Received: from root.org (root.org [67.118.192.226]) by mx1.freebsd.org (Postfix) with ESMTP id 07F2C13C45B for ; Fri, 8 Feb 2008 06:17:41 +0000 (UTC) (envelope-from nate@root.org) Received: (qmail 48599 invoked from network); 8 Feb 2008 06:17:43 -0000 Received: from adsl-71-141-98-131.dsl.snfc21.pacbell.net (HELO ?192.168.1.77?) (nate-mail@71.141.98.131) by root.org with ESMTPA; 8 Feb 2008 06:17:43 -0000 Message-ID: <47ABF402.7030904@root.org> Date: Thu, 07 Feb 2008 22:17:38 -0800 From: Nate Lawson User-Agent: Thunderbird 2.0.0.9 (Windows/20071031) MIME-Version: 1.0 To: Kevin Oberman References: <20080208045605.15C874500E@ptavv.es.net> In-Reply-To: <20080208045605.15C874500E@ptavv.es.net> X-Enigmail-Version: 0.95.6 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: acpi@freebsd.org, Hajimu UMEMOTO , "Alexandre \"Sunny\" Kovalenko" Subject: Re: [RFC] Patch to enable temperature ceiling in powerd X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Feb 2008 06:17:42 -0000 Kevin Oberman wrote: >> From: "Alexandre \"Sunny\" Kovalenko" >> >> On Fri, 2008-02-08 at 00:50 +0900, Hajimu UMEMOTO wrote: >>>>>>>> On Wed, 30 Jan 2008 17:56:19 -0500 >>>>>>>> "Alexandre \"Sunny\" Kovalenko" said: >>> alex.kovalenko> Some time ago I have put together patch for powerd, which allows user to >>> alex.kovalenko> specify the temperature threshold at which powerd will lower CPU >>> alex.kovalenko> frequency no matter what the load was at the time. I recently had to >>> alex.kovalenko> adapt it to the 7.0-PRERELEASE for someone with the overheating laptop, >>> alex.kovalenko> which got me to think that it might be useful for someone else yet. >>> >>> alex.kovalenko> Basic idea is fairly simple -- check temperature in TZ0 and, if it has >>> alex.kovalenko> reached certain value, either override frequency with the lowest >>> alex.kovalenko> available (in the case of 'max' setting) or change idle time to 100% and >>> alex.kovalenko> let adaptive algorithm decrease frequency gradually. >>> >>> alex.kovalenko> I imagine it also could be poor man's substitute for the low noise >>> alex.kovalenko> acoustic policy ;) >>> >>> alex.kovalenko> If there is an interest, I will go ahead and submit a PR, otherwise it >>> alex.kovalenko> will live in the mail archives for someone to find. Any comments, >>> alex.kovalenko> suggestions or criticisms are welcome. >>> >>> alex.kovalenko> Temperature threshold (in Celsius) could be set by means of '-T' command >>> alex.kovalenko> line option (as in '-T 60'). >>> >>> Our kernel has passive cooling feature, already. Is it not enough for >>> you? >> I must have missed it somehow, if you could, please, point me in the >> right direction I will really appreciate it. > > When the temperature reaches hw.acpi.thermal.tz0._PSV, the system will > slow down until the CPU drops to a level below the _PSV value. The > operation, if enabled, is under the control of BIOS (and/or the EC) and > typically runs with substantial hysteresis, but is usually adequate for > keeping the CPU temperature to a safe point. > > My Pentium-M 2GHz has a value of 94.5C for _PSV. This may seem very > high, but the maximum "safe" operating temperature for the CPU is 100C, > so it is designed for pretty high temperatures. Quiescent temperature > runs about 51C and, during a CPU intensive operation such as a big build > (e.g. make -j2 buildworld) will rise to near 80C. > > Before I blew two years of dust out of the heat sinks, I was seeing > about 60C quiescent and about 95 during CPU intensive operations. > Passive cooling was kicking in then and the temperature never went > higher (although the build took longer). You can override the _PSV value by setting: hw.acpi.thermal.user_override=1 Then: hw.acpi.thermal.tz0._PSV=70C This will maintain a lower temperature. Note that user_override is potentially a bit dangerous because there is no sanity checking of the value you set. -- Nate