Bonjour à tous et tous mes vœux pour cette nouvelle année!
Tout d'abord un grand merci à Emmanuel pour cette gateway Imperihome-Dz; c'est top!
J'ai un souci depuis quelques semaines, concernant les
perfs de MDAH.
Ma config est un Domoticz V4.10717 sous un raspberry Pi 1 B+ qui tourne avec un disque WD PiDrive.
Le tout fonctionne très bien.
J'avais constaté il y a pas mal de temps des
lenteurs sur Imperihome; j'ai voulu en savoir plus et essayer caractériser ça. Le ressenti est que c'est très long sur ma tablette de rafraîchir les données...
* Quelques infos caractéristiques système/app:
Code : Tout sélectionner
pi@raspberrypi:/etc$ uname -a
Linux raspberrypi.xxx.com 4.4.23+ #913 Tue Oct 4 13:56:56 BST 2016 armv6l GNU/Linux
Code : Tout sélectionner
pi@raspberrypi:/etc$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
* J'ai installé MDAH en suivant les infos du repo Git:
https://github.com/empierre/MyDomoAtHome
Code : Tout sélectionner
sudo apt-get remove node
wget -q http://www.e-nef.com/domoticz/mdah/nodejs_4.4.2_armhf.deb
sudo dpkg -i nodejs_4.4.2_armhf.deb
wget -q http://www.e-nef.com/domoticz/mdah/npm_2.14.7_armhf.deb
sudo dpkg -i npm_2.14.7_armhf.deb
sudo npm install -g npm@2.x
* Check:
Code : Tout sélectionner
pi@raspberrypi:/etc$ node -v
v4.2.2
pi@raspberrypi:/etc$ npm -v
2.14.7
* Installation de MDAH 0.2.39, config et démarrage:
Code : Tout sélectionner
sudo apt-get update
sudo apt-get install MyDomoAtHome
.+. config de /etc/mydomoathome/config.json
sudo service mydomoathome restart
Code : Tout sélectionner
pi@raspberrypi:/tmp$ sudo dpkg --list | grep MyDomoAtHome
ii mydomoathome 0.2.40 all Node MyDomoAtHome Gateway between Imperihome ISS and Domoticz. Exist also as NPM package, Docker image or Synology package
* Test pour récupération des données des devices depuis le pi:
** En utilisant directement domoticz:
Code : Tout sélectionner
pi@raspberrypi:/tmp$ cd /tmp && rm -f dzdevices && time wget -O dzdevices http://mydomoathome:*****@127.0.0.1:8080/json.htm?type=devices&filter=all&used=true&order=Name
[1] 31900
[2] 31901
[3] 31903
[2] Done filter=all
pi@raspberrypi:/tmp$ --2020-01-05 18:59:57-- http://mydomoathome:*password*@127.0.0.1:8080/json.htm?type=devices
Connecting to 127.0.0.1:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 186251 (182K) [application/json]
Saving to: ‘dzdevices’
dzdevices 100%[========================================================>] 181.89K --.-KB/s in 0.02s
2020-01-05 18:59:58 (9.87 MB/s) - ‘dzdevices’ saved [186251/186251]
real 0m0.769s
user 0m0.070s
sys 0m0.040s
[1]- Done cd /tmp && rm -f dzdevices && time wget -O dzdevices http://mydomoathome:*****@127.0.0.1:8080/json.htm?type=devices
[3]+ Done used=true
** En passant par MDAH!
Code : Tout sélectionner
pi@raspberrypi:/tmp$ cd /tmp && rm -f mdahdevices && time wget -O mdahdevices http://127.0.0.1:3002/devices
--2020-01-05 19:00:56-- http://127.0.0.1:3002/devices
Connecting to 127.0.0.1:3002... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8946 (8.7K) [application/json]
Saving to: ‘mdahdevices’
mdahdevices 100%[========================================================>] 8.74K --.-KB/s in 0.01s
2020-01-05 19:01:06 (651 KB/s) - ‘mdahdevices’ saved [8946/8946]
real 0m10.238s
user 0m0.070s
sys 0m0.030s
*
Le passage par MDAH est hyper lent, c'est pour ça que sur Imperihome quand on recharge les devices c'est aussi long. Moins d'une seconde sur dz, plus de 10 secondes via MDAH!!!
* Par curiosité, j'ai aussi regardé la partie node et npm. Je ne sais pas pourquoi, mais à chaque lancement de npm, c'est interminable! L'installation de MDAH a été méga-super-long (bien plus que le temps du repas en famille; dsl je n'ai pas mesuré). Exemples avec un simple -v sur node/npm:
Code : Tout sélectionner
pi@raspberrypi:/tmp$ time node -v
v4.2.2
real 0m0.082s
user 0m0.010s
sys 0m0.030s
Code : Tout sélectionner
pi@raspberrypi:/tmp$ time npm -v
2.14.7
real 0m21.139s
user 0m7.370s
sys 0m0.670s
* Dingue non? Ce n'est certainement pas MDAH qui est lent mais la partie node/npm sur laquelle il repose. Avec ces versions sur un Raspberry Pi 1 B+. Soit il y a quelque chose qui coince (versions de node/npm, architecture ARM, etc.), soit ce hardware n'est pas suffisant pour faire tourner cette appli sur node/npm. Une idée?
J'ai essayé de chercher des cas similaires et je suis tombé sur quelques tickets, mais aucune solution:
* Node:
https://github.com/nodejs/node/issues/8259 Slow start of Node application (ARM) #8259
* Node:
https://github.com/nodejs/node/issues/16955 Slow start on ARM #16955
* NPM:
https://github.com/npm/npm/issues/13761 Slow start of Node application #13761
J'ai aussi fait un test de MDAH sous
Docker avec mon Synology NAS DS1512+ pour comparer. J'ai utilisé l'image epierre/iss-mdah:latest avec un volume sur /etc/mydomoathome contenant le même config.json que pour mes tests sous Pi. La récup des devices via wget prend 2.183 secondes.
5x plus rapide que sous Pi... mais pour moi cette voie ne peut être envisagée car le NAS ne tourne pas H24

Résultats:
Code : Tout sélectionner
root@myDomoAtHome-latest:/dist# time node -v
v4.9.1
real 0m0.006s
user 0m0.001s
sys 0m0.004s
root@myDomoAtHome-latest:/dist# time npm -v
2.15.12
real 0m0.996s
user 0m0.935s
sys 0m0.098s
root@myDomoAtHome-latest:/tmp# time wget http://127.0.0.1:3002/devices
converted 'http://127.0.0.1:3002/devices' (ANSI_X3.4-1968) -> 'http://127.0.0.1:3002/devices' (UTF-8)
--2020-01-05 23:50:55-- http://127.0.0.1:3002/devices
Connecting to 127.0.0.1:3002... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8940 (8.7K) [application/json]
Saving to: 'devices'
devices 100%[==============================================>] 8.73K --.-KB/s in 0s
2020-01-05 23:50:57 (34.1 MB/s) - 'devices' saved [8940/8940]
real 0m2.183s
user 0m0.009s
sys 0m0.010s
Questions:
* Est-ce que quelqu'un a réussi à faire tourner MDAH correctement avec de bonnes perfs sur un Raspbery Pi 1 B+? Vous avez quelles temps de retour aux requêtes wget du dz et MDAH?
* Pour les autres avec un autre environnement hardware, vous tournez sur quoi? Vous avez quelles temps de retour aux requêtes wget du dz et MDAH?
* Si vous avez des conseils pour optimiser MDAH et node/npm sur un Pi ou proc ARM, je suis preneur!
Merci
