13 #ifndef __PROCESS_STATISTICS_HPP__
14 #define __PROCESS_STATISTICS_HPP__
16 #include <glog/logging.h>
38 std::vector<typename TimeSeries<T>::Value> values_ = timeseries.
get();
41 if (values_.size() < 2) {
45 std::vector<T> values;
46 values.reserve(values_.size());
49 values.push_back(value.
data);
52 std::sort(values.begin(), values.end());
56 statistics.count = values.size();
58 statistics.min = values.front();
59 statistics.max = values.back();
61 statistics.p50 = percentile(values, 0.5);
62 statistics.p90 = percentile(values, 0.90);
63 statistics.p95 = percentile(values, 0.95);
64 statistics.p99 = percentile(values, 0.99);
65 statistics.p999 = percentile(values, 0.999);
66 statistics.p9999 = percentile(values, 0.9999);
88 static T percentile(
const std::vector<T>& values,
double percentile)
90 CHECK_GE(values.size(), 2u);
92 if (percentile <= 0.0) {
93 return values.front();
96 if (percentile >= 1.0) {
101 const double position = percentile * (values.size() - 1);
102 const size_t index =
static_cast<size_t>(floor(position));
103 const double delta = position -
index;
106 CHECK_LT(index, values.size() - 1);
108 return values[
index] + delta * (values[index + 1] - values[
index]);
114 #endif // __PROCESS_STATISTICS_HPP__
size_t count
Definition: statistics.hpp:71
T max
Definition: statistics.hpp:74
Definition: option.hpp:28
Result< hashmap< std::string, uint64_t > > statistics(const std::string &link)
Result< int > index(const std::string &link)
T p95
Definition: statistics.hpp:79
std::vector< Value > get(const Option< Time > &start=None(), const Option< Time > &stop=None()) const
Definition: timeseries.hpp:91
T p9999
Definition: statistics.hpp:82
static Option< Statistics< T > > from(const TimeSeries< T > ×eries)
Definition: statistics.hpp:36
T min
Definition: statistics.hpp:73
T p50
Definition: statistics.hpp:77
Result< Process > process(pid_t pid)
Definition: freebsd.hpp:30
Definition: timeseries.hpp:65
T data
Definition: timeseries.hpp:71
T p99
Definition: statistics.hpp:80
T p90
Definition: statistics.hpp:78
T p999
Definition: statistics.hpp:81
Definition: statistics.hpp:30
Definition: timeseries.hpp:57