Great stuff. I haven't tried figuring it out on cloud computers, but even when I have root access, turbo boost often enough seems to make precise measurements difficult. On Linux, with the exception of i7z (which he mentions) and 'turbostat' (which I usually prefer: <a href="https://github.com/torvalds/linux/blob/master/tools/power/x86/turbostat/turbostat.c" rel="nofollow">https://github.com/torvalds/linux/blob/master/tools/power/x8...</a>) CPU speeds are almost always reported using the nominal speed rather than the actual speed.<p>And even those tools just report an average speed, which means the part of the program you care about might be running faster or slower than the rest. The new Haswell-EP chips even have both an additional AVX base and AVX turbo speed, and switch speed for any portion of code that uses full width vectors. As a result, his traditional solutions 2 (read the performance counters) and 3 (write a test loop) can be harder than they sound.<p>So while the reading the MSR's can help a lot to diagnose the issue and to reduce the error, if you really want reliable measurements, the "turn it off in the BIOS" option is the best choice. But even this can be harder than it sounds, as it seems some BIOS will lie and use it anyway. At least, I have one Dell Haswell machine to which I have root but not physical access, which i7z and turbostat show to be running Turbo Boost although the otherwise reliable on site admin swears he's checked several times that it's turned off in BIOS.<p>It seems like it should be possible to turn Turbo Boost on or off by _writing_ to the appropriate MSR but I haven't succeeded with this yet. Is there a trick I'm missing? Has anyone else had success doing it this way? It would be nice to be able to turn it off as part of the timing routine, and then turn it back on for normal operation after.
<i>Relatively cool: between 60 and 70 degrees Celsius.</i><p>That sounds a bit on the high end, considering that 65 is the highest my system (early i7) goes when fully loaded... but then looking at the temperature graph, it looks like they're <i>really</i> pushing them to the limits and letting thermal throttling take care of the rest - the spec for that particular model is ~80 max.<p>Since this is a VM, there's always a remote chance that they can trap the MSR reads and return whatever data they want. (Maybe it could even be used as a convert channel...?)
Remember that turbo boost increases the core clock speed but not the bus clock or the speed of devices. A 10% increase in the core clock <i>may</i> yield a 10% increase in benchmark performance, but for macrobenchmarks the effect is liable to be significantly less.