From owner-freebsd-acpi@FreeBSD.ORG Thu Feb 24 01:19:26 2005 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5200216A4CE; Thu, 24 Feb 2005 01:19:26 +0000 (GMT) Received: from postal3.es.net (postal3.es.net [198.128.3.207]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0559C43D2D; Thu, 24 Feb 2005 01:19:26 +0000 (GMT) (envelope-from oberman@es.net) Received: from ptavv.es.net ([198.128.4.29]) by postal3.es.net (Postal Node 3) with ESMTP (SSL) id IBA74465; Wed, 23 Feb 2005 17:19:25 -0800 Received: from ptavv (localhost [127.0.0.1]) by ptavv.es.net (Tachyon Server) with ESMTP id 992A65D07; Wed, 23 Feb 2005 17:19:24 -0800 (PST) X-Mailer: exmh version 2.7.0 06/18/2004 with nmh-1.0.4 To: Nate Lawson In-reply-to: Your message of "Wed, 23 Feb 2005 11:25:52 PST." <421CD8C0.2040805@root.org> Mime-Version: 1.0 Content-Type: multipart/mixed ; boundary="==_Exmh_-5528591840" Date: Wed, 23 Feb 2005 17:19:24 -0800 From: "Kevin Oberman" Message-Id: <20050224011924.992A65D07@ptavv.es.net> X-Content-Filtered-By: Mailman/MimeDel 2.1.1 cc: acpi@freebsd.org cc: current@freebsd.org Subject: Re: patch: p4tcc and speedstep cpufreq drivers X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Feb 2005 01:19:26 -0000 This is a multipart MIME message. --==_Exmh_-5528591840 Content-Type: text/plain; charset=us-ascii > Date: Wed, 23 Feb 2005 11:25:52 -0800 > From: Nate Lawson > > Kevin Oberman wrote: > > > > Well, it all seems working, but the performance is not proportional to > > the "frequency". I am attaching the results of testing. The fisrt column > > is value of freq and the second is the transfer rate from dd to md5. > > > > FWIW, when I did have TCC working I had 31 freq_levels, but if I set the > > freq below about 200, my system freezes and requires a hard power > > cycle. I am running ULE but no PREEMPTION. The exact point at which it > > locks up is not consistent. > > Please cvsup and test. I imported a bugfixed version of p4tcc. I've > run an R32 at 50 Mhz, no problems. No joy. I set it to 262 and it was fine. The next step killed the system again. I'm also concerned that taking TCC out of automatic mode might not be a great idea, at least until things like _PSV are supported. When I do a buildkernel, buildworld or any big compile job, I need to slow down the CPU to keep the CPU form frying. It quickly jumps to 185 F. or higher if I don't. If I understand automatic TCC, it should throttle the CPU all by itself to prevent this. Between throttling and frequency adjustment I can get about 16 performance levels and I don' see a good reason for another 15. Also, the change is frequency is so non-linear that small changes often don't make sense. The first three step are fairly straight, but then things get bumpy. It looks to me like all frequency settings are not created equal. I should read the code, but what is the presidence between throttling the CPU and TCC? The increase in performance when freq is dropped from 1378 to 1350, 984 to 900, 703 to 675, 506 to 450, and 337 to 300 is clearly not what I would expect. I am attaching a spreadsheet (Excel format, but generated by Gnumeric) showing 4 runs made in single-user mode. If the graph is not showing properly, I can send it in gnumeric format. I will also attach the trivial Perl script I run to do generate the raw data. -- R. Kevin Oberman, Network Engineer Energy Sciences Network (ESnet) Ernest O. Lawrence Berkeley National Laboratory (Berkeley Lab) E-mail: oberman@es.net Phone: +1 510 486-8634 --==_Exmh_-5528591840 Content-Type: text/plain ; name="test-speed"; charset=us-ascii Content-Description: test-speed Content-Disposition: attachment; filename="test-speed" #!/usr/bin/perl $min_speed = 250; ($freq) = `sysctl dev.cpu.0.freq_levels`; @freq = split ' ', $freq; @freq = grep /\d+\/-?\d+/, @freq; foreach (@freq) {s/^(\d+).+$/$1/;} foreach (@freq) { if ($_ < $min_speed) {next;} `sysctl dev.cpu.0.freq=$_`; `dd if=/dev/zero bs=1m count=100 2>/tmp/testresult | md5`; @result = `cat /tmp/testresult`; $result = $result[2]; $result =~ /secs \((\d+) bytes\/sec/; printf "%4d %s\n", $_, $1; } # Now do it backwards (speed up) for ($i=$#freq; $i>=0; $i--) { if ($freq[$i] < $min_speed) {next;} `sysctl dev.cpu.0.freq=$freq[$i]`; `dd if=/dev/zero bs=1m count=100 2>/tmp/testresult | md5`; @result = `cat /tmp/testresult`; $result = $result[2]; $result =~ /secs \((\d+) bytes\/sec/; printf "%4d %s\n", $freq[$i], $1; } `sysctl dev.cpu.0.freq=1800`; unlink "/tmp/testresult"; exit; --==_Exmh_-5528591840--