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: |

Over 33,000 people sent out over 1,000 doxxing messages in the group. Although the administrators tried to delete all of the messages, the posting speed was far too much for them to keep up. How to Create a Private or Public Channel on Telegram? How to build a private or public channel on Telegram? It’s easy to create a Telegram channel via desktop app or mobile app (for Android and iOS): The group’s featured image is of a Pepe frog yelling, often referred to as the “REEEEEEE” meme. Pepe the Frog was created back in 2005 by Matt Furie and has since become an internet symbol for meme culture and “degen” culture.
from us


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