Packages

package causal

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. Protected

Type Members

  1. 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.

  2. final case class ExperimentResult(selected: String, speedup: Float, duration: Long, effectiveDuration: Long, selectedSamples: Long, throughputData: List[ThroughputData]) extends Product with Serializable
  3. final case class ProfilingResult(experiments: List[ExperimentResult]) extends Product with Serializable
  4. final case class ThroughputData(name: String, delta: Int) extends Product with Serializable

Value Members

  1. object CausalProfiler extends Serializable

Ungrouped