# Lower frequency levels than supported



## drforbin (Oct 14, 2013)

I'm showing;

```
dev.cpu.0.freq: 2700
dev.cpu.0.freq_levels: 2700/18090 2000/13515 1400/9677 800/5405
```
But my top frequency is 3,700. Any ideas or pointers as what might be the problem? Linux (Slackware) shows the correct frequency.


Drforbin.


----------



## mav@ (Oct 14, 2013)

That list is obtained from ACPI. You may wish to try update your BIOS.

Another possibility is that 3,700 is a Turbo Boost frequency (that is never reported in the list) and the nominal one is as reported 2,700. But in that case I would expect the list to include also value 2,701 to allow OS control Turbo Boost. What CPU and OS version are you running?


----------



## drforbin (Oct 14, 2013)

*lower cpu freq*

Hi, thank you for your reply. I'm running a Phenom II X6. My version of FreeBSD is 9.2. I just installed it. I am overclocking but the correct frequency is used in Linux. I also added hint.p4tcc.0.disabled="1" in loader.conf and have gotten the levels to show

```
sysctl dev.cpu.0.freq_levels 
dev.cpu.0.freq_levels: 3200/-1 2700/-1 2000/-1 1400/-1
```
Still not maxed out, it should be 3,700 for the top level. I just want maximum performance.

Thanks for your help.

drforbin


----------



## drforbin (Oct 14, 2013)

*More Information*

I'm using Phenom II X6 1045T. The normal clock is 2.7 GHz and boost is 3.2Hz.

So it seems I'm getting the "normal" range from ACPI. I have the chip overclocked to 3.7 GHz water cooled, very stable. So how do I get FreeBSD to let me use these higher frequencies? Can I just turn all this stuff off for  the time being? If I have to recompile the kernel that is not a problem, I have done this many times in Linux. 

Thanks in advance for help.

Drforbin.


----------



## wblock@ (Oct 14, 2013)

On Intel processors, the turbo mode is only available when powerd(8) is running.  Is that different for AMD?


----------



## drforbin (Oct 14, 2013)

*Powerd*

I really do not know. I do currently have  powerd(8) () running.

Drforbin.


----------



## drforbin (Oct 16, 2013)

*Recompile Kernel*

Do you think recompiling the Kernel and leaving out cpufreq(4)() would allow me to run at full speed?

Thank you in advance.

Drforbin.


----------



## xibo (Oct 17, 2013)

```
dev.cpu.0.freq: 2001
dev.cpu.0.freq_levels: 2001/95000 2000/95000 1900/89224 1800/83561 1700/78011 1600/72573 1500/67246 1400/62042 1300/56932 1200/51931 1050/45439 900/38948 750/32456 600/25965 450/19474 300/12982 150/6491
dev.cpu.0.cx_supported: C1/1/1 C2/2/41
dev.cpu.0.cx_lowest: C8
```
This is from a Sandybridge Xeon with 2 GHz top frequency. 2001 indicates turbo boost.

I don't know how CPU overclocking works these days, but if it's made by some software you'll very likely not be able to use it in FreeBSD.



> On Intel processors, the turbo mode is only available when powerd(8) is running. Is that different for AMD?


It works on Intel CPUs (est(4) driver) here even without powerd(8) running.


----------



## pboehmer (Oct 17, 2013)

Just throwing this out there, but are the reported chip frequency levels pulled from the BIOS/ACPI based on values for a specific CPU ID or the actual running speed of the CPU?  You may very well be getting the overclocked speed, but only reporting the supported speeds of the CPU.

I'd imagine the only way to be sure is to run a CPU based benchmark at stock and overclocked speeds, then comparing the results.

Am I wrong to assume that the kernel will run the CPU at maximum speed unless told otherwise, i.e. powerd, etc.?


----------



## drforbin (Oct 17, 2013)

*Overclock*

The correct "overclock" rate is shown in both Linux and BIOS, but your query is correct. Are the values pulled from ACPI or actual CPU running rate? I "believe" what is happening is the values are reported to FreeBSD by ACPI and the OS throttles the CPU accordingly. So even if in the BIOS the CPU is set to run at let's say 3.7 GHz if the ACPI reports to FreeBSD the frequency levels are X than the CPU will be throttled back to those levels. Please someone correct me if I'm wrong.

What I wish to do next is remove cpufreq(4)() and I think this will server to eliminate the entire scaling infrastructure, at that point the BIOS settings should rule.

Any comments?

Drforbin.


----------



## mav@ (Oct 20, 2013)

There can be one more possibility, depending how you do the overclocking (bus, multiplier, etc): Even when overclocking enabled, BIOS may still report to FreeBSD default frequencies. But setting those may in fact mean setting overclocked one. I don't remember AMD CPU driver details, but at least for Intel ACPI BIOS just gives OS a table like: to set frequency X, write value Y to the register. FreeBSD doesn't need to know what these values mean. AFAIK they are not even officially documented.

So, as it was proposed earlier, I would recommend you to run some CPU benchmark with and without overclocking to find the answer.


----------



## drforbin (Oct 22, 2013)

*results.*

I have recompiled the kernel with cpufreq(4)() removed. I then ran `nbench`. The results were about the same as compared to the figures obtained with cpufreq() installed. I also booted into Linux and with the CPU clock rate showing 3.7 Ghz as compared to the FreeBSD figure of 2.7 GHz I retried the test running linux's version of nbench. Most tests were again about the same with STRING SORT being somewhat higher.

These figures are unreliable considering that Linux is a different platform with different CODE paths. So it seems as suggested that FreeBSD may be running at full speed and just displaying lower figures. 

I also tried running stress(1)() command and watching heat levels. On FreeBSD both tests (with and without cpufreq(4)() compiled in topped out at 52 degrees C. On Linux the topping out was 58 degrees C. Although this does suggest a higher clock rate indicated by higher heat dissipation, I do not have any throttling compiled into Linux, at least that I know of.

So maybe FreeBSD handles CPU performance better (Cool and Quiet support for example).

Any ideas, guys?


----------

