Статьи
Performance

ЧТО ТАКОЕ ПЕРСЕНТИЛЬ?

Мы все знаем про такие величины как минимум и максимум, а ещё про среднее.

Если мы возьмем числовой отрезок данных за какой-то период времени, скажем за 10 секунд 10 значений.

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Минимум будет = 1

Максимум = 10

Среднее = (1+2*3+4+5+6+7+8+9+10) / 10 = 5.5, то есть сумма всех значений, разделенная на количество значений.

Представим, что эти метрики, мин, макс и среднее мы используем в оценке производительности, а данные выше значения - это время ответа на какой-то запрос. При этом у нас есть требование, что время ответа не должно превышать 6с.

Что нам скажут наши метрики? Они скажут, что в среднем время ответа не превышает 6 секунд, так как среднее 5.5, но есть выбросы, такие как максимум в 10с, но мы не понимаем, не видя числового ряда или графика, критичность этих выбросов и по среднему можем сказать, что все хорошо, когда это фактически не так.

Есть специальная агрегационная метрика Персентиль (percentile), которая позволяет оценивать точнее числовой ряд через эту агрегацию. Как правило числовые ряды не состоят из 10 значений, а состоят из миллионов значений, и посмотреть на них глазами довольно тяжело, а графики не всегда показательны. Описания вида минимум, максимум и среднее не дают полную картину. Тут приходит на помощь этот самый персентиль.

Например, 50 персентиль для данного выше ряда будет 5, а 90 персентиль 9. А сотый 10. На приведенном выше отрезке это довольно легко определить, не применяя формул, тем более, что значения уже отсортированы по возрастанию (чтобы посчитать персентиль нужно отсортировать массив данных). Как рассчитывается персентиль - это отдельная наука, и есть множество способов и формул. Об этом мы не будем сейчас.

Какой смысл кроется за понятием персентиля? Например, 50 персентиль говорит, что 50% запросов были выполнены до 5с, то есть 50% выше. А 90, что 90% запросов были выполнены за 9 и менее секунд.

Отсюда, скорей всего, можно сделать вывод, что 40% (разница между 50pct и 90pct) запросов выполняются за время от 5 до 9 с. И это может быть критично для конечного пользователя.

Можно считать любого вида персентили 75pct, 99pct и тд. Зависит от того, что именно вы хотите увидеть с помощью этой метрики.

Часто это понятие применяется в статистике (откуда оно и взято), в дата аналитике и, конечно, при анализе производительности.