1. 19 Aug, 2015 7 commits
    • Merge pull request #12002 from amenonsen/9437-rebase · fd361c7f
      Make get_group run in O(n*log(n)) instead of O(n^2) by using a cache (#9437 rebase)
      Brian Coca committed
    • Merge pull request #12000 from bcoca/local_action_connect · 1b810e31
      changed local_action to alias to connection=local vs delegate_to=locahost
      Brian Coca committed
    • Merge pull request #12001 from amenonsen/10034-rebase · b1e8493e
      double the speed of loading a 10k host inventory file (#10034 rebase)
      Brian Coca committed
    • improve ansible start up time for very large inventory · b8865314
      first off, we add an oddly slow basic test of 10k item inventory
      
      Before:
      ```
      Ran 229 tests in 13.214s
      
      OK
      
      real    0m13.403s
      user    0m12.106s
      sys 0m1.155s
      ```
      
      After:
      ```
      Ran 230 tests in 21.328s
      
      OK
      
      real    0m21.516s
      user    0m20.099s
      sys 0m1.275s
      ```
      
      since that seems like a bit long for the test to add to runtime, lets profile
      
      `python -m cProfile -s time ./bin/ansible all -i test/units/inventory_test_data/huge_range --list-hosts`
      
      Before:
      ```
               1272607 function calls (1259689 primitive calls) in 8.497 seconds
      
         Ordered by: internal time
      
         ncalls  tottime  percall  cumtime  percall filename:lineno(function)
          10000    4.393    0.000    4.396    0.000 __init__.py:395(_get_host)
          20000    2.695    0.000    2.697    0.000 __init__.py:341(__append_host_to_results)
          40369    0.113    0.000    0.113    0.000 {posix.lstat}
          50006    0.102    0.000    0.153    0.000 __init__.py:1490(combine_vars)
          40008    0.089    0.000    0.202    0.000 __init__.py:1546(_load_vars_from_path)
          20195    0.088    0.000    0.088    0.000 {posix.stat}
          10011    0.087    0.000    0.087    0.000 {posix.getcwd}
      ```
      
      The top two lines are promising optimization targets
      
      - populate Inventory's host cache more in _get_host, as we are looping
        over all the groups anyways.
      
      - eliminate duplicate check of whether we've already included a host
        in the construction around __append_host_to_results we can infer
        presence of a host in the results list implies the presence of its
        name in the hostnames set, allowing us to only to the less expensive
        of the two checks
      
      After:
      ```
               1252610 function calls (1239692 primitive calls) in 1.320 seconds
      
         Ordered by: internal time
      
         ncalls  tottime  percall  cumtime  percall filename:lineno(function)
          40369    0.105    0.000    0.105    0.000 {posix.lstat}
          50006    0.094    0.000    0.141    0.000 __init__.py:1490(combine_vars)
          40008    0.081    0.000    0.184    0.000 __init__.py:1546(_load_vars_from_path)
          10011    0.080    0.000    0.080    0.000 {posix.getcwd}
          20195    0.074    0.000    0.074    0.000 {posix.stat}
          10002    0.069    0.000    0.261    0.000 __init__.py:1517(load_vars)
      ```
      Will West committed
  2. 18 Aug, 2015 13 commits
  3. 17 Aug, 2015 9 commits
  4. 16 Aug, 2015 11 commits