Page 1 sur 1

RAM: Fuite de mémoire (Memory Leak)

Publié : 07 juin 2023, 20:31
par TheRoth
Bonsoir à tous,

J'ai un nouveau problème et je patauge un peu, je vois qu'il y a personne qui ont eu le problème mais je n'ai pas trouvé de vrai de solution, et de vrai détection du problème.

C'est sur un petit serveur Domoticz, carte mère Supermicro X11SBA-F Mini-ITX Intel® Pentium™ Processor N3710...
Avec 8go de RAM. Sur ce serveur, j'ai juste Domoticz / Mosquitto et HomeBridge.
Au démarrage, je consomme que 1Go de RAM sur mes 8Go. le lendemain je suis à 2Go... et au bout d'une semaine... Je suis à 8Go et mon serveur se bloque et je dois le redémarrer (Hard Reboot).... Pour retrouver un serveur utilisable !

Quand je fais la commande TOP -H, je vois bien que c'est Domoticz le problème ... à 4 jours, Domoticz prends 50% de la RAM.

Coté Domoticz :
Version: 2023.1

Build Hash: f9b9ac774
Compile Date: 2023-02-14 15:06:40
dzVents Version: 3.1.8
Python Version: 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]

Operating System: Debian GNU/Linux 11 (bullseye)
Kernel: Linux 5.10.0-23-amd64
Architecture: x86-64

J'ai vu (lu) que c'était souvent les plug-in (en Python) qui était en cause... moi j'en ai 3 d'installé

Shelly MQTT
Dingtian Relay
MQTT mapper with LAN interface


Les autres que j'utilise sont des pré-installé, comme Denkovi ou Legrand EcoCompteur

Le problème quand je fais des tests (en désactivant)... C'est le bordel car Domoticz les effaces, du coup HomeBridge les supprimes aussi et ca supprime toute mes règles HomeKit (définitivement).

Donc avez vous une astuce pour surveiller / ou isoler / diagnostiquer la RAM sans trop perturber les services ?

P.S. J'ai fait le test, en désactivant les 3 ... pendant 10-20 min... mais le % RAM a augmenté de 0,1% ca ne c'est pas stabilisé.

Re: RAM: Fuite de mémoire (Memory Leak)

Publié : 07 juin 2023, 21:30
par Keros
Tu as essayé de faire un reboot de DomoticZ tous les jours ? C'est assez simple à mettre en oeuvre avec une tache cron.

Re: RAM: Fuite de mémoire (Memory Leak)

Publié : 07 juin 2023, 21:40
par TheRoth
C'est la seule solution que j'ai trouvé (et que je trouve sur les forums anglais), mais pour moi elle n'est pas sérieuse... Dans le sens que je peux avoir des risques d'inondation (des électrovannes qui ne seraient pas coupé à temps) etc...
Je préférais trouver la source, et réparer ^^

Re: RAM: Fuite de mémoire (Memory Leak)

Publié : 08 juin 2023, 08:55
par Chrominator
Un reboot concerne l'OS, c'est vrai que ça prend un peu de temps.
Rédémarrer le service Domoticz ne prend que quelques secondes et va purger la mémoire qu'il utilisait.
Quand mon DZ fonctionnait sous Raspberry PI et Ubuntu, j'avais noté également une consommation anormale de la ram, le redémarrage du service avait solutionné le problème pendant des années.

Re: RAM: Fuite de mémoire (Memory Leak)

Publié : 08 juin 2023, 11:04
par lost
TheRoth a écrit : 07 juin 2023, 20:31 Quand je fais la commande TOP -H, je vois bien que c'est Domoticz le problème ... à 4 jours, Domoticz prends 50% de la RAM.
Pour ma part, sur un PI3B avec... 1GB de ram... Domoticz se ballade à 8.5% d'utilisation mémoire restant stable. Niveau global, on se ballade dans les 50% là aussi stable (cela avait pris une dizaine de % en janvier, au passage+upgrade d'un raspbian+domoticz 32bit à 64bit) et globalement surtout liés aux tmpfs en ram (dont un pouvant encaisser les captures/videos de cam IP, le temps de leur traitement/envoi, afin de ne pas tuer les cartes SD à la chaine!).

Loin des 8GB, donc, qui devraient laisser pas mal de gras y compris avec un système plus complet (pas de bureau/interface graphique dans mon cas vu que machine headless) et le support d'un bridge pour les cochonneries d'Apple.

Par contre, j'ai zéro plugin python même si j'ai moi même qq services perso en python (écrits à une époque ou l'infra plugin de Domoticz n'existait pas): Sans que cela dérive dans le temps, certains sont en effet très consommateurs comparé à Domoticz. Le service qui s'occupe de gérer mes caméras IP prends par exemple périodiquement 18% de la mémoire et je ne voit pas bien comment améliorer cela car niveau imports je ne prends que le nécessaire et j'ai déjà pas mal gratté, en premier lieu pour avoir une boucle de traitement qui puisse assurer un check/traitement des captures/videos sous les 2s avec les capacités limitées d'un PI.

Bref, Python vs C++, le 1er est quand même un sacré ogre!

Pour tenter de cibler un peu mieux, je verrais 2 options.

1) Sur le process domoticz déjà actif, avec des diff de ses smaps:

Si c'est après un redémarrage attendre un peu que tout le matos soit réinitialisé histoire de ne pas trop générer de "bruit" inutile dans la trace...

Code : Tout sélectionner

sudo cat /proc/$(pgrep domoticz)/smaps > smaps1.txt
Et plus tard/régulièrement:

Code : Tout sélectionner

sudo cat /proc/$(pgrep domoticz)/smaps > smaps2.txt && diff -u smaps1.txt smaps2.txt > smaps_diff.txt
Dans le fichier diff, rechercher les champs avec des tailles précédées des adresses en cause:

Code : Tout sélectionner

grep -B1 '[+-]Size:' smaps_diff.txt
Ce qui va donner des sorties du genre:

Code : Tout sélectionner

-7f60000000-7f6003d000 rw-p 00000000 00:00 0 
-Size:                244 kB
+7f60000000-7f6003e000 rw-p 00000000 00:00 0 
+Size:                248 kB
--
-7f6003d000-7f64000000 ---p 00000000 00:00 0 
-Size:              65292 kB
+7f6003e000-7f64000000 ---p 00000000 00:00 0 
+Size:              65288 kB
Ici, on voit que le première zone d'adresses (en hexadecimal) [0x7f60000000, 0x7f6003d000] est passée de 244 à 248kB, prenant donc 4kB (taille d'une page).

Il est dans la foulée possible d'attacher le debugger gdb au process domoticz pour faire un dump d'une région mémoire qui dériverait constemment, après plusieurs check ci dessus:

Code : Tout sélectionner

sudo gdb -p $(pgrep domoticz)
Et de la console gdb ouverte au dessus, faire le dump dans un fichier et ressortir de gdb:

Code : Tout sélectionner

(gdb) dump memory domoticzMemDump.bin 0x7f60000000 0x7f6003d000
(gdb) quit
Puis regarder dans le dump si y'a pas des chaines de caractère qui orientent vers un truc connu:

Code : Tout sélectionner

strings domoticzMemDump.bin | more
Dans le cas de la zone dumpée pour test ici, rien de significatif (qq lignes de log, requêtes SQL dans la base de données...) mais si une zone dérive dans le temps de manière continue cela pourrait orienter vers un responsable avec des lignes de log d'un plugin...

2) Voir ci dessous:
https://github.com/WuBingzheng/libleak

Cela nécessitera de stopper le service domoticz, le relancer à la main (dans un screen si on doit laisser tourner longtemps en souhaitant ne pas laisser le terminal ayant servi à lancer domoticz actif tout le temps).

Pour compiler la librairie selon les instructions, il faudra avoir installé le paquet build-essential (peut-être utile dès le 1, pour avoir gdb, d'ailleurs), screen si utile et probablement les headers Linux pour l'architecture de la machine (XXX=arm64 dans mon cas):

Code : Tout sélectionner

sudo apt install build-essential screen linux-headers-XXX
Il faudra suivre les instructions, éventuellement en adaptant pour lancer domoticz d'un screen : "screen -S testLeak" pour le lancer dans un terminal, y arrêter le service puis lancer domoticz avec le LD_PRELOAD qui va bien... et ça restera actif même si on quitte une session distance/tue le terminal... On se réattache plus tard via le nom donné à la création du screen d'un "screen -dr testLeak".

Si domoticz est lancé en root habituellement, faire un "sudo -s" dans le screen au préalable de son démarrage pour passer root.

Si 1 n'a pas réussi, 2 est plus technique mais le résultat devrait être bien ciblé.

Re: RAM: Fuite de mémoire (Memory Leak)

Publié : 08 juin 2023, 11:10
par TheRoth
Merci, j'adore ;) Même si je ne comprends pas tout :D

Je vais relire ce soir, et essayer de comprendre et commencer par faire les différences ^^

Merci

Re: RAM: Fuite de mémoire (Memory Leak)

Publié : 08 juin 2023, 15:20
par TheRoth
Premier résultat en 4heures ...

Code : Tout sélectionner

root@HomeBridge-Server:~# grep -B1 '[+-]Size:' smaps_diff.txt
-7f868c000000-7f868dd5e000 rw-p 00000000 00:00 0 
-Size:              30072 kB
+7f867c000000-7f867c2d6000 rw-p 00000000 00:00 0 
+Size:               2904 kB
--
-7f868dd5e000-7f8690000000 ---p 00000000 00:00 0 
-Size:              35464 kB
+7f867c2d6000-7f8680000000 ---p 00000000 00:00 0 
+Size:              62632 kB
--
-7f8698000000-7f869b5eb000 rw-p 00000000 00:00 0 
-Size:              55212 kB
+7f8688000000-7f8688b2d000 rw-p 00000000 00:00 0 
+Size:              11444 kB
--
-7f869b5eb000-7f869c000000 ---p 00000000 00:00 0 
-Size:              10324 kB
+7f8688b2d000-7f868c000000 ---p 00000000 00:00 0 
+Size:              54092 kB
--
-7f869c000000-7f86a25c0000 rw-p 00000000 00:00 0 
-Size:             104192 kB
+7f868c000000-7f8690000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
-7f86a25c0000-7f86a4000000 ---p 00000000 00:00 0 
-Size:              26880 kB
+7f8690000000-7f8694000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f8694000000-7f8698000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f8698000000-7f869b5eb000 rw-p 00000000 00:00 0 
+Size:              55212 kB
--
+7f869b5eb000-7f869c000000 ---p 00000000 00:00 0 
+Size:              10324 kB
--
+7f869c000000-7f86a4000000 rw-p 00000000 00:00 0 
+Size:             131072 kB
--
-7f86d4000000-7f86d4194000 rw-p 00000000 00:00 0 
-Size:               1616 kB
+7f86d4000000-7f86d41f4000 rw-p 00000000 00:00 0 
+Size:               2000 kB
--
-7f86d4194000-7f86d8000000 ---p 00000000 00:00 0 
-Size:              63920 kB
+7f86d41f4000-7f86d8000000 ---p 00000000 00:00 0 
+Size:              63536 kB
--
-7f86dc000000-7f86dc88d000 rw-p 00000000 00:00 0 
-Size:               8756 kB
+7f86dc000000-7f86dcae4000 rw-p 00000000 00:00 0 
+Size:              11152 kB
--
-7f86dc88d000-7f86e0000000 ---p 00000000 00:00 0 
-Size:              56780 kB
+7f86dcae4000-7f86e0000000 ---p 00000000 00:00 0 
+Size:              54384 kB
--
-7f86e0000000-7f86e0073000 rw-p 00000000 00:00 0 
-Size:                460 kB
+7f86e0000000-7f86e0092000 rw-p 00000000 00:00 0 
+Size:                584 kB
--
-7f86e0073000-7f86e4000000 ---p 00000000 00:00 0 
-Size:              65076 kB
+7f86e0092000-7f86e4000000 ---p 00000000 00:00 0 
+Size:              64952 kB
--
-7f86f8000000-7f86f807f000 rw-p 00000000 00:00 0 
-Size:                508 kB
+7f86f8000000-7f86f80a1000 rw-p 00000000 00:00 0 
+Size:                644 kB
--
-7f86f807f000-7f86fc000000 ---p 00000000 00:00 0 
-Size:              65028 kB
+7f86f80a1000-7f86fc000000 ---p 00000000 00:00 0 
+Size:              64892 kB
--
-7f86fc000000-7f86fc036000 rw-p 00000000 00:00 0 
-Size:                216 kB
+7f86fc000000-7f86fc039000 rw-p 00000000 00:00 0 
+Size:                228 kB
--
-7f86fc036000-7f8700000000 ---p 00000000 00:00 0 
-Size:              65320 kB
+7f86fc039000-7f8700000000 ---p 00000000 00:00 0 
+Size:              65308 kB
--
-7f870c000000-7f870c042000 rw-p 00000000 00:00 0 
-Size:                264 kB
+7f870c000000-7f870c045000 rw-p 00000000 00:00 0 
+Size:                276 kB
--
-7f870c042000-7f8710000000 ---p 00000000 00:00 0 
-Size:              65272 kB
+7f870c045000-7f8710000000 ---p 00000000 00:00 0 
+Size:              65260 kB
--
-7f8714000000-7f87158e3000 rw-p 00000000 00:00 0 
-Size:              25484 kB
+7f8714000000-7f8716174000 rw-p 00000000 00:00 0 
+Size:              34256 kB
--
-7f87158e3000-7f8718000000 ---p 00000000 00:00 0 
-Size:              40052 kB
+7f8716174000-7f8718000000 ---p 00000000 00:00 0 
+Size:              31280 kB
--
-7f8718000000-7f8718088000 rw-p 00000000 00:00 0 
-Size:                544 kB
+7f8718000000-7f8718089000 rw-p 00000000 00:00 0 
+Size:                548 kB
--
-7f8718088000-7f871c000000 ---p 00000000 00:00 0 
-Size:              64992 kB
+7f8718089000-7f871c000000 ---p 00000000 00:00 0 
+Size:              64988 kB
--
-7f8720000000-7f8720126000 rw-p 00000000 00:00 0 
-Size:               1176 kB
+7f8720000000-7f872013f000 rw-p 00000000 00:00 0 
+Size:               1276 kB
--
-7f8720126000-7f8724000000 ---p 00000000 00:00 0 
-Size:              64360 kB
+7f872013f000-7f8724000000 ---p 00000000 00:00 0 
+Size:              64260 kB
--
-7f874818e000-7f874821f000 rw-p 00000000 00:00 0 
-Size:                580 kB

Re: RAM: Fuite de mémoire (Memory Leak)

Publié : 08 juin 2023, 16:09
par lost
Chez moi, cela bouge bcp moins:

Code : Tout sélectionner

grep -B1 '[+-]Size:' smaps_diff2.txt
-7f4c000000-7f4c3a4000 rw-p 00000000 00:00 0 
-Size:               3728 kB
+7f4c000000-7f4c3a5000 rw-p 00000000 00:00 0 
+Size:               3732 kB
--
-7f4c3a4000-7f50000000 ---p 00000000 00:00 0 
-Size:              61808 kB
+7f4c3a5000-7f50000000 ---p 00000000 00:00 0 
+Size:              61804 kB
--
-7f60000000-7f6003d000 rw-p 00000000 00:00 0 
-Size:                244 kB
+7f60000000-7f6003e000 rw-p 00000000 00:00 0 
+Size:                248 kB
--
-7f6003d000-7f64000000 ---p 00000000 00:00 0 
-Size:              65292 kB
+7f6003e000-7f64000000 ---p 00000000 00:00 0 
+Size:              65288 kB
Avec très peu de zones qui changent, montant/baissant un poil (rien n'excédant une page de 4kB!) pour un global quasi stable.

La comparaison va être bien plus difficile dans ton cas et pas évident de pouvoir tirer un truc pertinent. Au pire, si ça ne donne rien de consistant rapidement, passer à la seconde option...

Re: RAM: Fuite de mémoire (Memory Leak)

Publié : 09 juin 2023, 07:21
par TheRoth
hello,

voilà avec 20h de différence

Code : Tout sélectionner

root@HomeBridge-Server:~# grep -B1 '[+-]Size:' smaps_diff.txt
-7f868c000000-7f868dd5e000 rw-p 00000000 00:00 0 
-Size:              30072 kB
+7f863c000000-7f863c436000 rw-p 00000000 00:00 0 
+Size:               4312 kB
--
-7f868dd5e000-7f8690000000 ---p 00000000 00:00 0 
-Size:              35464 kB
+7f863c436000-7f8640000000 ---p 00000000 00:00 0 
+Size:              61224 kB
--
+7f8640000000-7f86406a8000 rw-p 00000000 00:00 0 
+Size:               6816 kB
--
+7f86406a8000-7f8644000000 ---p 00000000 00:00 0 
+Size:              58720 kB
--
+7f8644000000-7f864c000000 rw-p 00000000 00:00 0 
+Size:             131072 kB
--
-7f8698000000-7f869b5eb000 rw-p 00000000 00:00 0 
-Size:              55212 kB
+7f8650000000-7f8654000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
-7f869b5eb000-7f869c000000 ---p 00000000 00:00 0 
-Size:              10324 kB
+7f8654000000-7f8658000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
-7f869c000000-7f86a25c0000 rw-p 00000000 00:00 0 
-Size:             104192 kB
--
+7f8658000000-7f865c000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f865c000000-7f8664000000 rw-p 00000000 00:00 0 
+Size:             131072 kB
--
+7f8664000000-7f8668000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f8668000000-7f866c000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f866c000000-7f8670000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
-7f86a25c0000-7f86a4000000 ---p 00000000 00:00 0 
-Size:              26880 kB
+7f8670000000-7f8670aed000 rw-p 00000000 00:00 0 
+Size:              11188 kB
--
+7f8670aed000-7f8674000000 ---p 00000000 00:00 0 
+Size:              54348 kB
--
+7f8674000000-7f8678000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f8678000000-7f867c000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f867c000000-7f8680000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f8680000000-7f8684000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f8684000000-7f8688000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f8688000000-7f868c000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f868c000000-7f8690000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f8690000000-7f8694000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f8694000000-7f8698000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f8698000000-7f869c000000 rw-p 00000000 00:00 0 
+Size:              65536 kB
--
+7f869c000000-7f86a4000000 rw-p 00000000 00:00 0 
+Size:             131072 kB
--
-7f86d4000000-7f86d4194000 rw-p 00000000 00:00 0 
-Size:               1616 kB
+7f86d4000000-7f86d4334000 rw-p 00000000 00:00 0 
+Size:               3280 kB
--
-7f86d4194000-7f86d8000000 ---p 00000000 00:00 0 
-Size:              63920 kB
+7f86d4334000-7f86d8000000 ---p 00000000 00:00 0 
+Size:              62256 kB
--
-7f86dc000000-7f86dc88d000 rw-p 00000000 00:00 0 
-Size:               8756 kB
+7f86dc000000-7f86dd3e2000 rw-p 00000000 00:00 0 
+Size:              20360 kB
--
-7f86dc88d000-7f86e0000000 ---p 00000000 00:00 0 
-Size:              56780 kB
+7f86dd3e2000-7f86e0000000 ---p 00000000 00:00 0 
+Size:              45176 kB
--
-7f86e0000000-7f86e0073000 rw-p 00000000 00:00 0 
-Size:                460 kB
+7f86e0000000-7f86e0111000 rw-p 00000000 00:00 0 
+Size:               1092 kB
--
-7f86e0073000-7f86e4000000 ---p 00000000 00:00 0 
-Size:              65076 kB
+7f86e0111000-7f86e4000000 ---p 00000000 00:00 0 
+Size:              64444 kB
--
-7f86e4000000-7f86e4070000 rw-p 00000000 00:00 0 
-Size:                448 kB
+7f86e4000000-7f86e407f000 rw-p 00000000 00:00 0 
+Size:                508 kB
--
-7f86e4070000-7f86e8000000 ---p 00000000 00:00 0 
-Size:              65088 kB
+7f86e407f000-7f86e8000000 ---p 00000000 00:00 0 
+Size:              65028 kB
--
+7f86f1ffc000-7f86f1ffd000 ---p 00000000 00:00 0 
+Size:                  4 kB
--
+7f86f1ffd000-7f86f27fd000 rw-p 00000000 00:00 0 
+Size:               8192 kB
--
-7f86f8000000-7f86f807f000 rw-p 00000000 00:00 0 
-Size:                508 kB
+7f86f8000000-7f86f8113000 rw-p 00000000 00:00 0 
+Size:               1100 kB
--
-7f86f807f000-7f86fc000000 ---p 00000000 00:00 0 
-Size:              65028 kB
+7f86f8113000-7f86fc000000 ---p 00000000 00:00 0 
+Size:              64436 kB
--
-7f86fc000000-7f86fc036000 rw-p 00000000 00:00 0 
-Size:                216 kB
+7f86fc000000-7f86fc050000 rw-p 00000000 00:00 0 
+Size:                320 kB
--
-7f86fc036000-7f8700000000 ---p 00000000 00:00 0 
-Size:              65320 kB
+7f86fc050000-7f8700000000 ---p 00000000 00:00 0 
+Size:              65216 kB
--
-7f8704000000-7f8704021000 rw-p 00000000 00:00 0 
-Size:                132 kB
+7f8704000000-7f870403c000 rw-p 00000000 00:00 0 
+Size:                240 kB
--
-7f8704021000-7f8708000000 ---p 00000000 00:00 0 
-Size:              65404 kB
+7f870403c000-7f8708000000 ---p 00000000 00:00 0 
+Size:              65296 kB
--
-7f8708000000-7f8708061000 rw-p 00000000 00:00 0 
-Size:                388 kB
+7f8708000000-7f8708078000 rw-p 00000000 00:00 0 
+Size:                480 kB
--
-7f8708061000-7f870c000000 ---p 00000000 00:00 0 
-Size:              65148 kB
+7f8708078000-7f870c000000 ---p 00000000 00:00 0 
+Size:              65056 kB
--
-7f870c000000-7f870c042000 rw-p 00000000 00:00 0 
-Size:                264 kB
+7f870c000000-7f870c069000 rw-p 00000000 00:00 0 
+Size:                420 kB
--
-7f870c042000-7f8710000000 ---p 00000000 00:00 0 
-Size:              65272 kB
+7f870c069000-7f8710000000 ---p 00000000 00:00 0 
+Size:              65116 kB
--
-7f8710000000-7f871003d000 rw-p 00000000 00:00 0 
-Size:                244 kB
+7f8710000000-7f8710052000 rw-p 00000000 00:00 0 
+Size:                328 kB
--
-7f871003d000-7f8714000000 ---p 00000000 00:00 0 
-Size:              65292 kB
+7f8710052000-7f8714000000 ---p 00000000 00:00 0 
+Size:              65208 kB
--
-7f8714000000-7f87158e3000 rw-p 00000000 00:00 0 
-Size:              25484 kB
+7f8714000000-7f8717c10000 rw-p 00000000 00:00 0 
+Size:              61504 kB
--
-7f87158e3000-7f8718000000 ---p 00000000 00:00 0 
-Size:              40052 kB
+7f8717c10000-7f8718000000 ---p 00000000 00:00 0 
+Size:               4032 kB
--
-7f8718000000-7f8718088000 rw-p 00000000 00:00 0 
-Size:                544 kB
+7f8718000000-7f8718097000 rw-p 00000000 00:00 0 
+Size:                604 kB
--
-7f8718088000-7f871c000000 ---p 00000000 00:00 0 
-Size:              64992 kB
+7f8718097000-7f871c000000 ---p 00000000 00:00 0 
+Size:              64932 kB
--
-7f8720000000-7f8720126000 rw-p 00000000 00:00 0 
-Size:               1176 kB
+7f8720000000-7f8720198000 rw-p 00000000 00:00 0 
+Size:               1632 kB
--
-7f8720126000-7f8724000000 ---p 00000000 00:00 0 
-Size:              64360 kB
+7f8720198000-7f8724000000 ---p 00000000 00:00 0 
+Size:              63904 kB
--
-7f872c000000-7f872c030000 rw-p 00000000 00:00 0 
-Size:                192 kB
+7f872c000000-7f872c033000 rw-p 00000000 00:00 0 
+Size:                204 kB
--
-7f872c030000-7f8730000000 ---p 00000000 00:00 0 
-Size:              65344 kB
+7f872c033000-7f8730000000 ---p 00000000 00:00 0 
+Size:              65332 kB
--
-7f8734000000-7f8734acc000 rw-p 00000000 00:00 0 
-Size:              11056 kB
+7f8734000000-7f8734acf000 rw-p 00000000 00:00 0 
+Size:              11068 kB
--
-7f8734acc000-7f8738000000 ---p 00000000 00:00 0 
-Size:              54480 kB
+7f8734acf000-7f8738000000 ---p 00000000 00:00 0 
+Size:              54468 kB
--
-7f874818e000-7f874821f000 rw-p 00000000 00:00 0 
-Size:                580 kB
+7f8748270000-7f8748330000 rw-p 00000000 00:00 0 
+Size:                768 kB
--
-7f87482b0000-7f8748330000 rw-p 00000000 00:00 0 
-Size:                512 kB
Et Domoticz prend maintenant 30% de Mémoire

Code : Tout sélectionner

top - 07:19:48 up 1 day, 11:17,  1 user,  load average: 0.92, 0.89, 0.89
Threads: 433 total,   1 running, 432 sleeping,   0 stopped,   0 zombie
%Cpu(s): 19.4 us,  2.3 sy,  0.0 ni, 78.0 id,  0.1 wa,  0.0 hi,  0.3 si,  0.0 st
MiB Mem :   7841.6 total,   2912.9 free,   3174.6 used,   1754.2 buff/cache
MiB Swap:    975.0 total,    975.0 free,      0.0 used.   4354.4 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                 
   1173 root      20   0 4560432   2.2g  20724 S  43.9  29.2 789:13.29 EventSystemQueu                                         
    968 root      20   0 4560432   2.2g  20724 S   9.2  29.2 269:34.58 MainWorkerRxMsg                                         
   1145 root      20   0 4560432   2.2g  20724 S   1.6  29.2  30:09.97 Denkovi SmartDe                                         
1433428 root      20   0   10580   4404   3284 R   1.3   0.1   0:00.16 top                                                     
   1141 root      20   0 4560432   2.2g  20724 S   1.0  29.2  19:39.17 Denkovi SmartDe                                         
   1159 root      20   0 4560432   2.2g  20724 S   1.0  29.2   7:35.29 DekoviCave                                              
    930 mosquit+  20   0   18040  11624   7068 S   0.7   0.1  19:08.83 mosquitto                                               
   1146 root      20   0 4560432   2.2g  20724 S   0.7  29.2  19:51.75 Denkovi SmartDe                                         
   1157 root      20   0 4560432   2.2g  20724 S   0.7  29.2  25:21.54 Denkovi SmartDe                                         
   2889 homebri+  20   0  725240 132908  44080 S   0.7   1.7  11:10.10 homebridge: hom                                         
     12 root      20   0       0      0      0 I   0.3   0.0   7:42.75 rcu_sched                                               
    134 root      20   0       0      0      0 I   0.3   0.0   2:01.13 kworker/1:2-events                                      
    443 avahi     20   0    7920   4656   3604 S   0.3   0.1   8:57.53 avahi-daemon                                            
    944 root      20   0 4560432   2.2g  20724 S   0.3  29.2   4:40.70 SQLHelper                                               
    962 root      20   0 4560432   2.2g  20724 S   0.3  29.2  14:00.42 WebServer_8296                                          
   1142 root      20   0 4560432   2.2g  20724 S   0.3  29.2  13:35.88 MQTT                                                    
   1147 root      20   0 4560432   2.2g  20724 S   0.3  29.2  10:18.94 Franklin                                                
   1160 root      20   0 4560432   2.2g  20724 S   0.3  29.2   3:53.20 DingtianBouclag                                         
   1161 root      20   0 4560432   2.2g  20724 S   0.3  29.2  33:45.22 MQTTAutoDiscoSh                                         
  15157 root      20   0 4560432   2.2g  20724 S   0.3  29.2   3:54.57 DingtianElectro                                         
   1091 homebri+  20   0   11.0g 156896  47184 S   0.3   2.0   7:09.31 hb-service                                              
   2059 homebri+  20   0 1058400 224816  44140 S   0.3   2.8  21:59.27 homebridge                                              
   2892 homebri+  20   0  725240 132908  44080 S   0.3   1.7   0:06.13 node                                                    
   2890 homebri+  20   0  680552 102808  43996 S   0.3   1.3  14:02.86 homebridge: hom                                         
3433549 www-data  20   0  209484  18812  10488 S   0.3   0.2   0:19.45 apache2                                                 
      1 root      20   0  166156  10636   7856 S   0.0   0.1   0:10.15 systemd                                                 
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.10 kthreadd           
J'ai pas encore regardé le détail de ton message, pas eu le temps hier... je fais ca ce Week-end.
En tout cas merci pour tes commentaires :)

Re: RAM: Fuite de mémoire (Memory Leak)

Publié : 09 juin 2023, 17:44
par lost
Je reste étonné de la variabilité chez toi. Avec en prime des plages qui apparaissent ou disparaissent, certaines dans les 60 à 130MB.

Me concernant, toujours vs le 1er fichier capturé, un 3ème essai tout juste fait donne:

Code : Tout sélectionner

sudo cat /proc/$(pgrep domoticz)/smaps > smaps3.txt && diff -u smaps1.txt smaps3.txt > smaps_diff3.txt
grep -B1 '[+-]Size:' smaps_diff3.txt
Sort:

Code : Tout sélectionner

-7f4c000000-7f4c3a4000 rw-p 00000000 00:00 0 
-Size:               3728 kB
+7f4c000000-7f4c3a5000 rw-p 00000000 00:00 0 
+Size:               3732 kB
--
-7f4c3a4000-7f50000000 ---p 00000000 00:00 0 
-Size:              61808 kB
+7f4c3a5000-7f50000000 ---p 00000000 00:00 0 
+Size:              61804 kB
--
-7f60000000-7f6003d000 rw-p 00000000 00:00 0 
-Size:                244 kB
+7f60000000-7f6003e000 rw-p 00000000 00:00 0 
+Size:                248 kB
--
-7f6003d000-7f64000000 ---p 00000000 00:00 0 
-Size:              65292 kB
+7f6003e000-7f64000000 ---p 00000000 00:00 0 
+Size:              65288 kB
--
-7f70000000-7f707af000 rw-p 00000000 00:00 0 
-Size:               7868 kB
+7f70000000-7f707b0000 rw-p 00000000 00:00 0 
+Size:               7872 kB
--
-7f707af000-7f74000000 ---p 00000000 00:00 0 
-Size:              57668 kB
+7f707b0000-7f74000000 ---p 00000000 00:00 0 
+Size:              57664 kB
--
-7fa0000000-7fa0265000 rw-p 00000000 00:00 0 
-Size:               2452 kB
+7fa0000000-7fa0334000 rw-p 00000000 00:00 0 
+Size:               3280 kB
--
-7fa0265000-7fa4000000 ---p 00000000 00:00 0 
-Size:              63084 kB
+7fa0334000-7fa4000000 ---p 00000000 00:00 0 
+Size:              62256 kB
Soit peanuts niveau variations et stabilité des plages d'adresse allouées dynamiquement totale.

Le tri du potentiellement utile au dump dans ton cas pour cette option va pas être simple: Focalise toi sur les gros écarts à la hausse (pour les plages communes, ayant deux lignes démarrant par des - puis par des +) et les grosses apparitions (que des +) niveau taille.

Mais bon, encore une fois je n'ai rien en python direct dans domoticz... et là, ces langages ou on ne gère pas directement les allocations (automatiques) et desallocations (un ramasse-miettes s'en charge)mémoire, ni même finement la façon d'y "ranger" les données, causent en effet de grosses variations. Dans mon cadre, il n'y a que le coeur de Domoticz écrit en C++ qui soit effectivement utilisé et là, avec un langage ou on gère ses données et leur allocation comme un grand, pour un applicatif bien écrit aux tâches très répétitives, cela bouge peu post démarrage/inits matérielles.

Les plugins c'est bien dans l'idée, mais avec Python on invite potentiellement le fou du village dans un bal viennois!