package edu.brown.profilers; import edu.brown.statistics.FastIntHistogram; public class SpecExecProfiler extends AbstractProfiler { /** * The total amount time spent in SpecExecScheduler.next() */ public final ProfileMeasurement total_time = new ProfileMeasurement("TOTAL_TIME", true); /** * The amount of time spent performing the conflict calculations */ public final ProfileMeasurement compute_time = new ProfileMeasurement("COMPUTE_TIME", true); /** * The current queue size when SpecExecScheduler.next() is invoked */ public final FastIntHistogram queue_size = new FastIntHistogram(100); /** * The number of txns analyzed per invocation of SpecExecScheduler.next() */ public final FastIntHistogram num_comparisons = new FastIntHistogram(100); /** * The number of txns that are valid matches during the scan of the partition's lock queue * in SpecExecScheduler.next(). This is only useful for certain experiments. */ public final FastIntHistogram num_matches = new FastIntHistogram(100); /** * The number of txns executed per stalled txn */ public final FastIntHistogram num_executed = new FastIntHistogram(100); /** * The number of times that the SpecExecScheduler successfully found * something to execute that didn't have conflicts. */ public int success = 0; /** * The number of times that the SpecExecScheduler was interrupted * and stopped its search. */ public int interrupts = 0; @Override public void reset() { super.reset(); this.success = 0; this.interrupts = 0; this.num_comparisons.clear(); this.num_matches.clear(); this.num_executed.clear(); this.queue_size.clear(); } }