Skip to content

Commit d0df53a

Browse files
committed
feat: SensorMeasure can carry an external cpu share, fix persistence
1 parent 01ed1e7 commit d0df53a

File tree

4 files changed

+52
-4
lines changed

4 files changed

+52
-4
lines changed

metadata/src/main/java/net/laprun/sustainability/power/SensorMeasure.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@
77
*/
88
public interface SensorMeasure {
99

10+
double MISSING_CPU_SHARE = -1.0;
11+
double MISSING_COMPONENT_VALUE = -1.0;
12+
long MISSING_TIME = -1;
13+
1014
/**
1115
* Array recording the power consumption reported by each component of this sensor
1216
*
1317
* @return the values for each power component, as described in the {@link SensorMetadata} associated with the sensor
1418
*/
1519
default double[] components() {
16-
return new double[] { -1.0 };
20+
return new double[] { MISSING_COMPONENT_VALUE };
1721
}
1822

1923
/**
@@ -22,7 +26,7 @@ default double[] components() {
2226
* @return the start timestamp in milliseconds for this measure
2327
*/
2428
default long startMs() {
25-
return -1;
29+
return MISSING_TIME;
2630
}
2731

2832
/**
@@ -31,7 +35,7 @@ default long startMs() {
3135
* @return the end timestamp in milliseconds for this measure
3236
*/
3337
default long endMs() {
34-
return -1;
38+
return MISSING_TIME;
3539
}
3640

3741
/**
@@ -57,6 +61,10 @@ default boolean isPartial() {
5761
return false;
5862
}
5963

64+
default double externalCPUShare() {
65+
return MISSING_CPU_SHARE;
66+
}
67+
6068
/**
6169
* Represents an invalid or somehow missed measure.
6270
*/
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package net.laprun.sustainability.power.measures;
2+
3+
import net.laprun.sustainability.power.SensorMeasure;
4+
5+
public record ExternalCPUShareSensorMeasure(SensorMeasure delegate, double cpuShare) implements SensorMeasure {
6+
@Override
7+
public double[] components() {
8+
return delegate.components();
9+
}
10+
11+
@Override
12+
public long startMs() {
13+
return delegate.startMs();
14+
}
15+
16+
@Override
17+
public long endMs() {
18+
return delegate.endMs();
19+
}
20+
21+
@Override
22+
public long durationMs() {
23+
return delegate.durationMs();
24+
}
25+
26+
@Override
27+
public boolean isPartial() {
28+
return delegate.isPartial();
29+
}
30+
31+
@Override
32+
public double externalCPUShare() {
33+
return cpuShare;
34+
}
35+
}

persistence/src/main/java/net/laprun/sustainability/power/persistence/Measure.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class Measure extends PanacheEntity {
1818
public long endTime;
1919
public long duration;
2020
public double[] components;
21+
public double externalCPUShare;
2122
public String session;
2223

2324
public static List<Measure> forApplication(String appName) {
@@ -51,8 +52,10 @@ public String toString() {
5152
"{appName='" + appName + '\'' +
5253
", startTime=" + startTime +
5354
", endTime=" + endTime +
55+
", duration=" + duration +
56+
", partial=" + isPartial() +
5457
", components=" + Arrays.toString(components) +
5558
", session='" + session + '\'' +
56-
'}';
59+
", extCPU=" + externalCPUShare + '}';
5760
}
5861
}

persistence/src/main/java/net/laprun/sustainability/power/persistence/Persistence.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ public Measure save(SensorMeasure measure, String appName, String session) {
2525
persisted.session = session == null ? defaultSession(appName) : session;
2626
persisted.startTime = measure.startMs();
2727
persisted.endTime = measure.endMs();
28+
persisted.duration = measure.durationMs();
29+
persisted.externalCPUShare = measure.externalCPUShare();
2830
persisted.persist();
2931
Log.debugf("Persisted %s, measure duration: %sms", persisted, persisted.endTime - persisted.startTime);
3032
return persisted;

0 commit comments

Comments
 (0)