- 17 Nov, 2011 8 commits
-
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
- 16 Nov, 2011 6 commits
-
-
Iustin Pop authored
… also do some other small style cleanups. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Agata Murawska authored
Signed-off-by:
Agata Murawska <agatamurawska@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Agata Murawska authored
Signed-off-by:
Agata Murawska <agatamurawska@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Agata Murawska authored
Signed-off-by:
Agata Murawska <agatamurawska@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Agata Murawska authored
Signed-off-by:
Agata Murawska <agatamurawska@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Agata Murawska authored
Signed-off-by:
Agata Murawska <agatamurawska@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
- 26 Oct, 2011 2 commits
-
-
Agata Murawska authored
Signed-off-by:
Agata Murawska <agatamurawska@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Agata Murawska authored
Signed-off-by:
Agata Murawska <agatamurawska@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
- 14 Oct, 2011 5 commits
-
-
Iustin Pop authored
This moves the checking of results from the allocation functions to a separate function, so that we have less code duplication. It also does a bit of simplification in the printing functions. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
The node offline/mcpu is identical to hbal's setNodesStatus, so let's move that to CLI.hs and reuse it in hspace (also, rename it and drop one 's'). Also, the check for the number of nodes is obsolete, as we compute that from the disk template. The patch does a bit of other small cleanups. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
Both iterateAlloc and tieredAlloc share the same signature, but it's not documented nor exported (needed for refactoring). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
The logic is not entirely correct—the new Query interface exports the field status, and we don't use that yet. But the new code should be more readable. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This partially undoes commit 92678b3c , more specifically it removes the Store data type and the associated code, since all Luxi arguments are now lists. Furthermore, since the qfilter field on Query is complex (it's actually a tree structure), and we don't support it, turn it into a plain () type, which always gets encoded as JSNull ('null'), so that we can remove the optional field handling from Luxi (all fields are always required). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
- 12 Oct, 2011 2 commits
-
-
Iustin Pop authored
Untill now htools did not have support for generic Query in Luxi. This patch introduces Query as a supported Luxi operation and replaces QueryNodes, QueryInstances and QueryGroups with Query. Signed-off-by:
Agata Murawska <agatamurawska@google.com> Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Agata Murawska authored
Signed-off-by:
Agata Murawska <agatamurawska@google.com> Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
- 11 Oct, 2011 2 commits
-
-
Iustin Pop authored
This was, AFAIK, never used, and complicates the output code enough that it's better to remove it. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
Iustin Pop authored
This is just moving code around. A subsequent patch will do a bit more cleanup and changing the output. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
- 07 Oct, 2011 1 commit
-
-
Michael Hanselmann authored
According to the iallocator documentation the “node-evacuate” call needs to return a list of jobs, not a list of lists of jobs. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
- 03 Oct, 2011 5 commits
-
-
Iustin Pop authored
This patch adds a few niceties to the test suite: - allows matching test groups case insensitive and emit warnings when we give test group names that don't match anything - add a new operator that is similar to assertEqual in Python: it tests for equality and emits the two values in case of error Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
Iustin Pop authored
This makes error message change from "Test 4 failed …" to "Test prop_Loader_mergeData failed", which is much more readable. It also removes the duplication of test suite names in the test.hs file. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
Iustin Pop authored
This patch replaces the current hard-coded JSON instances (all alike, just manual conversion to/from string) with auto-generated code based on Template Haskell (http://www.haskell.org/haskellwiki/Template_Haskell ). The reduction in code line is not big, as the helper module is well documented and thus overall we gain about 70 code lines; however, if we ignore comments we're in good shape, and any future addition of such data types will be much simpler and less error-prone. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
Iustin Pop authored
This changes the names for some helper functions so that future patches are touching less unrelated code. The change replaces shortened prefixes with the full type name. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
Iustin Pop authored
Utils is a bit big, let's split the JSON stuff (not all of it) into a separate module that doesn't have any other dependencies. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
- 29 Sep, 2011 6 commits
-
-
Iustin Pop authored
This is very useful for testing/benchmarking. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
Iustin Pop authored
Currently, the node pairs used for allocation are a simple [(primary, secondary)] list of tuples, as this is how they were used before the previous patch. However, for that patch, we use them separately per primary node, and we have to unpack this list right after generation. Therefore it makes sense to directly generate the list in the correct form, and remove the split from tryAlloc. This should not be slower than the previous patch, at least, possibly even faster. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
Iustin Pop authored
This patch finally enables parallelisation in instance placement. My original try for enabling this didn't work well, but it took a while (and liberal use of threadscope) to understand why. The attempt was to simply `parMap rwhnf` over allocateOnPair, however this is not good as for a 100-node cluster, this will create roughly 100*100 sparks, which is way too much: each individual spark is too small, and there are too many sparks. Furthermore, the combining of the allocateOnPair results was done single-threaded, losing even more parallelism. So we had O(n²) sparks to run in parallel, each spark of size O(1), and we combine single-threadedly a list of O(n²) length. The new algorithm does a two-stage process: we group the list of valid pairs per primary node, relying on the fact that usually the secondary nodes are somewhat balanced (it's definitely true for 'blank' cluster computations). We then run in parallel over all primary nodes, doing both the individual allocateOnPair calls *and* the concatAllocs summarisation. This leaves only the summing of the primary group results together for the main execution thread. The new numbers are: O(n) sparks, each of size O(n), and we combine single-threadedly a list of O(n) length. This translates directly into a reasonable speedup (relative numbers for allocation of 3 instances on a 120-node cluster): - original code (non-threaded): 1.00 (baseline) - first attempt (2 threads): 0.81 (20% slowdown
‼ ) - new code (non-threaded): 1.00 (no slowdown) - new code (threaded/1 thread): 1.00 - new code (2 threads): 1.65 (65% faster) We don't get a 2x speedup, because the GC time increases. Fortunately the code should scale well to more cores, so on many-core machines we should get a nice overall speedup. On a different machine with 4 cores, we get 3.29x. Signed-off-by:Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
Iustin Pop authored
This is moved outside of the concatAllocs as it will be needed in another place in the future. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
Iustin Pop authored
Originally, this data type was used both by instance allocation (1 result), and by instance relocation (many results, one per instance). As such, the field 'asSolutions' was a list, and the various code paths checked whether the length of the list matches the current mode. This is very ugly, as we can't guarantee this matching via the type system; hence the FIXME in the code. However, commit 6804faa0 removed the instance evacuation code, and thus we now always use just one allocation solution. Hence we can change the data type to a simply Maybe type, and get rid of many 'otherwise barf out' conditions. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
- 23 Sep, 2011 1 commit
-
-
Iustin Pop authored
This adds a shortened versions of the allocation policies, as writing out the whole name in the command line can become tedious. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
- 22 Sep, 2011 1 commit
-
-
Iustin Pop authored
This will be used to implement more easily 'choice' parsing of input data, without resorting to syntax (case … of Bad _ -> …). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Agata Murawska <agatamurawska@google.com>
-
- 14 Sep, 2011 1 commit
-
-
Iustin Pop authored
The tryEvac/evacuateInstance functions are no longer used in the new multi-group world order, so we remove them and change the unit-test to test the actual IAllocator function. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-