VMware Cloud Community
jimxms
Contributor
Contributor

CPU Speed incorrectly detected

Hi Guys,

I've just installed ESXi on our new server and noticed that it seems to be incorrectly detecting the CPU speed.

The CPU is an Intel Core i7 965 that has a stock speed of 3.2GHZ, but has been 'overclocked' to 4GHZ in the BIOS. A normal installation of Windows (direct on the hardware) correctly shows the CPU running as 4000Mhz in tools like CPU-Z, but on installing ESXi and running Windows in a virtual machine, it shows up as 3207Mhz. Its almost like ESX is detecting the CPU for the speed it 'thinks' it is, rather than the actual speed.

Anyone else noticed this?

0 Kudos
8 Replies
RParker
Immortal
Immortal

The CPU is an Intel Core i7 965 that has a stock speed of 3.2GHZ, but has been 'overclocked' to 4GHZ in the BIOS. A normal installation of Windows (direct on the hardware) correctly shows the CPU running as 4000Mhz in tools like CPU-Z, but on installing ESXi and running Windows in a virtual machine, it shows up as 3207Mhz. Its almost like ESX is detecting the CPU for the speed it 'thinks' it is, rather than the actual speed.

2 things here. 1) you seem to be using a white box, so it's probably not a supported system. Also the i7 isn't supported either.

2) ESX and any program will ALWAYS detect the CPU by model / serial number not ACTUAL speed. Overclocking a CPU isn't a good idea. so that's the reason why your VM doesn't detect the speed, it's reading the value of the CPU speed from the BIOS, not benchmarking the speed.

0 Kudos
nick_couchman
Immortal
Immortal

...which does not mean that the CPUs won't operate at the increased speed, just that ESXi sees the CPU at the speed at which it was designed to operate, not the speed at which you're operating it. You still may get the improved CPU speed out of it.

Also, many modern operating systems ignore many of the BIOS settings altogether. For example, we have systems where we've disabled the IDE controller in the BIOS, but in Windows 2000 or Linux, it still shows up. Back in the days when BIOSes had 4GB hard drive size limitations, this was very helpful if you had a larger hard drive, as you could put your Linux /boot partition within the first 4GB, boot Linux, and still see the rest of the disk once Linux was up and running. Windows operating systems of the time (95 and 98 in particular) required extra software provided by the hard drive manufacturers in order to partition the disk correctly. All that to say that operating systems don't always pay attention to the BIOS settings, and sometimes there's a good reason for it.

It's also possible that ESXi really is running the CPU at the speed at which it's supposed to run instead of the overclocked speed - in which case it's probably intentional. ESX(i) is focused on stability and performance, and overclocking often (not always) reduces stability in one form or another in favor of performance. Sorry...

0 Kudos
jimxms
Contributor
Contributor

Thanks for the reply RParker.

1) You mention that the i7 isn't supported? Does this mean that there are issues that I should be aware of, or simply no official testing has been performed yet?

2) The speed in the BIOS is 4.00Ghz as the i7 965 is effectively an 'unlocked' CPU that can be run at higher speeds by increasing the CPU multiplier. I'm just intruiged as to why ESX is blindly guessing the CPU speed as I would imagine that there are some servers out there that are at the other end of the scale and are underclocked to reduce power/increase stability. What would happen in this instance?

0 Kudos
Dave_Mishchenko
Immortal
Immortal

Welcome to the VMware Community formus. I think you may be the first to post a question in the forums about ESXi on an overclocked CPU. Smiley Happy What does the CPU speed show on the summary page in the VI client for the host and have you run a CPU speed test within the VM or are you just looking at system info?

0 Kudos
nick_couchman
Immortal
Immortal

1) Probably means that no official testing has been performed. It may also mean that you'll run into some PSODs or something like that, and it's also possible that there are features on the i7 that aren't supported by ESXi.

2)The VMKernel probably reads some information off the CPU that is stored in the CPU itself. You can find similar information in Linux by doing cat /proc/cpuinfo, which lists the CPU model, designed speed, etc. That information is present in the CPU (or at least in the system BIOS based on CPU serial number or model number) and the O/S can find it.

0 Kudos
jimxms
Contributor
Contributor

There's always one isn't there - and it sounds like it might be me Smiley Happy

I'm actually the owner of an enthusiast technology publication, so as such overclocking - even on servers; is something that HAS to be done Smiley Wink We currently run two Windows 2k3 Servers - both of which are Overclocked from 2.4ghz to 3.8Ghz and have been running stable for the past 2 years. The i7 965 is the latest addition to our mini-farm and with 12GB ram in it we thought we should give ESX a try :smileysilly:

To answer some of your questions, at the ESX console it mentions the CPU as being "Intel blah bha @ 3.2Ghz". This was somewhat expected as you rightly said it is read directly from the CPU and is similar to the what procinfo and Windows device manager would show.

However, I was quite surprised to see the Summary tab in the Infrastructure client reading 4x 3.207Ghz and also when provisioning CPU resources, the maximum available Mhz was ~1200Mhz. I also installed CPU-Z from within a virtual machine running Windows and that also reported the CPU speed as 3.207GHz

I know most people who use ESX probably don't overclock and i'm certainly not here to cause a stir, I'm just the inquisitive type.

0 Kudos
iwienand
Enthusiast
Enthusiast

Interesting ... I think the clue is the i7 processor here.

vmkernel calculates the CPU speed at boot using the timestamp counter register (TSC) embedded in the processor and seeing how many cycles that increases over a given period.

If you check out the processor manual () in 18.20.5 it says

The TSC, IA32_MPERF, and IA32_FIXED_CTR2 operate at the same, maximum-

resolved frequency of the platform, which is equal to the product of scalable bus

frequency and maximum resolved bus ratio.then later

• If XE operation is disabled, the maximum resolved bus ratio can be read in

MSR_PLATFORM_ID. It corresponds to the maximum qualified frequency.

• IF XE operation is enabled, the maximum resolved bus ratio is given in

MSR_PERF_STAT, it corresponds to the maximum XE operation

frequency configured by BIOS.

XE operation of an Intel 64 processor is implementation specific. XE operation can be

enabled only by BIOS. If MSR_PERF_STAT is set, XE operation is enabled. The

MSR_PERF_STAT field is read-only.

What this is saying is that the TSC isn't incrementing based on the core clock frequency of the processor, but calculated from the from the "(scalable bus freqeuncy) x (maximum resolved bus ratio)". It also says if XE mode is disabled (I think that has to do with the Extreme models), the maximum resolved bus ratio is fixed and corresponds to the maximum qualified frequency - i.e. the frequency written on the box you bought it in Smiley Happy

So, maybe your BIOS has some options that can turn on XE mode and make the TSC run faster - we should then detect a higher speed.

Your tool on Windows is probably not using the TSC to measure the processor frequency, but a more fine-grained timer. I'd say you see the 3.2Ghz when running your CPU speed tool inside a VM because the monitor is also emulating based on the TSC counter.

This is kind of theoretical - it only relates to methods software can use to guess and report processor speed. If you run a benchmark that is actually doing work, I bet you'd see it run faster with overclocking on.

0 Kudos
illustre
Contributor
Contributor

Hi,

I have two system running ESXi 4.

Both are on a P6T Deluxe V2 motherboard and i7 CPU 940 and i7 CPU 975.

Overclocking is not detected by ESXi 4 on bios 0610.

Reverting to 0504 solved the issue.

0 Kudos