Print this page




  81                        float inter_sweep_estimate) {
  82     // If the latest inter-sweep time is below our granularity
  83     // of measurement, we may call in here with
  84     // inter_sweep_current == 0. However, even for suitably small
  85     // but non-zero inter-sweep durations, we may not trust the accuracy
  86     // of accumulated data, since it has not been "integrated"
  87     // (read "low-pass-filtered") long enough, and would be
  88     // vulnerable to noisy glitches. In such cases, we
  89     // ignore the current sample and use currently available
  90     // historical estimates.
  91     if (inter_sweep_current > _threshold) {
  92       ssize_t demand = prevSweep() - count + splitBirths() - splitDeaths();
  93       float rate = ((float)demand)/inter_sweep_current;
  94       _demand_rate_estimate.sample(rate);
  95       _desired = (ssize_t)(_demand_rate_estimate.padded_average()
  96                            *inter_sweep_estimate);
  97     }
  98   }
  99 
 100   ssize_t desired() const { return _desired; }


 101   ssize_t coalDesired() const { return _coalDesired; }
 102   void set_coalDesired(ssize_t v) { _coalDesired = v; }
 103 
 104   ssize_t surplus() const { return _surplus; }
 105   void set_surplus(ssize_t v) { _surplus = v; }
 106   void increment_surplus() { _surplus++; }
 107   void decrement_surplus() { _surplus--; }
 108 
 109   ssize_t bfrSurp() const { return _bfrSurp; }
 110   void set_bfrSurp(ssize_t v) { _bfrSurp = v; }
 111   ssize_t prevSweep() const { return _prevSweep; }
 112   void set_prevSweep(ssize_t v) { _prevSweep = v; }
 113   ssize_t beforeSweep() const { return _beforeSweep; }
 114   void set_beforeSweep(ssize_t v) { _beforeSweep = v; }
 115 
 116   ssize_t coalBirths() const { return _coalBirths; }
 117   void set_coalBirths(ssize_t v) { _coalBirths = v; }
 118   void increment_coalBirths() { _coalBirths++; }
 119 
 120   ssize_t coalDeaths() const { return _coalDeaths; }


  81                        float inter_sweep_estimate) {
  82     // If the latest inter-sweep time is below our granularity
  83     // of measurement, we may call in here with
  84     // inter_sweep_current == 0. However, even for suitably small
  85     // but non-zero inter-sweep durations, we may not trust the accuracy
  86     // of accumulated data, since it has not been "integrated"
  87     // (read "low-pass-filtered") long enough, and would be
  88     // vulnerable to noisy glitches. In such cases, we
  89     // ignore the current sample and use currently available
  90     // historical estimates.
  91     if (inter_sweep_current > _threshold) {
  92       ssize_t demand = prevSweep() - count + splitBirths() - splitDeaths();
  93       float rate = ((float)demand)/inter_sweep_current;
  94       _demand_rate_estimate.sample(rate);
  95       _desired = (ssize_t)(_demand_rate_estimate.padded_average()
  96                            *inter_sweep_estimate);
  97     }
  98   }
  99 
 100   ssize_t desired() const { return _desired; }
 101   void set_desired(ssize_t v) { _desired = v; }
 102 
 103   ssize_t coalDesired() const { return _coalDesired; }
 104   void set_coalDesired(ssize_t v) { _coalDesired = v; }
 105 
 106   ssize_t surplus() const { return _surplus; }
 107   void set_surplus(ssize_t v) { _surplus = v; }
 108   void increment_surplus() { _surplus++; }
 109   void decrement_surplus() { _surplus--; }
 110 
 111   ssize_t bfrSurp() const { return _bfrSurp; }
 112   void set_bfrSurp(ssize_t v) { _bfrSurp = v; }
 113   ssize_t prevSweep() const { return _prevSweep; }
 114   void set_prevSweep(ssize_t v) { _prevSweep = v; }
 115   ssize_t beforeSweep() const { return _beforeSweep; }
 116   void set_beforeSweep(ssize_t v) { _beforeSweep = v; }
 117 
 118   ssize_t coalBirths() const { return _coalBirths; }
 119   void set_coalBirths(ssize_t v) { _coalBirths = v; }
 120   void increment_coalBirths() { _coalBirths++; }
 121 
 122   ssize_t coalDeaths() const { return _coalDeaths; }