Closed Coethium closed 8 years ago
Exemple d'output :
2016-08-21 18:19:19: [Server]: [Profnsched] Overload ! 2206.13ms
2016-08-21 18:19:19: [Server]: [Profnsched] 62.714ms (avg: 197.765 ; 75 calls) Internal SERVER & unprofiled
2016-08-21 18:19:19: [Server]: [Profnsched] 0.007ms (avg: 0.02 ; 75 calls) unknown1 unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.006ms (avg: 0.039 ; 150 calls) default unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.331ms (avg: 0.039 ; 150 calls) default unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.007ms (avg: 0.009 ; 75 calls) cozy unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 2142.565ms (avg: 95.137 ; 75 calls) biome_lib unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.085ms (avg: 0.064 ; 75 calls) sprint unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.004ms (avg: 0.009 ; 150 calls) mesecons unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.009ms (avg: 0.009 ; 150 calls) mesecons unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.004ms (avg: 0.006 ; 75 calls) pipeworks unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.005ms (avg: 0.006 ; 75 calls) nature_classic unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.003ms (avg: 0.009 ; 75 calls) riesenpilz unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.013ms (avg: 0.017 ; 75 calls) unified_inventory unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.093ms (avg: 0.169 ; 75 calls) runes unknown(globalstep)
2016-08-21 18:19:19: [Server]: [Profnsched] 0.07ms (avg: 0.038 ; 5 calls) worldedge #22
2016-08-21 18:19:19: [Server]: [Profnsched] 0.04ms (avg: 0.031 ; 2 calls) unified_inventory #30
2016-08-21 18:19:19: [Server]: [Profnsched] 0.042ms (avg: 0.033 ; 12 calls) hudbars #57
2016-08-21 18:19:19: [Server]: [Profnsched] 0.041ms (avg: 0.054 ; 19 calls) item_drop #37
2016-08-21 18:19:19: [Server]: [Profnsched] 0.036ms (avg: 0.053 ; 18 calls) hbarmor #91
:+1:
Nous nous sommes mis d'accord avec @Darcidride sur les modifications suivantes :
Comme @LeMagnesium l'explique très bien, je n'ai rien à (r)ajouter, je te laisse voir si nos propositions sont réalisables ou non.
Nous sommes ouvert à des avis si nos propositions ne conviennent pas.
Hello ! ;)
Je reprends points par point :
La PR ajoute l'entrée de profnsched dans le world.mt
Si je comprends bien le fonctionnement, il s'agit de mettre 'load_mod_profnsched = true' ?
La collecte de statistiques ne se fera qu'à l'appel d'une commande de chat par l'admin
Excellente idée, si l'un de vous sait comment on fait ça je gagnerai un temps fou s'il me mets un bout de code exemple, ou me cite un module qui utilise déjà cette technique. Attention toutefois, une partie de la collecte des stats va devenir nécessaire pour le fonctionnement du scheduler afin de déterminer le temps d'exécution maximum recommandé de chaque fonction appelée (partie WIP, ne concernera que les fonctions appelées par .asap ou .add).
Une clef de minetest.conf indiquera la durée de la collecte (par défaut, 5 minutes)
Pas de soucis, en tenant compte de la remarque ci-dessus.
Les dumps de statistiques n'auront lieu qu'à la fin de la période.
Lorsque j'ai mis en place les dumps de stats c'est surtout pour visualiser les modules qui à un instant T ont causé un overload ; ainsi on peut déterminer s'ils peuvent être optimisés et/ou modifiés pour utiliser profnsched. Un dump final n'a que peu d'intérêt de ce point de vue là.
Une dernière clef de minetest.conf indique l'état de la collecte : activée ou non
Pas de soucis, en tenant compte de la première remarque. Et pas de dump lorsque c'est non activé.
Pour des intérêts de modularité, il doit être possible de mettre la période à 0 et de laisser la variable d'activité à true pour garder le comportement actuel (dump permanent)
En tenant compte des remarques ci-dessus, il semble que cette option devient caduque.
En résumé et avec vos propositions je vois les choses ainsi :
Qu'en pensez-vous ?
Si je comprends bien le fonctionnement, il s'agit de mettre 'load_mod_profnsched = true' ?
Correct. Ça nous épargnera un commit juste pour ça.
Excellente idée, si l'un de vous sait comment on fait ça je gagnerai un temps fou s'il me mets un bout de code exemple, ou me cite un module qui utilise déjà cette technique. Attention toutefois, une partie de la collecte des stats va devenir nécessaire pour le fonctionnement du scheduler afin de déterminer le temps d'exécution maximum recommandé de chaque fonction appelée (partie WIP, ne concernera que les fonctions appelées par .asap ou .add)
Si la collecte est si importante, alors elle peut être continue, mais pas le dump de données.
Ta proposition me semble bien, mais voilà comment est-ce qu'on pourrait faire simple en respectant les besoins de profnsched et les requêtes :
ça marche, on part là dessus !
Vous auriez le nom d'un mod qui s'active par commande chat afin que je regarde comment ça fonctionne ? Merci :)
Malheureusement je n'en ai pas en tête, @LeMagnesium ou @crabman77 en ont peut être en tête ?
je ne sais pas si c'est de ça que tu parles mais fishing active un truc par chatcommand ou formspec, ça lance un tick (enfin de mémoire), après je suis peut être à coté de la plaque :rabbit:
Vous auriez le nom d'un mod qui s'active par commande chat afin que je regarde comment ça fonctionne ? Merci :)
minetest/builtin/game/chatcommands.lua te donne des exemples de commandes. Sinon, grep "register_chatcommand" dans ta copie du repo et cherche un exemple simple, comme celui de news.
À l'heure actuelle les dumps d'overload continuent encore de remplir les logs.. Il faudrait que cela soit sous le même régime... Ou il faut augmenter le niveau de considération d'overload.
Apparemment git fetch --all n'est pas capable d'aller pêcher toutes les nouvelles références...
Tout fonctionne. :+1:
J'attends deux autres revues du code pour un merge. @Darcidride
Prêt à être merge pour moi :+1:
Je merge! On verra ensemble au moment de la mise à jour des serveurs @Darcidride. EDIT: Juste, il faudrait rebase ta branche @Coethium. Je le fais, ça ne me gène pas, mais tu peux aussi y penser la prochaine fois, ça facilite le boulot de test.
Merci tout le monde pour votre travail sur cette PR :dancers:
Yop je repasse un peu après la guerre, la rentrée s'avère quelque peu chronophage. Je vois que ça a été mergé, donc il va devenir possible d'optimiser certains modules en fonction des stats :)
... see README for more !