Skip to content
Snippets Groups Projects
  1. Dec 30, 2010
  2. Dec 23, 2010
    • Iustin Pop's avatar
      Change the balancing function · 4715711d
      Iustin Pop authored
      
      Currently the balancing function is a modified version of the standard
      deviation (stddev divided by list length), due to historical reasons.
      
      While this works fine for small clusters, for big clusters it makes
      the balancing effect too "weak", and in some cases it refuses to
      balance correctly some clusters. It also makes the balancing behaviour
      dependant on the cluster size, which is a big no-no.
      
      Therefore we revert to the normal version of standard deviation, and
      we also rename the function to reflect what it does. The new version
      correctly balances some corner cases that the previous version didn't,
      and passes the current balancing unittests.
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarAdeodato Simo <dato@google.com>
      4715711d
    • Iustin Pop's avatar
      Move some tiered spec functionality to Cluster.hs · 949397c8
      Iustin Pop authored
      
      This splits out a bit of code from hspace.hs and moves it into its own
      function in Cluster.hs.
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarBalazs Lecz <leczb@google.com>
      949397c8
  3. Dec 20, 2010
    • Iustin Pop's avatar
      IAllocator: respect the alloc_policy for groups · 73206d0a
      Iustin Pop authored
      
      This patch changes the allocate mode to respect the alloc_policy for
      groups. It does this by changing the sort key from simply the solution
      score, to a tuple with two elements: the alloc policy (which is now an
      Ord instance) and the solution score. Also, the unallocable groups are
      filtered out in the filterMGResults phase.
      
      The patch also slightly enhances the informational message by
      including the policy in the group information, to help debugging.
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarBalazs Lecz <leczb@google.com>
      73206d0a
    • Iustin Pop's avatar
      hail: display group names in info messages · aec636b9
      Iustin Pop authored
      
      This patch switches from the group index to the group name for the
      informational messages in the hail results.
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarBalazs Lecz <leczb@google.com>
      aec636b9
    • Iustin Pop's avatar
      Change the Node.group attribute · 10ef6b4e
      Iustin Pop authored
      
      Currently, the Node.group attribute is the UUID of the group, as until
      recently Ganeti didn't export the node group properties. Since it does
      so now, we make the following changes (again apologies for a big
      patch):
      
      - we change the group attribute to be an index, similar to the way an
        Instance.pnode and snode attributes point to the parent node(s)
      - on load, we read the group.uuid attribute and we use that to lookup
        the actual group index, from previously-loaded groups info
      - this means that we now first read groups, then read nodes using the
        group info, and then read instances using the node info
      
      This patch leaves a few functions showing the group index (ugly since
      it's htools internal), will be converted later.
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarBalazs Lecz <leczb@google.com>
      10ef6b4e
  4. Dec 09, 2010
  5. Dec 01, 2010
  6. Nov 09, 2010
    • Iustin Pop's avatar
      Fix tag exclusion weight · 306cccd5
      Iustin Pop authored
      Currently, the tag exclusion metric has a weight of one, which means
      there might be cases where we won't move instances around because it
      upsets the cluster metrics. However, we do want to make a higher effort
      for cleaning up tag collisions, so we increase the weight to an
      empirically-determined value of 2.
      306cccd5
  7. Sep 03, 2010
  8. Aug 30, 2010
  9. Jul 27, 2010
  10. Jul 21, 2010
    • Iustin Pop's avatar
      Change the meaning of the N+1 fail metric · c3c7a0c1
      Iustin Pop authored
      Currently, this metric tracks the nodes failing the N+1 check. While
      this helps (in some cases) to evacuate such nodes, it's not a good
      metric since rarely it will change during a step (only at the last
      instance moving away). Therefore we replace it with the count of
      instances living on such nodes, which is much better because:
      - moving an instance away while the node is still N+1 failing will still
        reflect in the score as an optimization
      - moving the last instance causing an N+1 failure will result in a heavy
        decrease of this score, thus giving the right bonus to clear this
        status
      c3c7a0c1
    • Iustin Pop's avatar
      Introduce per-metric weights · 8a3b30ca
      Iustin Pop authored
      Currently all metrics have the same weight (we just sum them together).
      However, for the hard constraints (N+1 failures, offline nodes, etc.)
      we should handle the metrics differently based on their meaning. For
      example, an instance living on a primary offline node is worse than an
      instance having its secondary node offline, which in turn is worse than
      an instance having its secondary node failing N+1.
      
      To express this case in our code, we introduce a table of weights for
      the metrics, with which we can influence their relative importance.
      8a3b30ca
    • Iustin Pop's avatar
      Allow balancing moves to introduce N+1 errors · 2cae47e9
      Iustin Pop authored
      This patch switches the applyMove function to the extended versions of
      Node.addPri and addSec, and passes the override flag based on the state
      of the node that we're moving away from.
      2cae47e9
  11. Jul 19, 2010
  12. Jul 18, 2010
    • Iustin Pop's avatar
      Allow '+' in node list fields · 6dfa04fd
      Iustin Pop authored
      When the field list is prefixed with a plus sign, this will extend the
      default field list, instead of replacing it entirely.
      6dfa04fd
  13. May 20, 2010
    • Iustin Pop's avatar
      Add more unit tests for allocation/balance · 3fea6959
      Iustin Pop authored
      The patch adds some simple unit-tests for both the allocation function
      (we can allocate small instances on an empty cluster, we can allocate in
      tiered more starting from any size) and the balancing functions (one
      single instance is placed optimally, a full cluster plus an empty node
      can be rebalanced). The coverage has increased greatly, since this is
      the bulk of the algorithm/code.
      
      Also, the cluster tests are now being run with different options, since
      they are much slower.
      3fea6959
    • Iustin Pop's avatar
      Move two functions from hspace to Cluster.hs · 3ce8009a
      Iustin Pop authored
      This is done so we can test a longer pipeline.
      3ce8009a
    • Iustin Pop's avatar
      Make CStats instance of show · 8423f76b
      Iustin Pop authored
      This helps debugging via ghci.
      8423f76b
    • Iustin Pop's avatar
      Stop modifying names for internal computations · 3e4480e0
      Iustin Pop authored
      Currently the name used internally is modified and holds the shortened
      name of the nodes/instances. This has caused issues before, since we
      always have to strip the suffix from input data and reapply it if we
      need to send data back to Ganeti.
      
      This patch changes the code such that the names are never modified, only
      the alias, and all the internal computations can forget about the common
      suffix addition/removal.
      3e4480e0
  14. May 18, 2010
    • Iustin Pop's avatar
      Remove the noLimit values and always use limits · f4c0b8c5
      Iustin Pop authored
      This patch moves from allowing no-limits for disk/cpu ratios, and always
      use a real limit. For disk, it's simple since we use 0, which means no
      reservations for disks. For CPU, we set an (arbitrary) limit of 64 v/p,
      which should be reasonable as a default limit (it can be changed via the
      command line).
      f4c0b8c5
  15. May 04, 2010
    • Iustin Pop's avatar
      Fix hspace's KM metrics · e2436511
      Iustin Pop authored
      We returned the KM_POOL_* metrics as the final state, not as the delta
      between the final and the initial state.
      e2436511
  16. Apr 15, 2010
    • Iustin Pop's avatar
      Add a new function to compute allocation deltas · 9b8fac3d
      Iustin Pop authored
      Given two cluster states, the new function can answer the following
      questions:
      
      - how much resources currently allocated
      - how much resources finally allocated (delta from above is how much we
        can actually allocate on the cluster)
      - unallocable resources (whatever is left free after the previous step)
      9b8fac3d
    • Iustin Pop's avatar
      Introduce total vcpu tracking in CStats · 86ecce4a
      Iustin Pop authored
      We add a new field that tracks the available virtual cpus (expressed as
      node cpus times the vcpu ratio).
      86ecce4a
  17. Feb 25, 2010
  18. Feb 23, 2010
  19. Feb 22, 2010
Loading