adaptive-caching-framework
Changes
framework/autonomicmanager/pom.xml 12(+12 -0)
framework/autonomicmanager/README.md 2(+1 -1)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java 2(+1 -1)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/adaptation/metrics/LightweightMetrics.java 20(+0 -20)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/metrics/LightweightMetricAspect.java 39(+37 -2)
Details
framework/autonomicmanager/pom.xml 12(+12 -0)
diff --git a/framework/autonomicmanager/pom.xml b/framework/autonomicmanager/pom.xml
index aa66cc3..e0df42e 100644
--- a/framework/autonomicmanager/pom.xml
+++ b/framework/autonomicmanager/pom.xml
@@ -142,6 +142,18 @@
<version>4.0.0</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-math3</artifactId>
+ <version>3.6.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>ca.umontreal.iro.simul</groupId>
+ <artifactId>ssj</artifactId>
+ <version>3.3.1</version>
+ </dependency>
+
</dependencies>
<build>
framework/autonomicmanager/README.md 2(+1 -1)
diff --git a/framework/autonomicmanager/README.md b/framework/autonomicmanager/README.md
index 2f83648..266a50a 100644
--- a/framework/autonomicmanager/README.md
+++ b/framework/autonomicmanager/README.md
@@ -37,7 +37,7 @@ If your project is maven-based, in your `pom.xml`:
<dependency>
<groupId>br.ufrgs.inf.prosoft.adaptivecaching</groupId>
<artifactId>autonomicmanager</artifactId>
- <version>0.5.0-SNAPSHOT</version>
+ <version>0.6.0-SNAPSHOT</version>
</dependency>
</dependencies>
```
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java
index 2907952..01eef01 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java
@@ -17,7 +17,7 @@ import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache.CacheMonitor;
import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache.vendors.guava.GuavaMonitor;
import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage.providers.MongoRepository;
import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage.Repository;
-import br.ufrgs.inf.prosoft.adaptivecaching.sampling.adaptation.metrics.LightweightMetricAspect;
+import br.ufrgs.inf.prosoft.adaptivecaching.sampling.metrics.LightweightMetricAspect;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import org.slf4j.Logger;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/metrics/LightweightMetrics.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/metrics/LightweightMetrics.java
new file mode 100644
index 0000000..b18f9de
--- /dev/null
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/metrics/LightweightMetrics.java
@@ -0,0 +1,74 @@
+package br.ufrgs.inf.prosoft.adaptivecaching.sampling.metrics;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LightweightMetrics {
+
+ private long occurrences;
+ private List<Long> times;
+ private List<Long> memories;
+ private List<Long> threadNumber;
+ private long throwns;
+ private List<Long> startTimes;
+
+ //not able to get CPU usage
+
+ public LightweightMetrics(){
+ startTimes = new ArrayList<>();
+ times = new ArrayList<>();
+ memories = new ArrayList<>();
+ threadNumber = new ArrayList<>();
+ }
+
+ public void addTime(long startTime, long time){
+ startTimes.add(startTime);
+ times.add(time);
+ }
+
+ public void addThreadNumber(long threads){
+ threadNumber.add(threads);
+ }
+
+ public void addMemoryConsumption(long memory){
+ memories.add(memory);
+ }
+
+ public void incThrown() {
+ throwns++;
+ }
+
+ public void incOccurrence() {
+ occurrences++;
+ }
+
+ public List<Long> interIntervals(){
+ List<Long> intervalTimes = new ArrayList<>();
+ long lastTime = startTimes.get(0);
+ for(Long l : startTimes){
+ intervalTimes.add(l - lastTime);
+ lastTime = l;
+ }
+ return intervalTimes;
+ }
+
+ public long getOccurrences() {
+ return occurrences;
+ }
+
+ @Override
+ public String toString() {
+ return "{" +
+ "occurrences=" + occurrences +
+ '}';
+ }
+
+ //TODO use commons math to in other parts of the code
+ private double mean(List<Number> values){
+ return StatUtils.mean(values);
+ }
+
+ private double standardDeviation(List<Number> values){
+ return FastMath.sqrt(StatUtils.variance(values));
+ }
+}
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/statistics/StatisticalTest.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/statistics/StatisticalTest.java
new file mode 100644
index 0000000..4234c07
--- /dev/null
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/statistics/StatisticalTest.java
@@ -0,0 +1,18 @@
+
+package br.ufrgs.inf.prosoft.adaptivecaching.sampling.statistics;
+
+public class StatisticalTest {
+
+ public static isNormalDistribution(){
+ //commons math
+ final NormalDistribution unitNormal = new NormalDistribution(0d, 1d);
+ TestUtils.kolmogorovSmirnovTest(unitNormal, sample, false);
+
+
+ //https://github.com/umontreal-simul/ssj
+
+ //http://jdistlib.sourceforge.net/
+ NormalityTest.xxx_statistic(double[] x);
+ NormalityTest.xxx_p_value(double stat, int df);
+ }
+}