How to throttle your CPU
Basic support is in generic kernels by default. sysctl and sysutils/estd do the rest.
Contents
i386
AMD PowerNow!
  options   POWERNOW_K7
or
  options   POWERNOW_K8
accessible through e.g.
  sysctl machdep.powernow.frequency.current
  sysctl machdep.powernow.frequency.available 
  sysctl -w machdep.powernow.frequency.target=600
Intel Speedstep
  options   ENHANCED_SPEEDSTEP
accessible through e.g.
  sysctl machdep.est.frequency.current
  sysctl machdep.est.frequency.available
  sysctl -w machdep.est.frequency.target=600
speedstep-ich
Available since NetBSD 2.0
ichlpcib* at pci? dev ? function ? isa0 at ichlpcib?
accessible through
  sysctl -w machdep.speedstep_state=[0/1]
where 0 is a low state and 1 is a high state.
speedstep-smi
Available since NetBSD 4.0
piixpcib* at pci? dev ? function ? isa0 at piixpcib?
also accessible through
  sysctl -w machdep.speedstep_state=[0/1]
Transmeta longrun
- Should be activated by default
 
accessible through
  machdep.tm_longrun_mode
  machdep.tm_longrun_frequency
  machdep.tm_longrun_voltage
  machdep.tm_percentage
amd64
Cool'n'Quiet
Same procedure as with PowerNow!:
  options   POWERNOW_K8
accessible through e.g.
  sysctl machdep.powernow.frequency.current
  sysctl machdep.powernow.frequency.available 
  sysctl -w machdep.powernow.frequency.target=600
Setting up estd for automatic scaling
The estd daemon dynamically sets the frequency on SpeedStep and PowerNow!-enabled CPUs depending on current CPU-utilization. It is written for systems running NetBSD or DragonFly.
  cd /usr/pkgsrc/sysutils/estd
  make install clean
To make it start at boot-time
  cp /usr/pkg/share/examples/rc.d/estd /etc/rc.d/
  chmod +x /etc/rc.d/estd
and add to /etc/rc.conf
  estd="yes"
  estd_flags=""
then as root
  /etc/rc.d/estd restart
- Examples
 
Maximize battery lifetime by limiting CPU-frequency to 1000 MHz and switching to lower speeds fast:
  estd_flags="-d -b -M 1000"
Maximize performance by running at least at 1400MHz and switching to higher speeds real fast:
  estd_flags="-d -a -m 1400"
Alternatively, you can start estd directly from /etc/rc.local instead of rc.conf/rc.d.
More in the manual.
