увеличить накопители для процентили статистики, используя размер скользящего окна

Мы используем форсированные аккумуляторы для вычисления процентилей времени запроса к серверу следующим образом:

static constexpr size_t ROLLING_WINDOW_SIZE = 1000;
using accumulator_t = boost::accumulators::accumulator_set<long long int,
boost::accumulators::stats<boost::accumulators::tag::extended_p_square_quantile,
boost::accumulators::tag::rolling_count> >;
const std::array<double, 4> QUANTILE_PROBABILITIES = { 0.5, 0.75, 0.95, 0.99 };

....

Percentiles::Percentiles() :
m_accumulator(boost::accumulators::extended_p_square_probabilities = QUANTILE_PROBABILITIES,
boost::accumulators::tag::rolling_window::window_size = ROLLING_WINDOW_SIZE) {}

Новые значения вставляются следующим образом:

m_accumulator(value);

и процентиль рассчитывается по формуле:

auto 99_percentile = boost::accumulators::quantile(m_accumulator,
boost::accumulators::quantile_probability = 0.99);

Проблема, которую мы видим, состоит в том, что аккумулятор почему-то на самом деле не рассчитывает квантили по указанному размеру скользящего окна, сохраняет некоторые значения в течение более длительного времени и использует их для расчета. Это приводит к тому, что после быстрого увеличения (временного скачка) значения 99_percentile он восстанавливается крайне медленно, даже если проблема исчезла, а последние 1000 значений выглядели хорошо. Любые идеи очень приветствуются.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …