- This chapter assumes that previous chapters covering the Atropos
Driving and Logical Processes have been read and understood. In this chapter
we look at parameters governing operation of the general Atropos system.
Remember that the goal of the Atropos toolkit is to provide the capability
to build predictive models inside the network, instrument and control them,
and measure the performance. Chapters 5 and 6 discussed instrumentation while
Chapters 7 and 8 discussed building the Atropos Driving Process and Logical
Process models.
Key Concepts
- The key concept of this chapter is to review the configuration
information for general purpose operation of the Atropos system. This consists
of directory configuration, performance configuration, debugging configuration, packet
routing. Note that there is currently no graphical interface built into
the system; the results can be polled from the SNMP MIB using any available
SNMP client. The type of results from the Atropos/AVNMP MIB are shown in
the following figure. One of the typical tradeoff studies is prediction accuracy,
overhead, and the distance into the future that the Atropos system can predict
(lookahead) under a variety of conditions and models.
-
Directory Configuration
- The code below shows the list of parameters that can be set
in avnmp.java.lp.ConfigInterface (ConfigInterface.java). The log()
method, shown in the line below, prints a line of debugging information to
the directory specified in Table 1 if the first parameter's bit is set in
the AvnmpDebug bit-map. See the AtroposDebug
documentation for more details about using logging.
-
log(AvnmpDebug.PP_D,
"debug output"); |
-
- GnuPlot objects will write data
in GnuPlot format in the directory specified by plot_data as shown
in the line below. The line below records the Local Virtual Time, wallclock
time, and the total number of causality based rollbacks in a single GnuPlot
file. See the documentation on the GnuPlot class for more details on creating and using this class.
-
pCausRB.plot(getlvt()+"
"+start_time.time()+" "+numCausalityRb.sum()); |
-
- The snmpdir variable is the directory
where the SNMP client would store the data that it collects. This is only
included in Atropos so that Atropos can call a script to automatically erase
old data before each new execution. rmlog, rmsnmp, and rmplots
are only necessary if a script is desired to automatically remove old data
before each execution.
Variable Name
|
Default Value
|
Purpose
|
logdir
|
../log_data/
|
Directory into which debugging information isplaced
|
pdir
|
../plot_data/
|
Directory into which plot information is placed
|
snmpdir
|
../snmp_data/
|
Directory into which SNMP data is stored
|
rmlog
|
../log_data/rem
|
Program to remove all old log data
|
rmsnmp
|
../snmp_data/rem
|
Program to remove all old SNMP data
|
rmplots
|
../plot_data/rem
|
Program to remove all old plot data
|
Table 1: Directory Configuration.
Performance Configuration
Variable Name
|
Default Value
|
Purpose
|
VirtualMessageRatio
|
new Integer(1)
|
Not used
|
runMinutes
|
5
|
Mintutes to run at each tolerance
|
ootLimit
|
0.9
|
Threshold of out-of-tolerance messages
at which program exits
|
initTolerance
|
1000.0
|
Initial tolerance; reduced by half
after every runMinutes
|
lvm
|
0.5
|
Rate of virtual message generation
|
Dvm
|
20000
|
Time-step of each virtual message
|
Table 2: Atropos System Variables.
Debugging Control
Debugging can be specified by setting the AvnmpDebugenvironment variable
to an int sized bit-mapped value before running the Atropos system. Table
3 below shows each bit of the bit-map the debugging topic that it controls.
Internal Name
|
Bit Map
|
Feature Debugged
|
GVT_D |
0x01 |
Global Virtual Time |
RECQ_D
|
0x02
|
Receive Queue
|
SNDQ_D
|
0x04
|
Send Queue
|
PP_D
|
0x08
|
Physical Process
|
STATEQ_D
|
0x10
|
State Queue
|
TIME_D
|
0x20
|
Time Management
|
LP_D
|
0x40
|
Logical Process
|
SYSTEM_D
|
0x80
|
Atropos System (General)
|
MEASURE_D
|
0x100
|
Measurement
|
TOLERANCE_D
|
0x200
|
Tolerance
|
ROLLBACK_D
|
0x400
|
Rollback
|
DRIVER_D
|
0x800
|
Driving Process
|
LPSTATE_D
|
0x1000
|
Logical Process State
|
PAYLOAD_D
|
0x2000
|
Packet Payload
|
PREDM_D
|
0x4000
|
Prediction Accuracy
|
PACKET_D
|
0x8000
|
Packet
|
Table 3: Debugging BitMap.
Packet Routing
The Atropos virtual messages (streptichrons) are source routed for experimental
purposes. The code segment below from avnmp.java.pp.PayLoad (PayLoad.java)shows
how the packet routing is coded based upon source node, destination node,
and probability that the path is taken.
private
void AvnmpRoute1() {
tab.addEntry("AH-1",
"AN-1", new Double(1.0));
tab.addEntry("AN-1", "AN-5",
new Double(1.0));
tab.addEntry("AN-5", "AN-1",
new Double(0.5));
tab.addEntry("AN-5", "output",
new Double(0.5));
} |
Running the Active Application
After reading through this code and understanding what it does, you can compile
the code "as-is" using the included Makefile. Run in the Magician execution
environment by entering:
- send InjectSnmp AH-1
- send LoadGenAppBasic AH-1
- send Flood AH-1
- send AvnmpSmartDriver AH-1
The object identifiers created within the application and the predictions
generated by Atropos should now be queriable via an SNMP client.
|