62 | | |
63 | | === OpenVZ-only and qemu-only auto-partitioned experiments === |
64 | | |
65 | | You will need to specify a parameter called "packing". This parameter describes how many qemu virtual nodes will be embedded on each physical node. The host machines have four cores each, so for compute-bound tasks this value should not be higher than 4. For less CPU-intensive tasks we find a factor of 10 to provide adequate performance. This number can in theory be as high as 10 or 20 (perhaps higher). |
66 | | |
67 | | If you wish for some of your nodes to be realized as physical machines, you must use a TopDL file (not NS) and tag the nodes as physical. Add the attribute {{{benito:node_type = embedded_pnode}}} to any such nodes. See UsingShopdl for documentation on a tool to do this. |
68 | | |
69 | | Once you have determined the parameters described above, you may start an experiment by logging in to {{{users.isi.deterlab.net}}} and running these commands: |
70 | | |
71 | | {{{ |
72 | | $ /share/containers/qemu_experiment.py <PID> <EID> <ns-or-topdl-file> <packing> |
73 | | }}} |
74 | | |
75 | | This will create an [http://openvz.org openvz-]based experiment if {{{--default-container=openvz}}} is given. |
76 | | |
77 | | === Mixed mode experiments === |
78 | | |
79 | | Mixed mode experiments may only be specified using a TopDL file. Each node must be specially annotated to incdicate its embedding. This is done by specifying an attribute on the node called {{{partition}}}. |
80 | | |
81 | | The {{{partition}}} attribute specifies the physical node on which a qemu virtual node is realized. This value must be numeric, though there are no restrictions on what numbers are used. |
82 | | |
83 | | If a node ''lacks'' the {{{partition}}} attribute, it is assumed to be a physical node. |
84 | | |
85 | | You can use the {{{shopdl.py}}} tool in the {{{util}}} subdirectory of the tree in order to ease manipulation of your TopDL file. See UsingShopdl for more information. |
86 | | |
87 | | Once you have annotated your TopDL file, you may start an experiment by logging in to {{{users.isi.deterlab.net}}} and running these commands: |
88 | | |
89 | | {{{ |
90 | | $ /share/containers/mixed_experiment.py <PID> <EID> <topdl-file> |
91 | | }}} |
92 | | |
97 | | It takes 1-2 minutes for DETER to create the experiment. The creation process has successfully completed once DETER reports "Status: swapped" on the Experiment Activity Log. (The actual output generated by running qemu_experiment.py is "Benito experiment PID/EID successfully created!") |
| 66 | It takes 1-2 minutes for DETER to create the experiment. The creation process has successfully completed once DETER reports "Status: swapped" on the Experiment Activity Log. (The actual output generated by running containerize.py is "Containerized experiment PID/EID successfully created!") |
| 67 | |
| 68 | === Viewing the Experiment === |
| 69 | |
| 70 | The DETER web interface shows the physical topology that a containerized experiment is embedded in. This is of some use, but most experimenters want some way to see how their nodes are placed in the physical DETER computers. The {{{container_image.py}} program can draw simple pictures of containerized experiments and show which physical nodes hold which virtual nodes. |
| 71 | |
| 72 | A common way to invoke {{{container_image.py}}} is: |
| 73 | |
| 74 | {{{ |
| 75 | $ /share/containers/container_image.py --experiment DeterTest/faber-packem --out packem.png |
| 76 | }}} |
| 77 | |
| 78 | That will result in an image of the topology annotated with node names and IP addresses. For example, this tcl file: |
| 79 | |
| 80 | {{{ |
| 81 | source tb_compat.tcl |
| 82 | |
| 83 | set ns [new Simulator] |
| 84 | source tb_compat.tcl |
| 85 | |
| 86 | for { set i 0 } { $i < 10 } { incr i} { |
| 87 | set n($i) [$ns node] |
| 88 | } |
| 89 | |
| 90 | set k 0 |
| 91 | for { set i 1} { $i < 10 } { incr i } { |
| 92 | set link($i) [ $ns duplex-link $n(0) $n($i) 100Mb 10 ms DropTail] |
| 93 | } |
| 94 | |
| 95 | |
| 96 | $ns rtproto Static |
| 97 | $ns run |
| 98 | }}} |
| 99 | |
| 100 | results in this image: |
| 101 | |