This document describes the suggested addition of a new node-parameter, describing the CPU speed of a node, relative to that of a normal node in the node group.
Currently, for balancing a cluster, for most resources (disk, memory),
the ratio between the amount used and the amount available is taken as
a measure of load for that resources. As
hbal tries to even out the
load in terms of these measures, larger nodes get a larger share of the
instances, even for a cluster not running at full capacity.
For for one resources, however, hardware differences are not taken into account: CPU speed. For CPU, the load is measured by the ratio of used virtual to physical CPUs on the node. Balancing this measure implicitly assumes equal speed of all CPUs.
It is proposed to add a new node parameter,
cpu_speed, that is a
floating-point number, with default value
1.0. It can be modified in the
same ways, as all other node parameters.
The cluster metric used by
htools will be changed to use the ratio
of virtual to physical cpus weighted by speed, rather than the plain
virtual-to-physical ratio. So, when balancing, nodes will be
considered as if they had physical cpus equal to
the actual number.
Finally, it should be noted that for IO load, in non-dedicated Ganeti, the
spindle_count already serves the same purpose as the newly proposed
cpu_speed. It is a parameter to measure the amount of IO a node can handle
in arbitrary units.