(Absent?) Thermal management on Atom-based system

I'm currently running a 9.2 kernel (via Nas4Free) on a D525-based system. With the CPU at 0% load and throttled down to 225Mhz, the CPU fan is running at full speed exhausting warm air from the system, which kind of defeats the point of using an Atom-based system (it's supposed to be passively cooled most of the time and near-silent, not with a whiny fan running full tilt 24/7). According to this bug report it's because Atoms don't support C-states, confirmed by a quick check:
Code:
$ sysctl dev.cpu |grep cx
dev.cpu.0.cx_supported: C1/1/0
dev.cpu.0.cx_lowest: C2
dev.cpu.0.cx_usage: 100.00% last 948us
(the C2 entry was me playing with rc.conf). This kind of sucks because it means I'm getting less low-power (and most of all silent) usage from a low-power Atom than from a generic desktop CPU. Does anyone know of any way to get some sort of thermal management done under FreeBSD on an Atom-based system? All I've found from web searching is other people with the same problem. The system I'm using it in definitely supports advanced power-management states, it even has front-panel LEDs to indicate the power state that it's in, but it seems like FreeBSD can't take advantage of any of them.
 
Already set at '-a adaptive -b adaptive -n adaptive' (I think that's after playing with it, I'd originally set it to 'minimum' and then tried other options when minimum seemed to have no effect). Just for reference, here's the ACPI info:
Code:
$ sysctl hw.acpi
hw.acpi.supported_sleep_state: S3 S4 S5
hw.acpi.power_button_state: S5
hw.acpi.sleep_button_state: S3
hw.acpi.lid_switch_state: NONE
hw.acpi.standby_state: NONE
hw.acpi.suspend_state: S3
hw.acpi.sleep_delay: 1
hw.acpi.s4bios: 0
hw.acpi.verbose: 0
hw.acpi.disable_on_reboot: 0
hw.acpi.handle_reboot: 0
hw.acpi.reset_video: 0
hw.acpi.cpu.cx_lowest: C3
$ sysctl machdep | grep acpi
machdep.acpi_timer_freq: 3579545
machdep.idle: acpi
machdep.idle_available: spin, mwait, hlt, acpi
machdep.acpi_root: 1023808
 
I've now tried this on another Atom-based system (D525 CPU again, just to make sure it's consistent) and get the same problem, 100% C1 state with no power management being performed. The same install on some generic Celeron (meaning a Celeron-branded modern Core2, not some old Coppermine or something) produces:
Code:
$ sysctl dev.cpu |grep cx
dev.cpu.0.cx_supported: C1/1/1 C2/2/80
dev.cpu.0.cx_lowest: C3
dev.cpu.0.cx_usage: 4.12% 95.87% last 2006us
dev.cpu.1.cx_supported: C1/1/1 C2/2/80
dev.cpu.1.cx_lowest: C3
dev.cpu.1.cx_usage: 8.53% 91.46% last 67us
and:
Code:
$ sysctl hw.acpi
hw.acpi.supported_sleep_state: S1 S3 S4 S5
hw.acpi.power_button_state: S5
hw.acpi.sleep_button_state: S1
hw.acpi.lid_switch_state: NONE
hw.acpi.standby_state: S1
hw.acpi.suspend_state: S3
hw.acpi.sleep_delay: 1
hw.acpi.s4bios: 0
hw.acpi.verbose: 0
hw.acpi.disable_on_reboot: 0
hw.acpi.handle_reboot: 1
hw.acpi.reset_video: 0
hw.acpi.cpu.cx_lowest: C3
[...]
Still no C3, but at least C2 is supported, and the CPU spends most of its time in that. It also clocks down a lot lower than the Atom, 100MHz instead of 225, and it sits at 100MHz most of the time:
Code:
dev.cpu.0.freq: 100
dev.cpu.0.freq_levels: 1100/17000 1000/15126 900/13457 800/11824 700/10346 600/8868 500/7390 400/5912 300/4434 200/2956 100/1478
This leads to the somewhat odd result that if you want quiet, low-power operation, get a Core2 and not an Atom.
 
No problem on older Atoms (390 in my case)

Code:
# sysctl dev.cpu |grep cx
dev.cpu.0.cx_supported: C1/1/0 C2/2/1 C3/3/85
dev.cpu.0.cx_lowest: C1
dev.cpu.0.cx_usage: 100.00% 0.00% 0.00% last 10015us
dev.cpu.1.cx_supported: C1/1/0
dev.cpu.1.cx_lowest: C1
dev.cpu.1.cx_usage: 100.00% last 8215us
dev.cpu.2.cx_supported: C1/1/0
dev.cpu.2.cx_lowest: C1
dev.cpu.2.cx_usage: 100.00% last 13548us
dev.cpu.3.cx_supported: C1/1/0
dev.cpu.3.cx_lowest: C1
dev.cpu.3.cx_usage: 100.00% last 13206us
# sysctl hw.acpi
hw.acpi.supported_sleep_state: S1 S3 S4 S5
hw.acpi.power_button_state: S5
hw.acpi.sleep_button_state: S1
hw.acpi.lid_switch_state: NONE
hw.acpi.standby_state: S1
hw.acpi.suspend_state: S3
hw.acpi.sleep_delay: 1
hw.acpi.s4bios: 0
hw.acpi.verbose: 0
hw.acpi.disable_on_reboot: 0
hw.acpi.handle_reboot: 0
hw.acpi.reset_video: 0
hw.acpi.cpu.cx_lowest: C1
# sysctl dev.cpu.0 |grep freq
dev.cpu.0.freq: 800
dev.cpu.0.freq_levels: 1600/-1 1400/-1 1200/-1 1000/-1 800/-1 600/-1 400/-1 200/-1
#
 
Back
Top