Newpage

How to send and store your own data in Emulab

This page introduces how to send data to a central machine with OML, which is developed by Winlab at Rutgers University. OML is composed of oml-server and oml-client. In an experiment, oml-clients are instanced to send measurement data to oml-server. Oml-server is responsible for receving data from oml-clients and store into a database(*.sq3).

To help users to send data distributed at experimental machines to a central machine, Emulab uses OML to provide such a service. We have done some efforts to facilitate users to use OML in Emulab.

The steps to use OML in Emulab is as following.

1. Define the name of the machine to run omlserver in ns files.

tb-set-oml-server <servername>

usage:

It defines the name for the omlserver.
This command will allocate another machine from Emulab to run omlserver process. Users can choose to use control network to transfer data to
omlserver, which is the way we suggest. Users can also specify to use a new lan between omlserver and experimental nodes, by specify 0 to
tb-set-oml-control-transfer. But it will take one Ethernet interface of each participated machine to do that.

For example:

tb-set-oml-server omlserver

2. Define measurement points in ns files.

tb-set-oml-mp <mp_name> (<metric_id> <metric_type>)+

usage:

It defines a new measurement point. A measurement point is a set of data, which has the same set of properties or metrics.
The first parameter defines the name for this measurement point. The following pairs define pairs of <id,type> for metrics in this measurement
point. You can define metrics as many as you want.

3.1 After the experiment is swapped in, you will find two files generated for you: MP.c and MP.h, at /proj/pid/exp/eid at ops.emulab.net.

(eg. /proj/utahstud/exp/emulab)

3.2 Copy your source code to omlserver. Include MP.h in your applications and call initialize_oml() before you call other oml functions.The suggested place is to call this function immediately after main().

3.3 Call functions in your source codes where you have the corresponding data.