# Possible  to override the speed detection from HPE X3421 Micro Server BIOS ?



## Paul-LKW (Mar 20, 2019)

Hi all:
I just buy a new HPE GEN 10 Micro Server X3421, the AMD opteron X3421 APU, Speed is from 2.1GHz to 3.4GHz however I noticed the BIOS showing it is running from 1.4GHz to 2.1GHz and currently running at 21Ghz already (a bug and will inform HPE too).
Now when I issue
`sysctl hw.cpu.0.freq_levels`
I get

```
dev.cpu.0.freq_levels: 2100/5036 1800/3650 1400/2428
```
it is apparently missing the value 3400/xxxx or 2101 so I could not have any benefit to gain.
if I issue
`sysctl hw.cpu.0.freq`
I get

```
hw.cpu0freq: 1400
```
It seems it is running at 1.4GHz only (very unhappy)

So, my question is does it could be hard code the value to /etc/sysctl.conf to include 3400/xxxx or 2101/xxxx ?

BR,
Paul.LKW


----------



## D-FENS (Mar 20, 2019)

The value freq_levels refers to the power-savings level your CPU supports and not the actual frequency the CPU is running at real-time.
These are levels, not exact frequencies.
And also, the "freq" value means not exact frequency fut a frequency range, if I recall correctly.

Use this command to see what frequency your CPU booted at:

```
dmesg | grep MHz
```

The value 1400 means probably merely that your CPU is idle and its frequency is scaled down. Put some load on it and the freq will probably change.


----------



## Paul-LKW (Mar 20, 2019)

```
# dmesg | grep MHz
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
CPU: AMD Opteron(tm) X3421 APU                       (2096.11-MHz K8-class CPU)
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
CPU: AMD Opteron(tm) X3421 APU                       (2096.11-MHz K8-class CPU)
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
CPU: AMD Opteron(tm) X3421 APU                       (2096.11-MHz K8-class CPU)
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
CPU: AMD Opteron(tm) X3421 APU                       (2096.11-MHz K8-class CPU)
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
CPU: AMD Opteron(tm) X3421 APU                       (2096.11-MHz K8-class CPU)
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
CPU: AMD Opteron(tm) X3421 APU                       (2096.11-MHz K8-class CPU)
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
```
seems not the case as I do not have 6 cores CPU, X3421 is just a 4 cores APU !



roccobaroccoSC said:


> The value 1400 means probably merely that your CPU is idle and its frequency is scaled down. Put some load on it and the freq will probably change.


No, even I make a kernel compile the value of 1400 still the same, but if I make a custom change with sysctl dev.cpu.0.freq=2100 it will see appearance the screen compiler jump much faster.


----------



## D-FENS (Mar 20, 2019)

The fact that it's shown 6 times in dmesg does not mean it detects 6 cores. It simply shows the type of CPU in the log, apparently multiple times the same entry but that's fine for a log.
Most importantly: the system detected your CPU at 2.1 GHz when booting, so you don't have to worry about it being at 1.4 GHz.

The figure 3.4 GHz may relate to turbo-boost, which means that your CPU frequency could be increased up to 3.4 GHz for a short time but this usually does not last long due to heat and the frequency drops down again. From my perspective your CPU is fine.
Unless you want to overclock it, I would just leave it with that.

Your CPU frequency is not static, it jumps up and down depending on the work load and the temperature and that's how it is supposed to be.


----------



## malavon (Mar 20, 2019)

Paul-LKW I'm pretty sure your concern is correct.
I did some research and your CPU should indeed run at 2.1 Ghz base, although (bios) power saving might indeed have set it to a lower frequency.
The 2101 value you're expecting to see for the turbo value, will only show up when you're running powerd, which I suspect you're not.

See if a `service powerd onestart` fixes your issue and if so, enable it at boot time with `sysrc powerd_enable=YES`.
There's also a sysutils/powerdxx but that one is still on my to-do list so I haven't tested it yet.


----------



## Paul-LKW (Mar 22, 2019)

Thanks for all your reply first .


roccobaroccoSC said:


> Your CPU frequency is not static, it jumps up and down depending on the work load and the temperature and that's how it is supposed to be.



Yes, it should be theoretically to be that but unfortunately it is not !!


----------



## Paul-LKW (Mar 22, 2019)

malavon said:


> Paul-LKW I'm pretty sure your concern is correct.
> I did some research and your CPU should indeed run at 2.1 Ghz base, although (bios) power saving might indeed have set it to a lower frequency.
> The 2101 value you're expecting to see for the turbo value, will only show up when you're running powerd, which I suspect you're not.
> 
> ...



I just followed your suggestion and it worked as expected the working Freq. is jumping according to work load now.
However the turbo value as AMD announced still not show the most value is still only 2.1GHz, ie. it is working from 1.4GHz to 2.1GHz now.
It is a step ahead already


----------



## malavon (Mar 22, 2019)

If your `sysctl dev.cpu.0.freq_levels` shows 2101 everything is working as expected. 
Your frequency won't go beyond 2101 either, but that means it's in turbo mode and exact frequency is unknown.
Or at least that's what I always read. If someone knows this to be wrong, please speak up


----------



## Paul-LKW (Mar 22, 2019)

malavon said:


> If your `sysctl dev.cpu.0.freq_levels` shows 2101 everything is working as expected.



No, it only shows
# sysctl dev.cpu.0.freq_levels
dev.cpu.0.freq_levels: 2100/5036 1800/3650 1400/2428

I already report this bug to HPE as I am still have warranty and her side is check the case.

Many thanks for your kindly hand.


----------



## malavon (Mar 22, 2019)

I'm a bit at a loss here then. Does this work when booting another OS (e.g. from USB)?
There might be some BIOS setting to change, maybe Turbo is disabled right now.


----------



## Paul-LKW (Mar 23, 2019)

Yes, if the OS is Windows 10 and CPUz can see the Turbo speed with 3.4GHz
However it is an issue from HPE BIOS the Turbo speed could not reach 3.4GHz it only shows the Max. value of 2.1GHz, please see below of the BIOS


----------



## PMc (Mar 23, 2019)

Do You have sysutils/dmidecode installed? This is where one could see the values reported from BIOS; here at mine it looks like:

```
Processor Information
        Family: Core i5
        Manufacturer: Intel
        Version: Intel(R) Core(TM) i5-3570T CPU @ 2.30GHz
        Voltage: 1.0 V
        External Clock: 96 MHz
        Max Speed: 3800 MHz
        Current Speed: 2220 MHz
```

The Max speed is rarely visible at other places, because it is a theoretical value which -in most cases- cannot be reached practically.


----------



## Paul-LKW (Mar 23, 2019)

PMc said:


> Do You have sysutils/dmidecode installed? This is where one could see the values reported from BIOS; here at mine it looks like:
> 
> ```
> Processor Information
> ...



So, does your Max Speed: 3800MHz is the Turbo Speed ?
For my case on the below Max Speed: 2100MHz is surely not the Turbo Value !!!

Processor Information
        Socket Designation: P0
        Type: Central Processor
        Family: Opteron X3000
        Manufacturer: AuthenticAMD
        ID: FF FB 8B 17 01 0F 66 00
        Signature: Family 11, Model 15, Stepping 15
        Flags:
                FPU (Floating-point unit on-chip)
                CX8 (CMPXCHG8 instruction supported)
                APIC (On-chip APIC hardware supported)
                SEP (Fast system call)
                PSE-36 (36-bit page size extension)
                PSN (Processor serial number present and enabled)
                DS (Debug store)
                ACPI (ACPI supported)
        Version: AMD Opteron(tm) X3421 APU
        Voltage: 1.0 V
        External Clock: 100 MHz
*Max Speed: 2100 MHz*
*Current Speed: 2100 MHz*
        Status: Populated, Enabled
        Upgrade: None
        L1 Cache Handle: 0x001B
        L2 Cache Handle: 0x001C
        L3 Cache Handle: Not Provided
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified
        Core Count: 4
        Core Enabled: 4
        Thread Count: 4
        Characteristics:
                64-bit capable


----------



## PMc (Mar 23, 2019)

Paul-LKW said:


> So, does your Max Speed: 3800MHz is the Turbo Speed ?
> For my case on the below Max Speed: 2100MHz is surely not the Turbo Value !!!



Ah, I see. These values come from BIOS/DMI, and here indeed makes sense to discuss with the customer-support, as they cannot easily put the blame on the OS.  May they figure out what they are doing here.
(I tried to find some solid technical spec for Your chip on the internet, but there is none - we only have the marketing stance that talks about 3400.)

And no, 3800 is actually not my turbo value. My turbo value is 3300; 3800 is what the processor could do if it weren't locked down to 3300 and marketed as a low-power chip. The non-low-power version would peak at 3800, and the low-power is the same silicon, those ones selected for best efficiency. But that's part of Intel marketing policy, I dont know how AMD does this.


----------



## Paul-LKW (Apr 2, 2019)

HPE replied me with the following..........:


The ability of the server processor to be on turbo boost depends on the requests from the operating system  ,
AMD Opteron™ X3421 Processor (2.1-3.4GHz) simple means that the server has the capability to go till 3.4 Ghz when required by the OS.

and when I report the issue to HPE I also tried to install Windows 10 and use CPUz to test in parallel and get the below outcome






and also tried CentOS,






so it seems the issue only occurring in *nix and the problem still on FreeBSD itself.


----------



## Paul-LKW (Apr 8, 2019)

Hi All:
I just want to add a bug report about this case for Freebsd but when I login I always get below error messge! Does Bug Report need special account other than the Forum one?

The login or password you entered is not valid.


----------



## D-FENS (Apr 8, 2019)

You need a separate account for the bug tracking system. The forum account cannot be used there.


----------



## D-FENS (Apr 8, 2019)

Paul-LKW said:


> Hi All:
> I just want to add a bug report about this case for Freebsd but when I login I always get below error messge! Does Bug Report need special account other than the Forum one?
> 
> The login or password you entered is not valid.


I still think it is a misunderstanding on your part of what those values mean. Keep in mind that the values are NOT showing any real time measurement of what frequency your CPU is running at! They have the meaning of frequency levels, which should be treated as just labels.

See here: https://wiki.freebsd.org/TuningPowerConsumption


> ACPI may report extra performance level with frequency 1MHz above the nominal to control Intel TurboBoost operation. For example, on Core i7-870 you may see:
> dev.cpu.0.freq_levels: 2934/106000 2933/95000 2800/82000 ...
> 
> , where value 2933 means 2.93GHz, *but 2934, depending on situation, means 3.2-3.6GHz*.



If you insist on reporting a bug, go ahead. But if so, the bug is in lack of tools to measure the CPU frequency in real-time more than not actually working at turbo-boost speeds.

What is your concern? Is your machine too slow for an operation you want it to do? Or is it just that you expect to see 3.4 GHz and aren't?

There is a very simple thing you could do. Formulate a task for your PC, for example a benchmark that measures computational speed in GFLOP/s. Then run the program on Windows and on FreeBSD and see for yourself if there is a difference. That's what would show you the *real* CPU speed.


----------



## Paul-LKW (Apr 8, 2019)

roccobaroccoSC said:


> ACPI may report extra performance level with frequency 1MHz above the nominal to control Intel TurboBoost operation. For example, on Core i7-870 you may see:
> dev.cpu.0.freq_levels: 2934/106000 2933/95000 2800/82000 ...
> 
> , where value 2933 means 2.93GHz, *but 2934, depending on situation, means 3.2-3.6GHz*.



Yes, as your mentioning if I could see the CPU has dev.cpu.0.freq_levels: 2934/106000 2933/95000 2800/82000 ... (your mentioned 2934 is the Turbo boost level already)
the diff between 2934 and 2933, I know that point but in my case it is not, I even could not see what 2101 and 2100, It just run at 2100 and because the dev.cpu.0.freq_levels do not has 2101 values it means the OS (FreeBSD) never know this CPU has Turbo boost feature and that is my point !

Remark: Linux also use the "1" frequency to notice the OS the CPU Turbo Boost feature.


----------



## D-FENS (Apr 9, 2019)

Then go ahead and create a bug report. It's interesting how can Windows detect the turbo boost capability if the BIOS does not advertise it.
But also, doing a benchmark will show you exactly how much processing power do you have in the real world. You could compare benchmark results on Windows and FreeBSD and that would be the truth. Not some number displayed in a log file.


----------



## PMc (Apr 9, 2019)

It is certainly alright to create a bug report, so that the matter is on record. 
I think this CPU does not use the usual way to report it's turbo capability up to the OS, so it goes undetected in Linux also. And that's a matter "too technical" for customer support people, so they resort to the usual blame-pushing instead. (AMD might even have put a specific device driver into Windows, that knows this CPU.)
Intel has nicely provided us with an analysis tool where you can see at which frequency the cores are working in realtime and how much they use turbo (sysutils/intel-pcm). I am not aware of a similar tool for AMD, but then, I don't use these myself.


----------

