1. 20 Jun, 2013 1 commit
  2. 17 Jun, 2013 1 commit
    • Klaus Aehlig's avatar
      Improve hspace shrinking strategy · 20d2476e
      Klaus Aehlig authored
      
      
      In tired allocation, hspace shrinks that resource of the instance
      next, that causes failure on most nodes. While, this is not a bad
      strategy in general, it can lead hspace into a dead end if for a large
      number of nodes a particular resource blocks any further allocation of
      policy compliant instances. So we improve the heuristics in that it
      chooses to shrink such a resource next where by shrinking only this
      resource a valid allocation can be made, if such a resource
      exists. This improves the results in some cases, while still keeping
      the computational complexity of the algorithm low.
      Signed-off-by: default avatarKlaus Aehlig <aehlig@google.com>
      Reviewed-by: default avatarMichele Tartara <mtartara@google.com>
      20d2476e
  3. 29 May, 2013 2 commits
  4. 29 Apr, 2013 1 commit
  5. 07 Feb, 2013 1 commit
  6. 05 Feb, 2013 1 commit
  7. 24 Dec, 2012 1 commit
  8. 20 Dec, 2012 1 commit
  9. 14 Dec, 2012 1 commit
  10. 04 Dec, 2012 1 commit
  11. 30 Nov, 2012 2 commits
    • Iustin Pop's avatar
      Remove read instances from our Haskell code · 139c0683
      Iustin Pop authored
      
      
      It turns out that optimising 'read' derived instances (via -O) for
      complex data types (like OpCode, or the various objects) can be slow
      to very slow. Disabling such instances results in (time make
      $all_our_haskell_binaries) large compile-time savings and also smaller
      (unstripped) binaries (by a significant amount):
      
      ghc 6.12:        time  htools sz  hconfd sz
        with read:    4m50s 12,244,694 14,927,928
        no read:      3m30s 10,234,305 12,536,745
      ghc 7.6:
        with read:   14m45s 13,694,761 15,741,755
        no read:      3m40s 11,631,373 13,245,134
      
      So let's remove these instances, since we never use read in production
      for our custom types, and even when debugging in GHCI, we can simply
      use the 'show' representation to create the types, without needing to
      actually parse from strings.
      
      Note: for the very slow ghc 7.6 compilation time, I filled a ticket
      (ghc #7450), since it is surprising(ly slow).
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichele Tartara <mtartara@google.com>
      139c0683
    • Iustin Pop's avatar
      Replace hand-coded 'live' field of OpInstanceMigrate · f9556d33
      Iustin Pop authored
      
      
      This is the last inline-written field; I've done it separately from
      the last patch due to changes being needed in HTools (field changed
      type).
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarHelga Velroyen <helgav@google.com>
      f9556d33
  12. 21 Nov, 2012 1 commit
  13. 26 Oct, 2012 1 commit
  14. 18 Oct, 2012 1 commit
  15. 15 Oct, 2012 1 commit
    • Iustin Pop's avatar
      Cleanup HTools.Types/BasicTypes imports · 01e52493
      Iustin Pop authored
      
      
      Before we reorganised the source tree, the 'Result' type was exported
      from HTools/Types.hs. This changed during the reorg, but at that time
      we didn't change the exports; instead, we kept re-exporting it from
      the old module for compatibility.
      
      In light of future changes to the Result type, let's stop this
      re-export and cleanup the imports of the other modules.
      
      One test is slightly rewritten with explicit types declaration (part
      of the values already needed one, let's make it explicit).
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
      01e52493
  16. 08 Oct, 2012 1 commit
  17. 07 Sep, 2012 1 commit
    • Iustin Pop's avatar
      Fix bug in non-mirrored instance allocation · 14b5d45f
      Iustin Pop authored
      
      
      The function `allocateOnSingle' has a bug in the calculation of the
      cluster score used for deciding which of the many target nodes to use
      in placing the instance: it uses the original node list for the score
      calculation.
      
      Due to this, since the original node list is the same for all target
      nodes, it means that basically `allocateOnSingle' returns the same
      score, no matter the target node, and hence the choosing of the node
      is arbitrary, instead of being done on the basis of the algorithm.
      
      This has gone uncaught until reported because the unittests only test
      1 allocation at a time on an empty cluster, and do not check the
      consistency of the score. I'll send separate patches on the master
      branch for adding more checks to prevent this in the future.
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarAgata Murawska <agatamurawska@google.com>
      14b5d45f
  18. 04 Sep, 2012 2 commits
  19. 28 Aug, 2012 1 commit
    • Iustin Pop's avatar
      Re-enable standard hlint warnings · 2cdaf225
      Iustin Pop authored
      Commit 5a1e31b4
      
       (Add infrastructure for, and two extra hlint rules)
      was intended to add two *extra* hlint rules, but I didn't realise at
      that time that "--hint" when first used overrides the built-in
      lints. As such, since then we were basically running with just those
      two rules, which resulted in many uncaught warnings/errors.
      
      This patch fixes that (by importing the standard lint rules in our
      custom hints file), and then goes to fix all the warnings that a
      current hlint gives me. Compared to our current style, we have just a
      few additions:
      
      - zipWithM instead of map foo . zip …
      - 'exitSuccess' instead of 'exitWith ExitSuccess'
      - more uses of '.'
      
      Additionally, we have to silence a case where hlint doesn't realise
      why we are using '\e -> const (return False (e :: IOError)' instead of
      just '\e -> return False' or even 'const (return False').
      
      One warning that is generated by hlint ("Use void") can't be fixed
      until we deprecate GHC 6.x, as only GHC 7 has the 'void' function in
      Control.Monad.
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarAgata Murawska <agatamurawska@google.com>
      2cdaf225
  20. 16 Mar, 2012 1 commit
  21. 15 Mar, 2012 6 commits
  22. 07 Mar, 2012 6 commits
  23. 29 Feb, 2012 3 commits
  24. 28 Feb, 2012 1 commit
    • René Nussbaumer's avatar
      hinfo: Adding basic skeleton based on hbal · 2922d2c5
      René Nussbaumer authored
      
      
      It prints the information which hbal prints in a nice formatted manner and of
      course without doing any actions. An example output looks like this:
      
      $ hinfo -m xen.example.com
      Loaded 4 nodes, 2 instances
      Cluster has 1 node group(s)
      Cluster coefficients:
         Field                Value Weight
         free_mem_cv     0.00195342  x1.00
         free_disk_cv    0.00000000  x1.00
         n1_cnt          0.00000000  x1.00
         reserved_mem_cv 0.00195342  x1.00
         offline_all_cnt 0.00000000  x4.00
         offline_pri_cnt 0.00000000 x16.00
         vcpu_ratio_cv   0.12500000  x1.00
         cpu_load_cv     0.50000000  x1.00
         mem_load_cv     0.50000000  x1.00
         disk_load_cv    0.00000000  x1.00
         net_load_cv     0.50000000  x1.00
         pri_tags_score  0.00000000  x2.00
      Cluster score: 1.62890685
      Signed-off-by: default avatarRené Nussbaumer <rn@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      2922d2c5
  25. 13 Feb, 2012 1 commit