Гистограммы и перцентили: почему histogram_quantile врёт и что дают нативные гистограммы
histogram_quantile не считает перцентиль — он его оценивает, линейно интерполируя внутри той корзины, куда перцентиль попал. Точность целиком определяется границами корзин: если 99% запросов укладываются между le="0.1" и le="1.0", то p99 будет вычислен интерполяцией внутри интервала шириной в 900 миллисекунд, и любое значение оттуда одинаково правдоподобно. Хуже того, если перцентиль попал в последнюю корзину +Inf, у неё нет верхней границы, и функция вернёт верхнюю границу предпоследней — то есть график упрётся в потолок последней настроенной корзины и перестанет расти. Отсюда практика: корзины подбирают под целевой SLO, чтобы вокруг порога их было густо. Нативные гистограммы снимают эту проблему: границы задаются экспоненциальной схемой (schema от −4 до +8, соседние корзины отличаются в фиксированное число раз), корзины создаются по мере надобности, пустые не стоят ничего, а вся гистограмма — один сэмпл вместо десятков серий.