Я сейчас читаю Книга Google SRE, что очень интересно читать.
В Главе 6 - Мониторинг распределенных систем есть раздел, в котором объясняется, как выбрать подходящее измерение.
Я не понял примера, который привел автор, объясняя важность детализации измерений. Мы можем прочитать:
Сбор посекундных измерений загрузки ЦП может дать интересные данные, но такие частые измерения могут быть очень дорогими для сбора, хранения и анализа. Если ваша цель мониторинга требует высокого разрешения, но не требует чрезвычайно низкой задержки, вы можете сократить эти расходы, выполнив внутреннюю выборку на сервере, а затем настроив внешнюю систему для сбора и агрегирования этого распределения по времени или по серверам.
Ты можешь:
- Записывайте текущую загрузку ЦП каждую секунду.
- Используя сегменты с детализацией 5%, каждую секунду увеличивайте соответствующий сегмент использования ЦП.
- Агрегируйте эти значения каждую минуту. Эта стратегия позволяет вам наблюдать короткие горячие точки ЦП без очень высоких затрат на сбор и хранение.
Может кто-нибудь объяснить часть «5% -ной детализации»?
Детализация 5% означает, что у вас есть 20 различных счетчиков.
Каждую секунду вы смотрите на накопление ядром использованных секунд процессора. И если использование было между 0 и 5 процентами, вы бы увеличили первый счетчик. Между 5 и 10 второй счетчик. И т.д. Между 95 и 100 процентами вы увеличиваете последний счетчик.
Например, если ядро сообщает, что было использовано 810,91 секунды ЦП, а секунду назад - 810,83. Вы бы знали, что использование за последнюю секунду было 8%, что соответствует диапазону от 5 до 10 процентов.
Это пример, и особенности, конечно, будут зависеть от фактических требований, и если вы хотите сделать что-то подобное в многопроцессорной системе, вам придется решить, нужны ли вам измерения по ЦП или измерения в масштабе всей системы.