acpi_thorttle and cpufreq/ichss questions

Tijl Coosemans tijl at ulyssis.org
Wed Sep 28 12:23:52 PDT 2005


On Wednesday 28 September 2005 14:49, Emanuel Strobl wrote:
> my laptop (PIII LV) runs fine with cpufreq and ichss:
>
> dev.ichss.0.%desc: SpeedStep ICH
> dev.ichss.0.%driver: ichss
> dev.ichss.0.%parent: cpu0
> dev.ichss.0.freq_settings: 794/-1 497/-1
>
> If I understand the output correctly i have two SpeedSteps, the full
> 800MHz (with higher voltage) and 500MHz.

Correct.

> But now I also have acpi_throttle (if I don't disable it
> in /boot/loader.conf):
>
> dev.acpi_throttle.0.%desc: ACPI CPU Throttling
> dev.acpi_throttle.0.%driver: acpi_throttle
> dev.acpi_throttle.0.%parent: cpu0
> dev.acpi_throttle.0.freq_settings: 10000/-1 8750/-1 7500/-1 6250/-1
> 5000/-1 3750/-1 2500/-1 1250/-1
>
> What do these values tell me? I think that are divisors, but how can
> I see which one is used?

These are percentage values. 10000 is 100.00%, 8750 is 87.50% etc. 
Currently there doesn't seem to be a way to know the current setting of 
a specific cpufreq driver. You could however derive it from 
dev.cpu.0.freq.

> Can I constrain the divisors, lets say I want to have only 10000,
> 7500 and 5000? (I know I can limit the lowest frequency cpufreq may
> use with "debug.cpufreq.lowest=310" but then I don't know if it
> throttles the 800MHz mode (thus using high core voltage) or if it
> throttles the power saving 500MHz mode)

Cpufreq will not throttle 800MHz below 500MHz. For example, 800*50% 
should be missing from dev.cpu.0.freq_levels. 

> And what does this tell me:
>
> hw.acpi.cpu.cx_supported: C1/0 C2/10 C3/85
> hw.acpi.cpu.cx_lowest: C1
> hw.acpi.cpu.cx_usage: 100.00% 0.00% 0.00%

This is something different entirely. Cx states are CPU power states 
used when the CPU is idle. The higher, the less power it consumes, but 
the longer it takes to return from that state. I don't know what the 
exact differences are, but C1 is probably a simple halt instruction, 
whereas C2 and C3 probably also disable things like caches.

I suppose hw.acpi.cpu.cx_lowest allows you to set the lowest Cx state 
the OS (scheduler) should use, but I haven't experimented with this 
myself yet because of errors in my laptop's bios...


More information about the freebsd-questions mailing list