EXPERIMENTALCHILL Telegram 266
Long time no see

1. Мне очень понравилась статья о memory profiling от Дениса: https://easyperf.net/blog/2024/02/12/Memory-Profiling-Part1
В целом он очень правильно описал основы -- вам нужно смотреть на Virtual Memory как общее пространство и лимит ядра, RSS как внутреннюю работу и memory footprint -- сколько памяти в каждые X ms вы трогаете. Например, если вы видете много спайков в количестве тронутой памяти, то скорее всего у вас много локальных и мелкоживучих аллокаций, можно задать вопрос, можно ли что-то переиспользовать и улучшить кеш локальность.
Если говорить на практике, то я очень сильно смещён в сторону TCMalloc и jemalloc, друг у друга списываем, по паре людей в Google и Meta занимаются практически исключительно ими, так что должно быть достаточно подтюнено. Хорошое представление о том, как написать аллокатор для ваших десктопов, можно почитать тут. Рассказывается о ptmalloc2 используемый в линуксовых дистрибутивах, о том как в целом разделять аллокации и тд. Про память я в этом блоге писал много.

2. LZ4 получил уровень компрессии что-то между Fast и Hash Chain. Напомним, что LZ компрессия работает как команды "вставить текст как есть" и "скопировать из уже раскодированного текста и записать оффсет".
Fast уровень работает так:
Возьмём хеш таблицу, будем добавлять в неё 4 байта с каждой позиции. Если нашли такие же 4 байта, смотрим сколько байт совпало и добавляем инструкцию о копировании из предыдущего. Минусы такого подхода, что он никак не учитывает то, как дешёво кодировать оффсеты, например, стоит ли взять совпадение подальше и больше покрыть байт или поближе и закодировать оффсет подешевле. Из этого появился алгоритм Hash Chain -- запомним очень много позиций и будем оценивать, что из них дешевле. Hash Chain много добавляет всяких проблем с промахами по кешам и поэтому достаточно медленный.
Добавили уровень, который что-то посередине, а именно использует 2 хеш таблицы -- для 8 байт и для 4-5 байт. Сначала смотрит, нет ли подлиннее данных, а потом уже покороче как в fast. Скорость просаживается меньше, поэтому и получается где-то посередине.

3. Тут прошёл FOSDEM 2024, много всякого интересного, больше всего понравилось посмотреть, а что же такое load average в Linux (и почему не стоит на него смотреть) и бесконечный лист оптимизаций Query Planner в PostgreSQL



tgoop.com/experimentalchill/266
Create:
Last Update:

Long time no see

1. Мне очень понравилась статья о memory profiling от Дениса: https://easyperf.net/blog/2024/02/12/Memory-Profiling-Part1
В целом он очень правильно описал основы -- вам нужно смотреть на Virtual Memory как общее пространство и лимит ядра, RSS как внутреннюю работу и memory footprint -- сколько памяти в каждые X ms вы трогаете. Например, если вы видете много спайков в количестве тронутой памяти, то скорее всего у вас много локальных и мелкоживучих аллокаций, можно задать вопрос, можно ли что-то переиспользовать и улучшить кеш локальность.
Если говорить на практике, то я очень сильно смещён в сторону TCMalloc и jemalloc, друг у друга списываем, по паре людей в Google и Meta занимаются практически исключительно ими, так что должно быть достаточно подтюнено. Хорошое представление о том, как написать аллокатор для ваших десктопов, можно почитать тут. Рассказывается о ptmalloc2 используемый в линуксовых дистрибутивах, о том как в целом разделять аллокации и тд. Про память я в этом блоге писал много.

2. LZ4 получил уровень компрессии что-то между Fast и Hash Chain. Напомним, что LZ компрессия работает как команды "вставить текст как есть" и "скопировать из уже раскодированного текста и записать оффсет".
Fast уровень работает так:
Возьмём хеш таблицу, будем добавлять в неё 4 байта с каждой позиции. Если нашли такие же 4 байта, смотрим сколько байт совпало и добавляем инструкцию о копировании из предыдущего. Минусы такого подхода, что он никак не учитывает то, как дешёво кодировать оффсеты, например, стоит ли взять совпадение подальше и больше покрыть байт или поближе и закодировать оффсет подешевле. Из этого появился алгоритм Hash Chain -- запомним очень много позиций и будем оценивать, что из них дешевле. Hash Chain много добавляет всяких проблем с промахами по кешам и поэтому достаточно медленный.
Добавили уровень, который что-то посередине, а именно использует 2 хеш таблицы -- для 8 байт и для 4-5 байт. Сначала смотрит, нет ли подлиннее данных, а потом уже покороче как в fast. Скорость просаживается меньше, поэтому и получается где-то посередине.

3. Тут прошёл FOSDEM 2024, много всякого интересного, больше всего понравилось посмотреть, а что же такое load average в Linux (и почему не стоит на него смотреть) и бесконечный лист оптимизаций Query Planner в PostgreSQL

BY Experimental chill


Share with your friend now:
tgoop.com/experimentalchill/266

View MORE
Open in Telegram


Telegram News

Date: |

The visual aspect of channels is very critical. In fact, design is the first thing that a potential subscriber pays attention to, even though unconsciously. Don’t publish new content at nighttime. Since not all users disable notifications for the night, you risk inadvertently disturbing them. With the administration mulling over limiting access to doxxing groups, a prominent Telegram doxxing group apparently went on a "revenge spree." 4How to customize a Telegram channel? Polls
from us


Telegram Experimental chill
FROM American