The Analysis Phase
Adding a new probe to the IEPM-BW test is "complex" because one must understand all the aspects of the probe:
- What part of the result is relevant
- What kind of table structure is needed to store the results. Can one that is defined already be used
or does it need a custom table?
- What are the characteristics of it performance and how can it be controlled - Does it hang - if so,
how and how can it be detected and remedied? Does it require a responder on the target? If so how does
it work and what are its performance characteristics (does it hang..how to fix it)?
- How can one get ahold of the results? Can one direct the output to a file, or does one need to "capture"
the output and write it out to a file.
- What kind of info does the probe return to you? Does it return RTT? BW? Packet loss? Etc.? How does one
want to display the probe results? Time series (if so of what), scatterplots? Plot if against other specific data?
- Is this a probe that can be run via a daemon asynchronously, or does it need to be synchronized to not
run at the same time as certain other probes?
- Are there customized plots one would like to see of this probe versus others? See:
http://www.slac.stanford.edu/comp/net/iepm-bw.slac.stanford.edu/html/miscplots/iepm-bw.cacr.caltech.edu.html.
If so then these specs must be defined in the PLOTSPECS table.
Custom Code to Implement the Probe
Each probe requires customized configuration and code.
- The probe configuration information (parameters) is put in the TOOLSPECS table. Each probe is different,
and the configuration for each node it is targeted to can be different (window sizes, streams, duration, run interval)
- A "do_test" script must be written. This is the script that actually performs the test. It can be modeled
after the existing ones, but needs customization depending on the probe characteristics.
- A "load-test-data" script must be written to pick out the relevant/interesting data returned from the probe
and store it in the data base.
- The specs for the desired plots must be entered in the plotspecs (miscellaneous plots), datatoanalyze (master
results page), and toolspecs (individual probe plots) tables once one knows what they are. This is not difficult,
but one must decide what one wants.
- The master results page must be modified to include the probe in it (controlled by "datatoanalyse" for each probe). This can be done by copying and editing the display code for any of the other probes.
- Possibly a fetch-test-data script must be written, unless the probe data fits the pattern of one that is already written. I have one data table "BWDATA" which hopefully is general enough now to hold the data from new probes in it. Then 'fetch-bw-data' can be used for fetching the data.
Code Which Must be Modified to Handle New Probes
The following scripts/files must be modified to include code for any new probes. Usually one can just copy, insert and modify the code for the other probes.
- 'create-analysis-data'
- 'create-history' and the scripts it calls
- 'fetch-binned-bwdata' if the data is in the BWDATA table
- 'install-iepmtools' - and if the new probe has server/client code, it should be put in the 'iepmtools' directory.
- 'create-tool-plots'
- 'make-bw-html' and the script snipit it calls in the directory 'site-customization' called 'top-of-page.pl'
- 'make-data-collection'
- 'scripts.list'
- dist.scripts.list
- 'analyze-for-alerts' in the directory 'alerts'
As usual, the devil is in the analysis. It is extremely important as one does not want to hang or crash
the system, and if the probe has certain problems characteristic of it, one MUST take care of them and recognize them!