Code
Code resides in assign+ branch of the repository, in assign+ folder. There are three files:
- assign+
- PURPOSE: reads resource requirements and available resources and finds an allocation with minimum interswitch bw use
- INPUT: two command line arguments ptopfile and topfile. These files are usually produced in the process of resource assignment by assign_wrapper, now called mapper. There are a few other command line options, that should be self-explanatory when you run the code. If you want very verbose output run it with -d.
- OUTPUT: textual output denoting nodes and links and their assignments that can be passed further to resource allocation
- getptopdetail.pl
- PURPOSE: parse a ptopfile into something human-readable. Assign+ also uses this output.
- INPUT: ptopfile
- OUTPUT: human-readable summary of ptopfile
- gettopdetail.pl
- PURPOSE: parse a topfile into something human-readable. Assign+ also uses this output.
- INPUT: topfile
- OUTPUT: human-readable summary of topfile
Testing
Testing code resides in assign+ branch of the repository, in assign+/test folder. There are several files that jointly perform tests that compare performance of assign and assign+.
- removefixed.pl
- PURPOSE: Remove fixed nodes from a topfile
- INPUT: topfile
- OUTPUT: topfile in correct format minus lines that talk about fixed nodes
- makefixed.pl
- PURPOSE: Make a topfile with fixed nodes taken from the output of assign or assign+
- INPUT: output-file-of-assign-or-assign+ topfile
- OUTPUT: topfile in correct format plus lines that enforce fixed nodes and fixed interfaces for links
- parseinfo.pl
- PURPOSE: measure performance of assign or assign+
- INPUT: a file containing output of assign or assign+
- OUTPUT: success or failure of allocation, time the allocation took, number of nodes and interswitch links allocated
- runtests.pl
- PURPOSE: run a number of tests with assign and assign+
- INPUT: a file containing lines with ptopfile and topfile
- OUTPUT: file testresults that contains performance of these two allocation algorithms for each line of input
- processresults.pl
- PURPOSE: process the results file generated in the previous step
- INPUT: name of the results file
- OUTPUT: statistics about successes and failures of assign and assign+. The code also produces files that contain inputs that lead to following potentially anomalous cases:
- checktests - assign+ failed and assign didn't
- failedtests - both assign+ and assign failed
- weirdtests - assign+ succeeded and assign didn't
- impossibletests - assign+ succeeded and assign didn't with fixed nodes from output of assign+. This most often happens because assign+ cannot deal properly with fixed interfaces on links.
Additionally, the folder contains a version of assign I have used in testing, that will run on boss. It also contains two sets of test cases:
- expinfotests - all attempted allocations from start of DeterLab until Spring 2013
- expfailedtests - all failed allocations roughly from Jan 2012 until Spring 2013
Expinfotests
There were total of 109,326 tests
Category | Count | Percentage | Reason
|
Both assign and assign+ succeeded | 98,589 | 90% | n/a
|
assign succeeded, assign+ failed | 150 | 0.1% |
|
Both assign and assign+ failed | 6,341 | 5.8% |
|
assign failed, assign+ succeeded, assign succeeded with fixed nodes from assign+ | 666 | 0.6% |
|
assign failed, assign+ succeeded, assign failed with fixed nodes from assign+ | 3,580 | 3.2% |
|