add concurrency to status indicator

This commit is contained in:
Jonathan Shook
2025-01-02 12:14:10 -06:00
parent a8bbd9f923
commit f249d49f26
4 changed files with 28 additions and 16 deletions

View File

@@ -17,12 +17,15 @@
package io.nosqlbench.engine.api.activityapi.core.progress; package io.nosqlbench.engine.api.activityapi.core.progress;
import io.nosqlbench.engine.api.activityimpl.uniform.Activity; import io.nosqlbench.engine.api.activityimpl.uniform.Activity;
import io.nosqlbench.nb.api.engine.activityimpl.CyclesSpec;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
import io.nosqlbench.nb.api.engine.util.Unit; import io.nosqlbench.nb.api.engine.util.Unit;
import java.time.Instant; import java.time.Instant;
public class ActivityMetricProgressMeter implements ProgressMeterDisplay, CompletedMeter, RemainingMeter, ActiveMeter { public class ActivityMetricProgressMeter
implements ProgressMeterDisplay, CompletedMeter, RemainingMeter, ActiveMeter, ConcurrentMeter
{
private final Activity activity; private final Activity activity;
private final Instant startInstant; private final Instant startInstant;
@@ -49,12 +52,10 @@ public class ActivityMetricProgressMeter implements ProgressMeterDisplay, Comple
@Override @Override
public double getMaxValue() { public double getMaxValue() {
double totalRecycles = 1.0d + activity.getActivityDef() double total_recycles = CyclesSpec.parse(activity.getConfig().get("recycles"))
.getParams() .cycle_count();
.getOptionalString("recycles") double total_cycles = CyclesSpec.parse(activity.getConfig().get("cycles")).cycle_count();
.flatMap(Unit::longCountFor) double totalCycles = total_recycles * total_cycles;
.orElse(0L);
double totalCycles = activity.getActivityDef().getCycleCount() * totalRecycles;
return totalCycles; return totalCycles;
} }
@@ -65,12 +66,12 @@ public class ActivityMetricProgressMeter implements ProgressMeterDisplay, Comple
@Override @Override
public double getRemainingCount() { public double getRemainingCount() {
return getMaxValue()- getCurrentValue(); return getMaxValue() - getCurrentValue();
} }
@Override @Override
public double getActiveOps() { public double getActiveOps() {
return bindTimer.getCount()-cyclesTimer.getCount(); return bindTimer.getCount() - cyclesTimer.getCount();
} }
@Override @Override
@@ -84,4 +85,8 @@ public class ActivityMetricProgressMeter implements ProgressMeterDisplay, Comple
} }
@Override
public int getConcurrency() {
return activity.getConfig().getThreads();
}
} }

View File

@@ -0,0 +1,5 @@
package io.nosqlbench.engine.api.activityapi.core.progress;
public interface ConcurrentMeter {
int getConcurrency();
}

View File

@@ -27,6 +27,7 @@ public interface ProgressMeterDisplay {
default double getMinValue() { default double getMinValue() {
return 0.0d; return 0.0d;
} }
double getMaxValue(); double getMaxValue();
double getCurrentValue(); double getCurrentValue();
@@ -50,10 +51,10 @@ public interface ProgressMeterDisplay {
default ProgressSummary getSummary() { default ProgressSummary getSummary() {
return new ProgressSummary( return new ProgressSummary(
getProgressName(), getProgressName(), (this instanceof RemainingMeter rm) ? rm.getRemainingCount() : -1.0,
(this instanceof RemainingMeter rm) ? rm.getRemainingCount() : -1.0, (this instanceof ActiveMeter am) ? am.getActiveOps() : -1.0,
(this instanceof ActiveMeter am) ? am.getActiveOps() : -1.0, (this instanceof ConcurrentMeter conc) ? conc.getConcurrency() : -1,
(this instanceof CompletedMeter cm) ? cm.getCompletedCount() : -1.0); (this instanceof CompletedMeter cm) ? cm.getCompletedCount() : -1.0);
} }
default long getProgressETAMillis() { default long getProgressETAMillis() {
@@ -70,7 +71,7 @@ public interface ProgressMeterDisplay {
} }
default Instant getETAInstant() { default Instant getETAInstant() {
return Instant.ofEpochMilli(System.currentTimeMillis()+getProgressETAMillis()); return Instant.ofEpochMilli(System.currentTimeMillis() + getProgressETAMillis());
} }

View File

@@ -22,6 +22,7 @@ public record ProgressSummary(
String name, String name,
double pending, double pending,
double current, double current,
double concurrency,
double complete double complete
) { ) {
@@ -39,8 +40,8 @@ public record ProgressSummary(
legend.append("pending,"); legend.append("pending,");
values.append(String.format("%.0f,",pending)); values.append(String.format("%.0f,",pending));
legend.append("current,"); legend.append("current/max,");
values.append(String.format("%.0f,", current)); values.append(String.format("%.0f/%.0f,", current, concurrency));
legend.append("complete,"); legend.append("complete,");
values.append(String.format("%.0f,",complete)); values.append(String.format("%.0f,",complete));
legend.setLength(legend.length()-1); legend.setLength(legend.length()-1);