URL: https://linuxfr.org/news/profileur-memoire-malt-1-6-0-et-support-de-python Title: Profileur mémoire MALT 1.6.0 et support de Python Authors: Sébastien Valat Benoît Sibaud et Pierre Jarillon Date: 2026年01月29日T14:36:56+01:00 License: CC By-SA Tags: python, mémoire, gestion_mémoire et profilage Score: 32 MALT c'est quoi ? ================= L'optimisation est une activité connue de bien des développeurs, fouiller, chercher dans son code, pour, peut être, gagner un peu de performance (beaucoup, parfois). Dans cette tâche ardue, face à des codes grandissants, massifs, utilisant de nombreuses bibliothèques externes, un outil central dans ce travail de fourmi : **le profileur**. Le profileur fait partie des outils importants pour le développeur qui se soucie des ressources qu'il utilise. Il lui permet de chercher les points chauds dans son code, comprendre le cout de chaque fonction, chaque ligne implémentée. Bien des outils s'intéressent à une chose : bien utiliser votre processeur. Mais que se passe-t-il si vous rencontrez des difficultés avec l'utilisation de votre **mémoire** ? Si vous pensez mal utiliser la fonction `malloc()` du C ou l'opérateur `new` du C++ ? Si vous avez oublié qu'une de vos variables globales occupe **10 Go** (surtout en Fortran) ? Publié il y a quelques années [MALT](https://memtt.github.io/malt/) (licence CeCILL-C) permet de répondre à la question en cherchant toutes les **allocations mémoires** faites par votre code. Cet outil avait fait l'objet d'un article sur LinuxFR en 2018 lors de sa mise en open source : [Profileurs mémoire MALT et NUMAPROF](https://linuxfr.org/news/profileurs-memoire-malt-et-numaprof). ---- [Site officiel de MALT](https://memtt.github.io/) [Dépôt github](https://github.com/memtt/malt) [Premier article LinuxFR sur MALT](https://linuxfr.org/news/profileurs-memoire-malt-et-numaprof) ---- Versions 1.6.0 ============== Avancées -------- Depuis, cet outil fait son chemin avec l'ajout du support de **Rust** ainsi que nombreuses corrections et ajouts tels que la possibilité de dumper le profile mémoire juste avant que le système ne soit plein. ```sh malt -o dump:on-sys-full-at=80% -o watch-dog=true ./mon_programme # également : # -o dump:on-app-using-rss=10G # -o dump:on-app-using-virt=80% # -o dump:on-app-using-req=500M ``` La possibilité de suivre les appels à **mmap**, **mremap**, **munmap** si vous les appelez directement dans votre code au lieu de laisser **malloc** faire son travail. Support de python ----------------- MALT a initialement été développé dans le contexte du [calcul à haute performance](https://fr.wikipedia.org/wiki/calcul%20%C3%A0%20haute%20performance) — HPC (High Performance Computing) donc surtout pour le C / C++ / Fortran / Rust. Dans la communauté scientifique, nous voyons dans les laboratoires de plus en plus fleurir l'usage d'un langage à priori bien éloigné de nos prérogatives de performances : [Python](https://www.python.org/). Dans un cadre de calcul scientifique, il est souvent utilisé plutôt comme un wrapper permettant d'appeler et d'orchestrer des bibliothèques en C /C++ / Fortran, elles, performantes. Quoi que l'usage amène aussi à l'écrire de certaines parties du code en Python grâce à [Numpy](https://numpy.org/) ou [Numba](https://numba.pydata.org/) pour accéléré la partie calcule sur des tableaux ou autres frameworks d'exploitation des GPU. La version **1.6.0 de MALT** vient d'ajouter le support (encore quelque peu **expérimental**) natif de Python permettant d'analyser un code **pur python** ou **mix Python / C / C++...**. Il s'agit pour l'instant de la **première version** avec ce support, il reste donc du travail. Sont supportés les versions Python **supérieures à 3.11** ainsi que les environnements **Conda** / **Anaconda** / **Venv**. À l'heure de rédaction de cet article, cela comprend les versions **3.11** à **3.14**. MALT étant orienté C / C++, il ne supporte que **Linux** comme système d'exploitation. (*NdM:* la causalité évoquée ici devrait faire réagir des développeurs d'autres systèmes libres notamment :)) Utilisation sur Python ---------------------- Si la commande `malt` fonctionne parfaitement, il est recommandé d'utiliser le wrapper `malt-python` qui adapte quelques configurations spécifiques à Python non encore automatiques. ```sh malt-python ./script.py # équivalent à malt --profile python-default ./script.py # liste des profiles malt --profile help # Afficher le profile malt-webview ./malt-script-py-6889.json ``` Profilage rapide ---------------- Notons que l'**overhead** de MALT est important en Python du fait du large nombre d'allocations générées par ce langage et de la méthode de résolution des piles d'appels pour retrouver les lignes dans votre code. Ces détails d'analyse peuvent être désactivés via : ```sh # Désactivé complète de l'analyse des piles malt-python -p python-no-stack ./my_script.py # Analyse des piles par "sampling" malt-python -p python-sampling ./my_script.py ``` Nouvelle interface ------------------ La version **1.6.0** arrive également avec une nouvelle interface graphique avec un code remis à jour par rapport à sa version originale vieillissante. ![Capture annotation python](https://github.com/memtt/malt/raw/master/screenshot.png) Profil statique --------------- Pour ceux qui voudraient échanger les profils avec d'autres sur d'autres OS, il est possible depuis la **1.6.0** de générer une version statique des pages de l'interface (hors annotation des sources et arbre d'appel navigable) via : ```sh # Toues les pages possible en statique malt-webview -static ./report malt-progr-123456.json # Seulement la page de résumé. malt-webview -static-summary ./report malt-progr-123456.json ``` Installation ============ MALT n'est pas encore disponible dans les distributions classiques, vous devez donc le compiler et l'installer à la main. Le nombre réduit de dépendances obligatoires en fait un outil relativement facile à installer. On trouvera la procédure dans la [documentation](https://memtt.github.io/malt/doc/1.6.0/start/installation.html) du projet. Documentation ============= La documentation a été complètement ré-écrite et disponible sur le site officiel : [documentation](https://memtt.github.io/malt/doc/v1.6.0). Outils similaires pour Python ============================= Découvrir un outil est aussi l'occasion d'en découvrir d'autres. Restons dans le monde du **Python**, si MALT ne vous convient pas vous trouverez peut-être votre bonheur avec les **outils suivants** et **complémentaires** à MALT et eux totalement dédiés au Python toujours pour la **mémoire** : - [Memray](https://bloomberg.github.io/memray/) (Apache Public License 2) - [Scalene](https://github.com/plasma-umass/scalene) (Apache Public License 2) **MALT** se positionne par rapport aux deux présentés en apportant une analyse fine en **annotant** tout **le source code** de l'application. Il offre également une analyse des **variables globales** et **TLS** coté C/C++/Fortran/Rust.

AltStyle によって変換されたページ (->オリジナル) /