Deckhouse Prom++: как мы сжали разметку метрик Prometheus и снизили расход памяти в 2,5 раза с помощью статистики данных
Хотели избежать копирования данных, придумали свою служебную разметку, а потом обнаружили: она занимает почти столько же места, сколько сам исходный текст. Мы перестали гадать, посмотрели на реальные данные и применили простые, но эффективные подходы: числа переменной длины, отказ от double в пользу целых типов и умные if-else вместо switch . Итог: мы сжали разметку в 2,5 раза и при этом даже немного выиграли в скорости. Рассказываем, как знание предметной области помогло нам не усложнять код, а сделать его быстрее и легче.
https://habr.com/ru/companies/flant/articles/1048018/
#c++ #c++23 #prometheus #prom++ #jemalloc #switch #unroll #ifelse #varint #offset

Deckhouse Prom++: как мы сжали разметку метрик Prometheus и снизили расход памяти в 2,5 раза с помощью статистики данных
Миллионы метрик, чистый код, но аллокатор показывает в разы больше памяти, чем должно занимать «полезное» содержимое. Профайлер светит на парсинг, а вы гадаете: куда деваются мегабайты? Привет, меня...







