Tree [8bef59] master /
History



File Date Author Commit
.settings 2014-03-20 Jaroslav Kotrc Jaroslav Kotrc [e5021d] Initial version. Multiple JARs are functional b...
dist 2015-04-08 Jaroslav Kotrc Jaroslav Kotrc [197e68] Added dist ant task and its description in README.
examples 16 hours ago Jaroslav Kotrč Jaroslav Kotrč [8bef59] Changed number of warmup measurements for sorti...
lib 2015-04-28 Jaroslav Kotrc Jaroslav Kotrc [741b15] Removed temporary testing classes.
logs 2014-11-12 Jaroslav Kotrc Jaroslav Kotrc [9d3d61] Added method suspension to the scheduler. Teste...
src 2015-07-12 Jaroslav Kotrc Jaroslav Kotrc [f4c710] Added local input file for Rome example.
.classpath 2015-04-28 Jaroslav Kotrc Jaroslav Kotrc [741b15] Removed temporary testing classes.
.gitignore 2015-04-08 Jaroslav Kotrc Jaroslav Kotrc [197e68] Added dist ant task and its description in README.
.project 2014-03-20 Jaroslav Kotrc Jaroslav Kotrc [e5021d] Initial version. Multiple JARs are functional b...
README.txt 2015-06-23 Jaroslav Kotrc Jaroslav Kotrc [8df08e] Added license to the c-agent.
build.properties 2015-04-28 Jaroslav Kotrc Jaroslav Kotrc [bd4ca4] Added overview page and javadoc target.
build.xml 2015-04-28 Jaroslav Kotrc Jaroslav Kotrc [bd4ca4] Added overview page and javadoc target.
instr.tasks 2015-04-28 Jaroslav Kotrc Jaroslav Kotrc [c56823] Added examples of measuring sorting application...
runApp.sh 2015-04-07 Jaroslav Kotrc Jaroslav Kotrc [65f5db] Added new example for custom argument size proc...
runClient.sh 2015-04-03 Jaroslav Kotrc Jaroslav Kotrc [46e730] Added better run scripts for whole application.
runClientOnly.sh 2015-04-07 Jaroslav Kotrc Jaroslav Kotrc [65f5db] Added new example for custom argument size proc...
runServer.sh 2015-04-03 Jaroslav Kotrc Jaroslav Kotrc [46e730] Added better run scripts for whole application.
runServerOnly.sh 2015-04-07 Jaroslav Kotrc Jaroslav Kotrc [65f5db] Added new example for custom argument size proc...
splserver-default.ini 2015-07-10 Jaroslav Kotrc Jaroslav Kotrc [8923f1] Added warmup option to remove initial measureme...
splserver.ini 2015-07-10 Jaroslav Kotrc Jaroslav Kotrc [8923f1] Added warmup option to remove initial measureme...

Read Me

COMPILATION
===========
To compile all components call "ant" in the base directory of the project.
If it runs with errors after some changes, it may be wise to try "ant clean" to
be sure all components will be updated.

RUN
===
To run whole application use
  runApp.sh classpath main-class [params]
where classpath is list of paths separated by colon, main-class is the class
which should be launched followed by optional number of parameters of launched
application.

To run client and server side of the measuring separately use
  runServer.sh
first to launch controlling server and then call
  runClient.sh classpath main-class [params]
to run the measured application.

Other scripts runClientOnly.sh and runServerOnly.sh are shared by both ways of
running and should not be called directly.

When custom argument size processor is used it is needed to set path to its JAR
file in PROCESSOR_JAR environment variable.

DISTRIBUTION
============
To get all necessary files at once use "ant dist" command which will copy all
libraries into dist/lib folder and run scripts into dist folder. 

This ant target also creates new empty instr.task file where measuring tasks
may be written and copies default server configuration to the splserver.ini
file.

In this folder it is possible to use runExample.sh script to launch desired
application and all paths are set to the lib folder so it is possible to just
copy content of the dist folder to your application base directory and use
runExample.sh script to launch your application where only classpath and main
class is needed to add as an argument of the script.

It may be needed to add execute permission to all scripts in the dist directory
if Permission denied error occurs.

CONFIGURATION
=============
Client is runned by Launcher and can be configured with different sleep time
between cycles, port used to connect with server and maximal number of 
measurements done for a single method.
They can be set by system properties for Java:
  spl.client.port sets the port
  spl.client.sleep sets the sleep time in milliseconds
  spl.client.measurements sets the maximal number of measurements
If nothing is set the default values are:
  port = 38692
  sleep = 100
  measurements = 10000
  
Server is configured by its configuration file. The file default path is:
  splserver.ini
Other file can be configured by setting system property:
  spl.server.config
If no configuration file is found, then default configuration is used. These
values can be seen in file
  splserver-default.ini
This file is only informative and is not used for the configuration.

MEASURING TASKS
===============
To specify which methods should be measured it is needed to specify them in the
task file. This file default name (can be changed in server configuration) is
  instr.tasks
There is list of methods to be measured (for measurement run mode) or list of
comparisons to be evaluated (for comparison run mode).

Measurement
-----------
Methods for measuring are specified as a list of methods separated by a new
line. The method is specified by its class name including packages separated by
slash (inner class is separated by dollar sign), followed by dot and method
name (or <init> for constructor) and at the end its descriptor is added.

For example method 
  int compareTo(Integer anotherInteger) 
of the class 
  java.lang.Integer
is specified as
  java/lang/Integer.compareTo(Ljava/lang/Integer;)I

Argument size processor can be optionally specified after the method
specification by adding comma and processor's class name including its package
separated by dots after the method specification. Whole line may look like this
  pkg/MethodClass.method descriptor, pkg.ProcessorClass

Comparison
----------
Comparison of two methods should be specified on each line when this mode is
used. Comparison is described by left method specification optionally with
argument size processor followed by comparison sign (<, <=, =, >=, >), then
optional multiplication expression can be used and right method specification
optionally with argument size processor is placed at the end.
Multiplication expression is specified as two double values in a parenthesis
separated by comma.
Whole line may look like this
  leftMethod sign (leftExpression, rightExpression) rightMethod
  
KNOWN ISSUES
============
Java version 1.7 is required. Version 1.8 is not supported, but recompiling
DiSL sources (version 1.0-RC4) may help.

Verification - if there is problem with running application client when java
complaints about java.lang.VerifyError it may help to add parameter
 -noverify
as a JVM option.