#Cloud-TM Auto Placer
This package provides a demonstration of Auto Placer self-tunning. The requirement to run are:
- Maven (3.0.x)
- Java 1.6.x
- Apache Web Server with PHP (optional, only if you want to see the system performance in real time plots)
##Description
This software package demonstrates the advantage of using the auto placer optimization to improve the system's performance. The main goal is to optimize the system performance by adapting the keys location to the best place. By doing this, it is possible to reduce the communication costs avoiding fetch the data remotely.
The software package is configured to a read dominant workload and the data access pattern is described by 90% of the time, it chooses a key from a subset of keys (making this subset to be moved).
At each minute, the auto-placer optimization is triggered. Then, it checks the local and remote keys accesses and tries to move them to a best location.
##How to run it
###Compilation
Execute the following commands to compile and create the distribution folder:
# clone the repository by doing git clone <url>
$ cd cloudtm-auto-placer
$ export WORKING_DIR=`pwd`
$ ./dist.sh
###Configuration: CSV Reporter (with Apache Web Server)
-
copy the
www/
folder to you apache HTML folder(important!) make sure you have write permission in that folder
$ #assuming your apache web server is getting the HMTL from /var/www $ export WEB=/var/www/example; $ mkdir ${WEB} $ cp -r ${WORKING_DIR}/www/* ${WEB} $ chmod -R +w ${WEB}
-
configure the csv reporter by editing the file
dist/conf/config.properties
reporter.ips - add here the hostname and the JMX port (by default 9998) of the machines to use separated by a comma.
reporter.output_file - the output file. Assuming location in 1.set the property to
/var/www/example/current/reporter.csv
reporter.updateInterval - the update interval in seconds. In each updateInterval seconds it adds a new line in the output_file
###Configuration: CSV Reporter (without Apache Web Server)
-
configure the csv reporter by editing the file
dist/conf/config.properties
reporter.ips - add here the hostname and the JMX port (by default 9998) of the machines to use
reporter.output_file - the output file path (for example
/tmp/reporter.csv
)reporter.updateInterval - the update interval in seconds. In each updateInterval seconds it adds a new line in the output_file
###Configuration: Radargun and Infinispan
-
configure the master machine. This example we have a master process where each node synchronizes to run the example. Edit the file
dist/conf/benchmark.xml
and set the bindAddress with the hostname or IP of the master. -
configure the Gossip Router. In order to the Infinispan instance to see each other, you need to configure the gossip router. The gossip router is started automatically in the master node. You need to set the hostname or IP in
dist/plugins/infinispan52cloudtm/conf/jgroups/jgroups.xml
and set the initial_hosts in TCPGOSSIP tag. -
if your machine does not support the C5.0 version provided (it is compiled for Linux) you can avoid using the machine learner by setting the property objectLookupFactory (dataPlacement tag in
dist/plugins/infinispan52cloudtm/conf/ispn.xml
) toorg.infinispan.dataplacement.hm.HashMapObjectLookupFactory
###Running the benchmark
-
copy the dist folder to all the machines to a common location
$ for machine in <list of IP or hostnames>; do scp -r ${WORKING_DIR}/dist/ <username>@${machine}:/tmp/; done
-
go to the master machine and execute the following
$ ssh [username]>@[master machine IP or hostname] $ cd /tmp/dist/ $ ./bin/benchmark.sh -i [number of nodes] [list of hostnames or IP addresses]
-
If you have the apache web server installed, point your browser to
http://<master machine IP or hostname>/example
Otherwise, check the file defined in reporter.output_file