39 | | [[Image(newhowto1.jpg)]] |
| 42 | INFO NodeHandler: OMF Experiment Controller 5.4 (git c005675) |
| 43 | INFO NodeHandler: Slice ID: default_slice (default) |
| 44 | INFO NodeHandler: Experiment ID: default_slice-2013-01-16t14.42.48-05.00 |
| 45 | INFO NodeHandler: Message authentication is disabled |
| 46 | INFO Experiment: load system:exp:stdlib |
| 47 | INFO property.resetDelay: resetDelay = 230 (Fixnum) |
| 48 | INFO property.resetTries: resetTries = 1 (Fixnum) |
| 49 | INFO Experiment: load system:exp:eventlib |
| 50 | INFO Experiment: load system:exp:stat |
| 51 | INFO Topology: Loading topology ''. |
| 52 | INFO property.nodes: nodes = "system:topo:all" (String) |
| 53 | INFO property.summary: summary = false (FalseClass) |
| 54 | INFO Topology: Loading topology 'system:topo:all'. |
| 55 | Talking to the CMC service, please wait |
| 56 | ----------------------------------------------- |
| 57 | Domain: outdoor.orbit-lab.org |
| 58 | Node: node1-1.outdoor.orbit-lab.org State: POWEROFF |
| 59 | Node: node1-10.outdoor.orbit-lab.org State: POWEROFF |
| 60 | Node: node1-2.outdoor.orbit-lab.org State: POWEROFF |
| 61 | Node: node1-3.outdoor.orbit-lab.org State: POWEROFF |
| 62 | Node: node1-4.outdoor.orbit-lab.org State: POWEROFF |
| 63 | Node: node1-5.outdoor.orbit-lab.org State: POWEROFF |
| 64 | Node: node1-6.outdoor.orbit-lab.org State: POWEROFF |
| 65 | Node: node1-7.outdoor.orbit-lab.org State: POWEROFF |
| 66 | Node: node1-8.outdoor.orbit-lab.org State: POWEROFF |
| 67 | Node: node1-9.outdoor.orbit-lab.org State: POWEROFF |
| 68 | Node: node2-10.outdoor.orbit-lab.org State: POWEROFF |
| 69 | Node: node2-2.outdoor.orbit-lab.org State: POWEROFF |
| 70 | Node: node2-3.outdoor.orbit-lab.org State: NOT REGISTERED |
| 71 | Node: node3-1.outdoor.orbit-lab.org State: POWEROFF |
| 72 | Node: node3-2.outdoor.orbit-lab.org State: POWEROFF |
| 73 | Node: node3-3.outdoor.orbit-lab.org State: POWEROFF |
| 74 | Node: node3-4.outdoor.orbit-lab.org State: POWEROFF |
| 75 | Node: node3-5.outdoor.orbit-lab.org State: POWERON |
| 76 | Node: node3-7.outdoor.orbit-lab.org State: POWEROFF |
| 77 | Node: node3-8.outdoor.orbit-lab.org State: POWEROFF |
| 78 | Node: node4-1.outdoor.orbit-lab.org State: POWEROFF |
| 79 | Node: node4-10.outdoor.orbit-lab.org State: POWEROFF |
| 80 | Node: node4-11.outdoor.orbit-lab.org State: POWEROFF |
| 81 | ----------------------------------------------- |
| 82 | INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks. |
| 83 | INFO NodeHandler: |
| 84 | INFO NodeHandler: Shutting down experiment, please wait... |
| 85 | INFO NodeHandler: |
| 86 | INFO run: Experiment default_slice-2013-01-16t14.42.48-05.00 finished after 0:6 |
| 87 | }}} |
| 88 | Individual nodes are identified by their fully qualified domain name (FQDN). This establishes their "coordinates" and the "domain" to which they belong. Nodes in |
| 89 | different domains can NOT see each other. |
49 | | to get the node into the off state. |
50 | | {{{ |
51 | | username@console.sb1:~$ omf tell -a offh -t TOPOLOGY |
52 | | }}} |
53 | | The ''TOPOLOGY'' can take on many forms, the simplest being a comma separated list of FQDN's. There are special predefined topologies like: all, system:topo:circle, ... For more details see [wiki:/Software/bAM#AggregateManagers OMF documentation] |
54 | | If the node is in the NODE NOT AVAILABLE state, you may need to wait for it to recover the POWEROFF state (it some times requires a few moments for the service to sync up). If |
55 | | the node never comes out of the NODE NOT AVAILABLE state please contact an administrator. |
| 98 | to get the node into the off state. |
| 99 | {{{ |
| 100 | username@console.domain:~$ omf tell -a offh -t TOPOLOGY |
| 101 | }}} |
| 102 | The ''TOPOLOGY'' can take on many forms, the simplest being a comma separated list of FQDN's. There are special predefined topologies like: all, system:topo:circle, ... |
| 103 | For more details see [wiki:/Software/bAM#AggregateManagers OMF documentation] |
| 104 | If the node is in the NOT REGISTERED state, you may need to wait for it to recover the POWEROFF state (it some times requires a few moments for the services to sync up). If |
| 105 | the node never comes out of the NODE NOT AVAILABLE state please contact an administrator. |
57 | | 4. Prior to the experiment, users need to install an image on the hard disks of the nodes. If you have not created a custom image use the default starting image: '''baseline.ndz'''. This image is built on top of ubuntu 12.04, and is pre-configured with the proper modules and start up scripts to take advantage of the rest of the Orbit services. Loading an image is done with the omf load command |
58 | | {{{ |
59 | | username@console.sb1:~$ omf load -t TOPOLOGY -i IMAGENAME |
60 | | }}} |
61 | | Where ''TOPOLOGY'' is the set of nodes you wish to image , and !IMAGENAME is the name of the image you with to load. The most common sandbox starting image command would look like |
62 | | {{{ |
63 | | username@console.sb1:~$ omf load -t all -i baseline.ndz |
64 | | }}} |
65 | | which will load all the nodes of sandbox 1 (totaling 1) with the [wiki:Documentation/SupportedImages baseline] image. |
66 | | 5. The process start should look like: |
| 107 | 4. Prior to the experiment, users need to install an image on the hard disks of the nodes. If you have not created a custom image use the default starting image: |
| 108 | '''baseline.ndz'''. This image is built on top of '''Ubuntu 12.04''', and is pre-configured with the proper modules and start up scripts to take advantage of the rest of |
| 109 | the Orbit services / hardware. Loading an image is done with the [wiki:/Software/bAM#AggregateManagers omf load command]. |
| 110 | {{{ |
| 111 | username@console.domain:~$ omf load -t TOPOLOGY -i IMAGENAME |
| 112 | }}} |
| 113 | Where ''TOPOLOGY'' is the set of nodes you wish to image , and !IMAGENAME is the name of the image you with to load. The most common sandbox starting image command |
| 114 | would look like |
| 115 | {{{ |
| 116 | username@console.domain:~$ omf load -t all -i baseline.ndz |
| 117 | }}} |
| 118 | which will load all the nodes of sandbox 1 (totaling 1) with the [wiki:Documentation/SupportedImages baseline] image. An example run on sandbox 7 looks like: |
| 119 | {{{ |
| 120 | user@console.sb7:~$ omf load -t all -i baseline.ndz |
68 | | [[Image(newhowto2.jpg)]] |
69 | | 6. A key line to look for is ''INFO whenAll: *: 'status[@value='UP']' fires''. This line indicates that all the nodes have come up and imaging has begun: |
70 | | |
71 | | [[Image(newhowto3.jpg)]] |
| 122 | INFO NodeHandler: OMF Experiment Controller 5.4 (git c005675) |
| 123 | INFO NodeHandler: Slice ID: pxe_slice |
| 124 | INFO NodeHandler: Experiment ID: pxe_slice-2013-01-16t14.56.02-05.00 |
| 125 | INFO NodeHandler: Message authentication is disabled |
| 126 | INFO Experiment: load system:exp:stdlib |
| 127 | INFO property.resetDelay: resetDelay = 230 (Fixnum) |
| 128 | INFO property.resetTries: resetTries = 1 (Fixnum) |
| 129 | INFO Experiment: load system:exp:eventlib |
| 130 | INFO Experiment: load system:exp:imageNode |
| 131 | INFO property.nodes: nodes = "system:topo:all" (String) |
| 132 | INFO property.image: image = "baseline.ndz" (String) |
| 133 | INFO property.domain: domain = "sb7.orbit-lab.org" (String) |
| 134 | INFO property.outpath: outpath = "/tmp" (String) |
| 135 | INFO property.outprefix: outprefix = "pxe_slice-2013-01-16t14.56.02-05.00" (String) |
| 136 | INFO property.timeout: timeout = 800 (Fixnum) |
| 137 | INFO property.resize: resize = nil (NilClass) |
| 138 | INFO Topology: Loading topology 'system:topo:all'. |
| 139 | INFO Experiment: Resetting resources |
| 140 | INFO stdlib: Waiting for nodes (Up/Down/Total): 0/2/2 - (still down: node1-2.sb7.orbit-lab.org,node1-1.sb7.orbit-lab.org) [0 sec.] |
| 141 | INFO stdlib: Waiting for nodes (Up/Down/Total): 0/2/2 - (still down: node1-2.sb7.orbit-lab.org,node1-1.sb7.orbit-lab.org) [10 sec.] |
| 142 | INFO stdlib: Waiting for nodes (Up/Down/Total): 0/2/2 - (still down: node1-2.sb7.orbit-lab.org,node1-1.sb7.orbit-lab.org) [20 sec.] |
| 143 | INFO stdlib: Waiting for nodes (Up/Down/Total): 0/2/2 - (still down: node1-2.sb7.orbit-lab.org,node1-1.sb7.orbit-lab.org) [30 sec.] |
| 144 | INFO ALL_UP: Event triggered. Starting the associated tasks. |
| 145 | INFO exp: Progress(0/0/2): 0/0/0 min(node1-2.sb7.orbit-lab.org)/avg/max (30) - Timeout: 760 sec. |
| 146 | INFO exp: Progress(0/0/2): 10/10/10 min(node1-2.sb7.orbit-lab.org)/avg/max (30) - Timeout: 750 sec. |
| 147 | INFO exp: Progress(0/0/2): 10/15/20 min(node1-1.sb7.orbit-lab.org)/avg/max (30) - Timeout: 740 sec. |
| 148 | INFO exp: Progress(0/0/2): 20/25/30 min(node1-2.sb7.orbit-lab.org)/avg/max (30) - Timeout: 730 sec. |
| 149 | INFO exp: Progress(0/0/2): 30/35/40 min(node1-1.sb7.orbit-lab.org)/avg/max (30) - Timeout: 720 sec. |
| 150 | INFO exp: Progress(0/0/2): 40/40/40 min(node1-2.sb7.orbit-lab.org)/avg/max (30) - Timeout: 710 sec. |
| 151 | INFO exp: Progress(0/0/2): 40/45/50 min(node1-1.sb7.orbit-lab.org)/avg/max (30) - Timeout: 700 sec. |
| 152 | INFO exp: Progress(0/0/2): 50/55/60 min(node1-1.sb7.orbit-lab.org)/avg/max (30) - Timeout: 690 sec. |
| 153 | INFO exp: Progress(0/0/2): 60/65/70 min(node1-1.sb7.orbit-lab.org)/avg/max (30) - Timeout: 680 sec. |
| 154 | INFO exp: Progress(0/0/2): 60/65/70 min(node1-1.sb7.orbit-lab.org)/avg/max (30) - Timeout: 670 sec. |
| 155 | INFO exp: Progress(0/0/2): 70/75/80 min(node1-2.sb7.orbit-lab.org)/avg/max (30) - Timeout: 660 sec. |
| 156 | INFO exp: Progress(0/0/2): 90/90/90 min(node1-2.sb7.orbit-lab.org)/avg/max (30) - Timeout: 650 sec. |
| 157 | INFO exp: Progress(1/0/2): 90/95/100 min(node1-1.sb7.orbit-lab.org)/avg/max (30) - Timeout: 640 sec. |
| 158 | INFO exp: Progress(2/0/2): 100/100/100 min()/avg/max (30) - Timeout: 630 sec. |
| 159 | INFO exp: ----------------------------- |
| 160 | INFO exp: Imaging Process Done |
| 161 | INFO exp: 2 nodes successfully imaged - Topology saved in '/tmp/pxe_slice-2013-01-16t14.56.02-05.00-topo-success.rb' |
| 162 | INFO exp: ----------------------------- |
| 163 | INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks. |
| 164 | INFO NodeHandler: |
| 165 | INFO NodeHandler: Shutting down experiment, please wait... |
| 166 | INFO NodeHandler: |
| 167 | INFO NodeHandler: Shutdown flag is set - Turning Off the resources |
| 168 | INFO run: Experiment pxe_slice-2013-01-16t14.56.02-05.00 finished after 3:13 |
| 169 | }}} |
73 | | 7. The final result should look like: |
74 | | |
75 | | [[Image(newhowto4.jpg)]] |
76 | | |
77 | | 8. At this point the nodes are imaged with the ''basline'' image and need to be turned back on before proceeding. |
78 | | {{{ |
79 | | username@console.sb2:~$ omf-5.2 tell on all |
80 | | }}} |
81 | | Give the nodes a couple of minutes to turn on. To check the status of the node: |
82 | | {{{ |
83 | | username@console.sb2:~$ omf-5.2 stat |
84 | | }}} |
85 | | |
86 | | 9. By default the driver modules for the wireless interfaces are disabled. It is up to the experimenter to decide which interface to use. For this tutorial experiment the ath_pci module will be used. So before running the tutorial experiment ssh into each node (ie. node1-1 & node 1-2) and load the driver modules. |
87 | | {{{ |
88 | | username@console.sb2:~$ ssh root@node1-1 |
89 | | }}} |
90 | | From the node load the driver module: |
91 | | {{{ |
92 | | root@node1-1:~# modprobe ath_pci |
93 | | }}} |
94 | | Verify that the module has been loaded into the kernel |
95 | | {{{ |
96 | | root@node1-1:~# lsmod |
97 | | }}} |
98 | | |
99 | | [[Image(newhowto_lsmod.jpg)]] |
100 | | |
101 | | Now ssh into ''node1-2'' and do the same. |
102 | | 10. To run a tutorial experiment that involves one UDP traffic sender and one receiver, run the following command at the console. |
103 | | {{{ |
104 | | username@console.sb2:~$ omf-5.2 exec --tutorial -- --tutorialName tutorial-1a |
105 | | }}} |
106 | | Make note of the unique experiment ID as shown in the experiment output below. This ID can be used later to view the results from a database (sqlite3) file. |
107 | | |
108 | | [[Image(newhowto5.jpg)]] |
109 | | |
110 | | |
111 | | 11. Both, sender and receiver, report measurements to a database, using the OML measurement framework. The file is saved as a sqlite3 file; the file name for the experiment is shown in the last line of the tutorial's output and saved in the console under /var/lib/oml2 |
112 | | |
113 | | To dump the database file for this experiment: |
114 | | {{{ |
115 | | username@console.sb2:~$ sqlite3 /var/lib/oml2/sb8.orbit-lab.org_2011_07_12_16_00_33.sq3 ".dump" |
116 | | }}} |
117 | | |
118 | | |
119 | | |
120 | | |
121 | | The experiment can be started with: |
122 | | {{{ |
123 | | user#> nodehandler -t |
124 | | }}} |
125 | | |
126 | | [[Image(howto4.PNG)]] |
127 | | |
128 | | * This experiment will send UDP datagrams of 1024 bytes from node 1-1 to node 1-2 at 300 kbps CBR traffic. |
129 | | * Both, sender and receiver, report measurements to a database, using our [wiki:Documentation/OML OML] measurement framework. |
130 | | * As shown below, the experiment controller will power on the nodes involved in the experiment and will issue experiment commands to each node. |
131 | | * Each experiment has a unique experiment ID as shown in the figure, that can be used later to view the results from the database |
132 | | [[Image(howto5.PNG)]] |
133 | | |
134 | | Alternatively, a specific script can be run as follows: |
135 | | |
136 | | The experiment can be started with: |
137 | | {{{ |
138 | | user#> nodehandler <full-path/script-name> |
139 | | }}} |
140 | | |
141 | | For e.g., if my script is called orbit-test.rb and it resides in /home/joenull/Ruby-Scripts/ (ORBIT home directory), I would execute it as follows: |
142 | | {{{ |
143 | | user#>pwd |
144 | | /home/joenull |
145 | | user#>nodehandler ~/Ruby-Scripts/orbit-test |
146 | | }}} |
147 | | |
148 | | Note that I leave out the ".rb" at the end. This will execute the scripts and turn the nodes OFF at the end of the experiment. If you want to leave them ON after the experiment, use the "-k" flag. For e.g. |
149 | | {{{ |
150 | | user#>pwd |
151 | | /home/joenull |
152 | | user#>nodehandler -k ~/Ruby-Scripts/orbit-test |
153 | | }}} |
154 | | |
155 | | The experimenter can also move to where the script resides and execute it (without giving the full path) since nodehandler will look for the script in the current directory. |
156 | | |
157 | | More information on writing experiment scripts can be found in the [wiki:Tutorial Tutorial]. |
158 | | |
159 | | == Analyzing Results == |
160 | | |
161 | | Orbit provides a sophisticated framework to efficiently collect measurements at runtime into a database. This database is accessible to the experimenter during the experiment from the console. At the end of an experiment, the database is copied to an external machine and is accessible without a reservation. More information can be found [wiki:Tutorial/AnalyzeResults here]. |
| 171 | 5. The imageing process will turn the nodes back off after completing imageing. At this point the nodes disks are imaged with the ''basline'' image |
| 172 | and need to be turned back on before proceeding. |
| 173 | {{{ |
| 174 | username@console.domain:~$ omf tell -a on -t all |
| 175 | }}} |
| 176 | Give the nodes a couple of minutes to turn on / boot, then check their status with omf stat. |