Привет, дорогой читатель!
Встречайте перцентиль. Почему его так любят и в чем его значение для IT отрасли расскажу в данной статье!
Так как большинству будет понятен пример из мира связи, то возьмем практическую историю про интернет-провайдеров (далее ISP).
Зачастую крупным клиентам (интернет площадки, крупные сервисы) счета выставляются не за определенную полосу пропускания (BW), а за ее фактическое потребление.
Почему так?
Если коротко, то ограничивать сервис по полосе в часы максимального спроса нельзя (вредно). Это связанно с особенностями работы TCP. Нельзя просто взять и поставить излишек клиентских запросов в очередь. А если ISP начнет шейпить скорость, то TCP за счет встроенных механизмов начнет равномерно снижать клиентские аппетиты, что приведет к увеличению latency, росту packet drops и прочим неприятным побочным эффектам. Одним словом сервис начнет деградировать, КПД канала начнет резко падать. Зачем это той же интернет площадке в дни черной пятницы? Клиенты будет не довольны! Но если не ограничивать сервис по полосе возникает 2 проблемы. Первая: что если рост утилизации канала связан не с ростом количества клиентов сервиса, а с DDoS атакой? Вторая: как это все дело тарифицировать чтобы и ISP остался доволен и клиент не попал на большие деньги?
Начнем с первой проблемы - DDoS.
Тут все просто и сложно одновременно. Разделить полезный трафик от паразитного довольно сложно. Есть разные подходы и методы защиты от DDoS. Можно защищаться на L7 уровне (web приложение), можно на уровне L3/L4. Что-то из этого обязательно должно быть!
Что-же касательно тарификации, то тут как раз и приходит на помощь перцентиль.
В статистике есть такое понятие как "выброс". Если взглянуть на картинку в начале статьи, то вы можете заметить в начале числового ряда метрики "рост" очень маленькое значение роста, а в конце очень большое. Если учитывать в вычислении среднего значения эти показатели, то мы получим не очень точную картину относительно "средней температуры по больнице". Чтобы получить объективную картину нужно отсечь 5% значений с левого конца числового ряда и 5% с правого.
Основываясь на статистике при расчете потребления BW ISP берет в расчет 90% значений фактически потребленной полосы, реже 98%.
Среднее значение, рассчитанное таким образом называется усеченным (или урезанным) средним.
Однако ISP интересует не среднее, а перцентиль. Если с правого конца ряда метрики отсекается 5%, то в частности интересует значение 95-го перцентиля.
Как находится это значение? Да очень просто! Это значение самого большого значения метрики на границе отсечения. Опять же, если смотреть на картинку в начале статьи, то 95-й перцентиль это значение роста на этой самой границе.
Вооружившись понятийным аппаратом взглянем на график потребления BW клиентом за период тарификации:
На графики мы уже видим результат вычисления. Однако чтобы его выполнить ISP сводит в таблицу N значений измеренной BW с интервалом к примеру 5 минут. Если брать месяц (~30 дней), то количество таки измерений N=8640. Все эти значения сортируются, а последние 5% самых высоких значений отсекаются. В точке отсечения остается значения искомого перцентиля X.
M = N x 0,05, где M - количество верхних, отсекаемых значений
M = 8640 x 0,05 = 432
тогда X это 433 значение - точка отсечения.
К примеру по договору с ISP клиент арендует полосу 1Gbit/s. В течении месяца клиент несколько раз подвергался DDoS атакам. В моменты атак наблюдались кратковременные всплески утилизации до 9,5Gbit/s. Также несколько раз за месяц сервис проводил акции и утилизация каналы выходила за пределы 1Gbit/s.
Посчитав получилось, что X = 1,135 Gbit/s. Получается, что DDoS атаки и акционные всплески по утилизации остались за скобками.
Давайте теперь посчитаем, что было бы если бы ISP выставлял счета по максимальному значению потребляемой полосы. Предположим, что выделенный канал на 1Gbit/s стоит 100 т.р. При этом превышение тарифа оплачивается из расчета 100 р/(Mbit/s). При использовании 95-го перцентиля доплата будет рассчитываться так: (1135 - 1000) x 0.1 = 135 x 100р = 13,5 т.р. Т.е. переплата составит 13,5 т.р. А вот если не использовать перцентиль, то будет так: (9500 - 1000) x 100р = 850 т.р. Т.е. переплата составит 850 тысяч рублей.
Есть разница?) Конечно есть - и она была бы неадекватной если бы не 95-й перцентиль.
Данный пример показывает как используется перцентиль. Область применения аналогичных вычислений очень широка. Особенно часто данный подход применяется при изучении больших массивов данных, в частности в системах мониторинга когда важно уловить тренды каких-либо событий.
Полезная литература и ссылки:
1. Статистика и котики, Владимир Савельев;
2. Лекторий по SRE (Тинькофф Образование), Дмитрий Масленников.
В частности про гистограммы, квантили, медианы и перцентили: Цели мониторинга, логи и метрики (~ с 16-ой минуты ).
P.S. Если материал был полезен не забывайте отблагодарить лайком или комментарием. Ну а лучшей похвалой будет ваша регистрация в академии Инфокомм.