From: Chris Friesen [mailto:chris.frie...@windriver.com] Sent: Thursday, July 16, 2015 8:07 AM > > On 07/15/2015 04:57 PM, Dugger, Donald D wrote: >> In re: Static CPU frequency. For modern Intel CPUs this really isn't true. >> Turbo Boost is a feature that allows certain CPUs in certain >> conditions to actually run at a higher clock rate that what is >> advertised at power on (the havoc this causes code that depends upon >> timing based upon CPU spin loops is left as an exercise for the reader >> :-) > > Reasonably recent machines have constant rates for the timestamp counter even > in the face of CPU frequency variation. Nobody should be using bare spin > loops. > >> Having said that, I think CPU frequency is a really bad metric to be >> making any kind of scheduling decisions on. A Core I7 running at 2 >> GHz is going to potentially run code faster than a Core I3 running at >> 2.2 GHz (issues of micro-architecture and cache sizes impact >> performance much more than minor variations in clock speed). If you >> really want to schedule based upon CPU capability you need to define >> an abstract metric, identify how many of these abstract units apply to >> the specific compute nodes in your cloud and do scheduling based upon >> that. There is actually work going to do just this, check out the BP: >> >> https://blueprints.launchpad.net/nova/+spec/normalized-compute-units > > I agree with the general concept, but I'm a bit concerned that the > "normalized" > units will only be accurate for the specific units being tested. Other > workloads may scale differently, especially if different CPU features are > exposed (potentially allowing for much more efficient low-level instructions). >
The idea is to run benchmark process at the start of nova compute. That process could be customized to base on: - Mega/Giga Instructions per Second (M/GIPS), - Floating-point Operations per Second (FLOPS), - mix of those, - or in general, any benchmarking algorithm, most relevant to mix of workloads run on the host. The result of benchmarking process would be a number of Normalized Compute Units (NCUs) which given host supports. It would also be possible to do benchmarking differently on different hosts. There is a backlog spec created [1] to describe the idea - I encourage everyone interested in this topic to post comments. Thanks, Andrzej [1] https://review.openstack.org/#/c/192609/ __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev