Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Feb 2005 17:19:24 -0800
From:      "Kevin Oberman" <oberman@es.net>
To:        Nate Lawson <nate@root.org>
Cc:        current@freebsd.org
Subject:   Re: patch: p4tcc and speedstep cpufreq drivers 
Message-ID:  <20050224011924.992A65D07@ptavv.es.net>
In-Reply-To: Your message of "Wed, 23 Feb 2005 11:25:52 PST." <421CD8C0.2040805@root.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
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 <nate@root.org>
> 
> 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--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050224011924.992A65D07>