- Jul 09, 2009
-
-
Iustin Pop authored
Currently, the tryAlloc and tryReloc function return a list with all the results, both failures and successes. This is fine for hail, which does one round of allocations, but is not so good for hspace, which does iterative rounds; since at each (successful) step we only take the best solution, it means that we're using lots of heap space to compute and store node lists which are thrown away at the end of the step. This patch changes these two functions and their callers in hail/hspace to only return the best solution, and error/success counters. This allows hspace to run in a much smaller space, and reduces GC cost greatly. Overall, it is a cleanup, as hail/hspace did a lot of work to chose this best solution, whereas now it's automatically promoted within Cluster.concatAllocs.
-
- Jul 08, 2009
-
-
Iustin Pop authored
Currently the Cluster.AllocSolution type is defined as a list of ‘(OpResult Node.list, …)’ and the results for applyMove are defined as ‘(OpResult Node.List, …)’. Both these means that the failure/success indication is hidden in the first elements of this tuple, which makes is harder to add other elements depending on the success/failure (like the score for the new node list). This patch moves the OpResult to outside of the tuple, in effect making all these ‘OpResult (…)’ which makes the internal tuple elements consistent. The patch is affecting the applyMove, tryAlloc and tryRealloc functions, and only briefly the hail and hspace programs.
-
- Jul 07, 2009
-
-
Iustin Pop authored
Currently many of the exit and warning conditions mistakenly display error messages on stdout, which makes parsing the output of programs harder. This patch attempts to fix such occurrences.
-
- Jul 06, 2009
-
-
Iustin Pop authored
This big patch cleans up the code per hlint indications. Many removals of extra parentheses, replacements of concat . map with concabtMap, extra dollar signs, eta reductions, etc. were performed. The code still compiles and passes a couple of manual tests on sample files. The individual changes are also small enough as to be visually easy to confirm.
-
- Jul 05, 2009
-
-
Iustin Pop authored
Currently the allocation/move operations workflow return ‘Maybe a’, which is very convenient but loses all details about the failure mode. This patch introduces a new data type which encodes the specific failure mode. It is not yet used correctly (e.g. all node operations result in FailN1), but the workflow is updated. Most of the changes are in the hail/hspace tools, the library code required only trivial adjustments.
-
- Jun 11, 2009
-
-
Iustin Pop authored
This removes some unused functions and imports to cleanup the warnings.
-
Iustin Pop authored
In a few places (e.g. tryRead or any printf call) it's a little bit hard to add the correct type signatures, but in the it is possible to fix these warnings (which can bite one in subtle cases).
-
- Jun 01, 2009
-
-
Iustin Pop authored
Currently tryAlloc/tryReloc do not return the new instance, as this is not needed for IAllocator alloc/reloc requests. However, for computing the space, the new instance is useful, so we modify these functions to return this information too. The patch also improves hspace to have (with default parameters) a parseable output.
-
Iustin Pop authored
This doc-patch adds copyright and license information to (hopefully) all needed files.
-
Iustin Pop authored
These are generic enough to be used from multiple places, they belong better in Cluster.hs than in the hail source.
-
Iustin Pop authored
These two will be more generic than now, and belong somewhere else - Loader.hs is a generic module for data loading, thus we move them there.
-
- May 27, 2009
-
-
Iustin Pop authored
This is a first step towards full datatype renaming. That requires more changes, so at first we only want to document clearly what is a node index, what is an instance index, and what is a plain Int.
-
- May 26, 2009
-
-
Iustin Pop authored
This patch makes the Types module a base module, and Node/Instance ones import it, from the previous (opposite) situation. This will allow in the future to use newtypes for the index and name types.
-
- May 25, 2009
-
-
Iustin Pop authored
This patch fixes the relocate-to-primary-node problem, and doesn't mark the excluded nodes as offline anymore (we don't use them anyway, so let's not use a different/fake cluster state).
-
Iustin Pop authored
This patch implements filtering out of the offline/drained nodes and fixes a bug in IAllocator.hs parsing (similar to an older bug in Rapi.hs from where the code was copied).
-
Iustin Pop authored
-
Iustin Pop authored
This patch implements non-mirrored instance allocation, by allocating as secondary node “noSecondary”.
-
Iustin Pop authored
Both allocate and relocate compute new node lists, whose score must be ranked and the best option chosen. This means we can convert the code to a generic function.
-
- May 24, 2009
-
-
Iustin Pop authored
This patch implements allocate for two node requests. One node requests can be done as soon as we have a valid allocateOn function for single nodes.
-
Iustin Pop authored
This patch completes the implementation of hail relocate. It maps all valid destination nodes through a ReplaceSecondary IMove, filters out the failed relocations, computes the resulting scores and picks the lowest one.
-
Iustin Pop authored
This patch implements a very stupid (and broken) version of hail ‘allocate’.
-
- May 23, 2009
-
-
Iustin Pop authored
This is not yet used.
-
Iustin Pop authored
Since we have Node/Instance.name, we can now simplify a few constructs.
-
Iustin Pop authored
This patch generalizes a little the CLI handling by not passing in a special function for help and such, but instead requiring that the options object supports some common functionality.
-
- May 22, 2009
-
-
Iustin Pop authored
This new big patch does a couple of more cleanups in the loading of data chapter: - introduce a Types module that holds most types (except the base Node/Instance/etc.) so that multiple other modules can use these (instead of only Cluster and its users) - bring IAlloc.hs in line with the recent changes of providing data types and not strings - removal of obsolete Utils.hs json-related functions
-
- May 21, 2009
-
-
Iustin Pop authored
This makes hail compile and get a request parsed via IAlloc, but nothing more.
-
- May 20, 2009
-
-
Iustin Pop authored
This patch changes Cluster.loadData to return a Result, instead of directly the values; this will allow us to return meaningful error values (e.g. when an instances lives on unknown node) rather than simply abort. Currently the result is always an Ok, the actual signalling of errors will come later. Its callers are changed to accommodate for the new return type and to display errors as needed.
-
Iustin Pop authored
This big patch converts from our home-grown monad-like constructs (the Either stuff) to a real, Either-like-but-another-name monad. We introduce a “Result a” monad, and this allows dropping many of the extra constructs. Hopefully the code is also more clear. Many of the functions could now be written in a generic-monad style, instead of Result specifically, but that will come in future patches. IAlloc.hs also has some unrelated patches.
-
- Apr 26, 2009
-
-
Iustin Pop authored
This option is the opposite of the --verbose option, and it allows decreasing the verbosity level from the default of one to zero (which currently doesn't show the warning messages for missing disk/memory).
-
- Apr 25, 2009
-
-
Iustin Pop authored
This patch moves the oneline format into a separate function for easier usage.
-
Iustin Pop authored
For clusters with no instances, there is no point in computing either the score or in running the algorithm. In this case, we exit prematurely and when running in one-line mode we show dummy information.
-
Iustin Pop authored
This new parameter causes the algorithm to finish (or even not start at all) if we reach/have a score better than it.
-
- Apr 20, 2009
-
-
Iustin Pop authored
This patch adds support for selecting the instance/node file names via two environment variables (HTOOLS_NODES, HTOOLS_INSTANCES). Unfortunately we still have lots of duplicated code, since the options are not unified.
-
Iustin Pop authored
Neither hbal nor hn1 take any arguments beside the options, so if any are passed is most likely an unintended error. This patch aborts in such cases.
-
- Apr 18, 2009
-
-
Iustin Pop authored
This patch adds support in hbal for writing the command list to a shell script, with error checking and allowing for early exit.
-
- Apr 16, 2009
-
-
Iustin Pop authored
Since it's easy to pass a wrong node name as offline, we should abort instead of silently ignoring it.
-
- Mar 22, 2009
-
-
Iustin Pop authored
This patch adds checking of cluster data in the binaries and display of node's x_mem/i_mem in the node list.
-
Iustin Pop authored
This patch moves the common CLI functionality (as much as currently possible) into a separate module. This means we only have one parseOpts and that Utils.hs doesn't keep this kind of functions anymore.
-
- Mar 21, 2009
-
-
Iustin Pop authored
This is added for better readability, since this is very often used in declarations.
-
- Mar 20, 2009
-
-
Iustin Pop authored
This patch modifies hbal (only, hn1 not yet) for setting nodes offline.
-