1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Принесла домой кочан айсберга с мыслью сделать что-то вроде цезаря. Вот сижу, ем его с пельменями. Ну в принципе, курица, тесто и соус в наличии, так что...
🔥9😐2
Завтрак Rust-разработчика
🥴24🥰11🤡2😐2🤣1
👍16😁12🥴6💯3
#prog #article

Premature optimization

Good optimization improves the right things, at the right time, and with reasonable trade-offs.

<...>

Premature optimization is when at least one of the following is true:

1. Changing the wrong thing. <...>
2. Picking the wrong time. <...>
3. Choosing the wrong trade-offs. <...>
🫡6🤔3👍1😁1
Forwarded from Мегапак (Елизавета)
🫡29😁25💩1
👍8
🤡26🖕12🤮8💩7👍6🍌6😭5
r/outside

A subreddit for Outside, a free-to-play MMORPG with 7 billion+ active players.
🔥9😁9🤮1💩1🤡1
21💩2🤡1🤨1😐1
😁62🤔1🎉1
#meme про метрическую систему мер (точнее, отсутствие таковой)
😁26🤯1
#prog

А ещё, так как форк открытый, это и #amazingopensource
Тут Флант Prometheus форкнули переписали с кучей оптимизаций. Пост на Хабре большой с кучей подробностей + провели сравнение с VictoriaMetrics. Сам я ещё, естественно, не успел попробовать, но выглядит многообещающе

Если подобным образом проанализировать все лейблы на реальных данных, получится, что:

- 32,7 % из них имеют всего одно возможное значение, например true или 0;
- 60 % — от 2 до 255 значений, то есть укладываются в 1 байт;
- 7,3 % — от 256 до 5275 значений;
- 0 % — больше 65 535 значений.

Это значит, что все возможные значения укладываются в два байта.

Мы решили хранить все ID (#0, #1, #2 и т. д.) не в четырёхбайтных значениях, а как два бита, указывающие количество байт, в которые укладывается число, плюс значение.

Это дало нам очередной выигрыш по памяти — теперь весь labelset для 1 миллиона метрик стал занимать 30 МБ. Это в 30 раз лучше стартовых 762 МБ.
. . .
Оптимальное хранение строк дало приличный выигрыш и в индексе. Если раньше в нём были строки и хэш-таблицы, которые не особенно оптимально хранятся в памяти, то в нашей реализации есть ID, которые выдаются по порядку. Это позволяет хранить в кэше четырехбайтные числа uint32 и заменить хэш-таблицы на sparse-векторы и Bitset.

В итоге основным потребителем памяти у нас стали точки. Prometheus хранит их достаточно компактно: он использует Gorilla Encoding и битовые операции. Это не значит, что оптимизировать нечего, но для этого надо внимательно посмотреть на данные.
. . .
Оказалось, что уникальных последовательностей временных меток всего 10 % от миллиона. Эта оптимизация позволила выиграть 55,5 % по памяти просто за счёт дедупликации.
. . .
После всех преобразований мы получили выигрыш по хранению точек почти в три раза: изначальные 787,72 МБ превратились в 283,9 МБ. При этом чем больше данных и серий, тем лучше срабатывает наша оптимизация. Если на одном миллионе метрик мы выиграли по хранению точек в 2,7 раза, то на трёх миллионах это будет уже три с небольшим раза.
. . .
В процессе работы Prometheus пишет WAL. Мы оптимизировали журнал предзаписи примерно в 19 раз. Изначальные 6,2 ГБ без сжатия в Prometheus v2 для 1 миллиона метрик превратились в 153 МБ в Deckhouse Prom++.

Deckhouse Prom++: мы добавили плюсы к Prometheus и сократили потребление памяти в 7,8 раза
https://habr.com/ru/companies/flant/articles/878282/
+
Deckhouse Prom++
https://github.com/deckhouse/prompp/

Чат: @prom_plus_plus
❤‍🔥14🔥5👎1
#music

Буквально любимый трек в One finger death punch. Жаль, что в игре урезанная версия.

https://jessevalentinemusic.bandcamp.com/track/shaolin-warrior
1👎1🤔1