Subject: Crusoe LongRun Support
To: None <tech-kern@netbsd.org>
From: Curt Sampson <cjs@cynic.net>
List: tech-kern
Date: 08/21/2001 18:13:46
Some (all?) Transmeta CPUs, particularly the Crusoe, include support
for LongRun, which controls power usage and temperature by dynamically
changing the current speed and core voltage of the CPU.

It's fairly cool, actually. For example, I'm currently doing a file
system dump and gzipping the output before I write it to another file on
disk. At 600 MHz (1.6 V), I use about 60% CPU on the gzip because I/O is
the limiting factor. So it's gone and detected this, and dropped the CPU
down to 500 MHz and 1.4 V, because that puts me at 96% CPU utilisation,
still enough to get the job done.

You can query the system to find out what the current settings are, and
also change the current settings to optimize for best CPU throughput or
best power savings.

I want to add suport for this to NetBSD, and I'm wondering what the
best way to do it is. FreeBSD did this by adding sysctl variables. I've
currently got a device driver and userland program for doing queries.
Which way is better? Or should I be doing something else entirely?

Keeping in mind that LongRun is also implemented on multi-user
servers (Crusoes are used in high-CPU-density server farms) as well as
more-or-less single-user notebooks, access control is vital. (It shouln't
be possible for any random user to go and slow down the system.)

cjs
-- 
Curt Sampson  <cjs@cynic.net>   +81 3 5778 0123   http://www.netbsd.org
    Don't you know, in this new Dark Age, we're all light.  --XTC