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?
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.
...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...
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?
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. 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?
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.
There's always one isn't there - and it sounds like it might be me
I'm actually the owner of an enthusiast technology publication, so as such overclocking - even on servers; is something that HAS to be done 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.
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
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.
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.