| 133 | } |
| 134 | |
| 135 | RuntimeProfile::TimeSeriesCounter* RuntimeProfile::AddSamplingTimeSeriesCounter( |
| 136 | const string& name, TUnit::type unit, SampleFunction fn, bool is_system) { |
| 137 | DCHECK(fn != nullptr); |
| 138 | lock_guard<SpinLock> l(counter_map_lock_); |
| 139 | TimeSeriesCounterMap::iterator it = time_series_counter_map_.find(name); |
| 140 | if (it != time_series_counter_map_.end()) return it->second; |
| 141 | int32_t update_interval = is_system ? |
| 142 | FLAGS_periodic_system_counter_update_period_ms : |
| 143 | FLAGS_periodic_counter_update_period_ms; |
| 144 | TimeSeriesCounter* counter = pool_->Add( |
| 145 | new SamplingTimeSeriesCounter(name, unit, std::move(fn), update_interval)); |
| 146 | if (is_system) { |
| 147 | counter->SetIsSystem(); |
| 148 | } |
| 149 | time_series_counter_map_[name] = counter; |
| 150 | PeriodicCounterUpdater::RegisterTimeSeriesCounter(counter); |
| 151 | has_active_periodic_counters_ = true; |
| 152 | return counter; |
| 153 | } |
| 154 | |
| 155 | RuntimeProfile::TimeSeriesCounter* RuntimeProfile::AddSamplingTimeSeriesCounter( |
| 156 | const string& name, Counter* src_counter, bool is_system) { |