package causal
- Alphabetic
- Public
- Protected
Type Members
- final case class CausalProfiler(iterations: Int = 100, candidateSelector: (String) => Boolean = _ => true, samplingPeriod: zio.Duration = 20.millis, minExperimentDuration: zio.Duration = 1.second, experimentTargetSamples: Int = 30, warmUpPeriod: zio.Duration = 30.seconds, coolOffPeriod: zio.Duration = 2.seconds, zeroSpeedupWeight: Int = 10, maxConsideredSpeedUp: Int = 100, sleepPrecision: zio.Duration = 10.millis) extends Product with Serializable
A causal profiler inspired by https://github.com/plasma-umass/coz, that can be used to instrument code and automatically figure out which areas should be optimized to increase overall throughput.
A causal profiler inspired by https://github.com/plasma-umass/coz, that can be used to instrument code and automatically figure out which areas should be optimized to increase overall throughput.
The profiler will periodically select regions of code for optimization and will artifically speed them up by slowing down all code that runs concurrently with it. It will determine throughput based on the number of times that zio.profiling.causal.CausalProfiler.progressPoint has been invoked during an experiment.
Only zio.profiling.CostCenter will be considered for optimization, so make sure to tag the code.
- iterations
the number of experiments to perform
- candidateSelector
when a new experiment is about to be performed, this is used to decide on a candidate for optimization
- samplingPeriod
how often data about fiber locations gets collected. Lower values increase the overhead of the profiler.
- minExperimentDuration
minimum duration of an experiment
- experimentTargetSamples
number of times every progress point should be invoked during an experiment. will be used to adjust duration of the next experiment.
- warmUpPeriod
period of time to delay start of the profiler.
- coolOffPeriod
period of time to wait between experiments.
- zeroSpeedupWeight
rate of selecting no speedup for the experiment. A
zeroSpeedupWeight
of n means that that every nth experiment will have no speedup applied.- maxConsideredSpeedUp
maximum speedup percentage that will be selected for experiments. Values over 100 do not have any practical use.
- sleepPrecision
estimated precision of
Thread.sleep
. The profiler will busy spin once it enters this proximity to the target time in order to increase accuraccy.
- final case class ExperimentResult(selected: String, speedup: Float, duration: Long, effectiveDuration: Long, selectedSamples: Long, throughputData: List[ThroughputData]) extends Product with Serializable
- final case class ProfilingResult(experiments: List[ExperimentResult]) extends Product with Serializable
- final case class ThroughputData(name: String, delta: Int) extends Product with Serializable
Value Members
- object CausalProfiler extends Serializable