BLOG_TOXA Telegram 391
Профилируем память

В одном из прошлых постов писал, что в питончике можно профилировать память через memray. Действительно, хорошая тулза, умеет разбивать приложеньку на потоки, следить за форками, и даже работать с аллокациями на уровне С/С++. С последним не так классно справляется, сложно отследить аллокации глубоко в библиотеках.

Это является проблемой, если у вас течёт крыша 🏥 память не в куче, а какая-нибудь резидентная. Т.е. вы профилируете питонячие стек и кучу, а у вас всё там хорошо, при этом почему-то от вашего приложения всё поступают просьбы в ОС, что нужно больше памяти. Одна из причин — это то, что ваш питонячий код может использовать пакет, который является биндингом для плюсовой либы. И тут проблемки, потому что эта либа уже не живёт в модели памяти Python 🤓.

Что делать? Существуют множество техник. Одна из них — использовать jemalloc и подставить его через LD_PRELOAD.

И тут нужно знать две важные штуки о том, как запускаются приложения:
— На самом старте оно подгружает различные системные и собственные библиотеки;
— В вашем приложении сотни функций. Определение (читайте код) этих функций берётся по первому найденному символу (названию) среди подгружаемых библиотек;

Так вот, LD_PRELOAD — это способ загрузить кастомные либы до стандартных 🌿. Благодаря этому можно подменять любые функции, например, выделение и освобождение памяти.

Почему именно jemalloc? Потому что он имеет встроенные инструменты профилировки. Т.е. вам нужно запустить вашу приложеньку, просто переопределив переменную окружения (при условии, что у вас установлен jemalloc). Потом можно построить различные визуализации и техрепорты с теми статистиками, которые вам нужны. Можно регулировать частоту семплинга и всё такое. Вот тут можно почитать подробнее.

А мораль? Её нет. Профилировать резидентную память — это искать иголку в стоге сена: реально, но очень сложно.

А как бы вы профилировали? Поставьте 🤯, если было полезно!
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯28🔥6👎2❤‍🔥1🤔1🏆1🍾1



tgoop.com/blog_toxa/391
Create:
Last Update:

Профилируем память

В одном из прошлых постов писал, что в питончике можно профилировать память через memray. Действительно, хорошая тулза, умеет разбивать приложеньку на потоки, следить за форками, и даже работать с аллокациями на уровне С/С++. С последним не так классно справляется, сложно отследить аллокации глубоко в библиотеках.

Это является проблемой, если у вас течёт крыша 🏥 память не в куче, а какая-нибудь резидентная. Т.е. вы профилируете питонячие стек и кучу, а у вас всё там хорошо, при этом почему-то от вашего приложения всё поступают просьбы в ОС, что нужно больше памяти. Одна из причин — это то, что ваш питонячий код может использовать пакет, который является биндингом для плюсовой либы. И тут проблемки, потому что эта либа уже не живёт в модели памяти Python 🤓.

Что делать? Существуют множество техник. Одна из них — использовать jemalloc и подставить его через LD_PRELOAD.

И тут нужно знать две важные штуки о том, как запускаются приложения:
— На самом старте оно подгружает различные системные и собственные библиотеки;
— В вашем приложении сотни функций. Определение (читайте код) этих функций берётся по первому найденному символу (названию) среди подгружаемых библиотек;

Так вот, LD_PRELOAD — это способ загрузить кастомные либы до стандартных 🌿. Благодаря этому можно подменять любые функции, например, выделение и освобождение памяти.

Почему именно jemalloc? Потому что он имеет встроенные инструменты профилировки. Т.е. вам нужно запустить вашу приложеньку, просто переопределив переменную окружения (при условии, что у вас установлен jemalloc). Потом можно построить различные визуализации и техрепорты с теми статистиками, которые вам нужны. Можно регулировать частоту семплинга и всё такое. Вот тут можно почитать подробнее.

А мораль? Её нет. Профилировать резидентную память — это искать иголку в стоге сена: реально, но очень сложно.

А как бы вы профилировали? Поставьте 🤯, если было полезно!

BY Дратути Антон


Share with your friend now:
tgoop.com/blog_toxa/391

View MORE
Open in Telegram


Telegram News

Date: |

Earlier, crypto enthusiasts had created a self-described “meme app” dubbed “gm” app wherein users would greet each other with “gm” or “good morning” messages. However, in September 2021, the gm app was down after a hacker reportedly gained access to the user data. Clear As the broader market downturn continues, yelling online has become the crypto trader’s latest coping mechanism after the rise of Goblintown Ethereum NFTs at the end of May and beginning of June, where holders made incoherent groaning sounds and role-played as urine-loving goblin creatures in late-night Twitter Spaces. More>> Although some crypto traders have moved toward screaming as a coping mechanism, several mental health experts call this therapy a pseudoscience. The crypto community finds its way to engage in one or the other way and share its feelings with other fellow members.
from us


Telegram Дратути Антон
FROM American