The journal paper explaining how OMQ works are still in process of writing and internal review. In the paper, we conducted an experiment for OMQ running in two different scenario :
- Benchmark: Using a synthesized data to measure througput (sensor input/second) OMQ can process with a given number of simultaneous queries and different types of query. In this scenario, we compared the performance of OMQ running independently inside x86-based machine and ARM SBC (Single-Board Computer) machine.
- Small IoT Deployment: Using four IoT nodes installed with oneM2M CSE and three sensors (RAM usage, CPU usage, CPU temp of node's SOC), we run several queries to the IoT system with and without OMQ/QE installed.
This document will guides the reader on how to reproduce the experiment as it is explained in the journal paper.
All experiment code is written in Node.js and located inside /experiment directory in the main repo. Before running these scripts, make sure you already installed Node.js inside the target system and perform npm install inside /experiment directory to install required packages.
To run the benchmark scenario in either x86 or ARM-based PC, follow these steps in the target computer:
- Decide on number of simultaneous queries (1,10,100,500,1000), query type (q11, q12, q13), and number of repeated tests.
- Make sure the target computer is already running the Main QE software (even in IoT node, it should be installed with the main QE instead of local QE for this benchmark purpose). There is an installation instruction in README.md for installation. Note that this benchmark does not uses any data from CSE so there is no specific configuration neede for the CSE.
- However, before running the main QE, change QE's
config.jsonconfiguration for number of simultaneous queries and number of repeated tests.
- However, before running the main QE, change QE's
- Open directory
/experiment/benchmarkfrom main repo. - Extract
trafficCombined.csv.zipintotrafficCombined.zip. This data is taken from some subset of Citypulse dataset for traffic. - Open
test_tput_with_dataset.jsand edit some configurable variables, such as:n_queries: Number of simultaneous queriesn_test: Number of repeated testn_src: Number of data sources per querytype_of_query: Choose among q11, q12, q13
- Run
node test.js - The result should be shown by the QE, not the test script.
- If the interval between test is too fast, you can set it on the same script.
- To reproduce this scenario, you need to prepare four Raspberry Pis (for IoT nodes) and one x86 Linux-based PC (for infrastructure node/IN) connected in a single network. Then, set the IP of each network into:
192.168.0.100for the IN and192.168.0.101-192.168.0.104for all IoT nodes. - Make sure local QE are installed in all IoT nodes and the main QE are installed in the IN. Follow README.md for the detailed installation instruction.
- However, each IoT node need to be installed with a specialized version of CSE (you can find it in:
/experiment/iotdeployment/mn-mobius.zip). This customized CSE adds a timestamping into each notification so we can measure delay correctly.
- However, each IoT node need to be installed with a specialized version of CSE (you can find it in:
- Install a specialized AE in each IoT nodes. The AE is in the file
/experiment/iotdeployment/soc-monitoring-ae.zip.- Don't forget to configure CSE location in
config.json. - Run the AE by using
./things.jscommand. This AE will register itself automatically into the CSE automatically.
- Don't forget to configure CSE location in
- Copy
netmon.pyscript into home directory of each IoT nodes. - Make sure that IN can perform SSH without any password into all four IoT nodes. You can find tutorial on how to achieve this in Google.
- Run the
node executor.js <type-of-experiment>from IN. There are two type of experiments:cse: Without using QEqe: Using QE
- All experiment data will be put into
plotdirectory. - To generate plot, enter the
plotdirectory and rungnuplot plot_all_2.plt.