Skip to content
Snippets Groups Projects
  1. Dec 07, 2012
  2. Dec 06, 2012
  3. Dec 05, 2012
  4. Dec 04, 2012
  5. Dec 03, 2012
  6. Nov 30, 2012
    • Guido Trotter's avatar
      Change -G option description · 0ff01075
      Guido Trotter authored
      
      The new one is more consistent with the rest of the nodegroup
      terminology and more generic for use in different htools.
      
      Signed-off-by: default avatarGuido Trotter <ultrotter@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      0ff01075
    • Iustin Pop's avatar
      Optimise recursive Query filters · d277b075
      Iustin Pop authored
      
      Currently, the And and Or filters use very nice code, e.g. in case of
      OrFilter:
      
         any id <$> mapM evaluateFilter flts
      
      However, looking at the memory profiles shows that application of
      any/id to monadic values via '<$>' does not work nicely, losing the
      'early' success property. This results in too much memory being used
      for thunks in monadic sequencing.
      
      Rather than trying to add more strictness (not sure exactly how, TBH),
      switching these to explicit recursion solves the problem, since we
      take the 'early' exit problem in our hands and we are explicit about
      it.
      
      Memory usage in case of big (e.g. 1000 'Or' elements) is reduced
      significantly, and thus also the runtime.
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichele Tartara <mtartara@google.com>
      d277b075
    • Iustin Pop's avatar
      Make Query operators enforce strictness · 228ef0f2
      Iustin Pop authored
      
      Currently, the query operators (binop, etc.) create thunks, instead of
      forcing the evaluation of the simple boolean results. This results in
      higher than needed memory use.
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichele Tartara <mtartara@google.com>
      228ef0f2
    • Iustin Pop's avatar
      Fix htools/rpc-test after recent changes · 08fd383d
      Iustin Pop authored
      
      Since this program is not built normally, a few recent commits broke
      it:
      
      - 707cd3d7 (“Use exitErr instead of explicit error message and
        exitWith”) introduced wrong syntax (missing '$')
      - 29a30533 (“Remove unsafePerformIO usage”) changed the signature of
        G.Path.clusterConfFile
      - 5183e8be (“Convert query path from string errors to GanetiException”)
        changed the signature of 'getNode'
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
      08fd383d
    • 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
Loading