MinetestForFun / server-minetestforfun

Repository of the subgame and mods of "MinetestForFun" server
https://www.xorhub.com
The Unlicense
27 stars 10 forks source link

[Profnsched] New module (fr) #507

Closed Coethium closed 8 years ago

Coethium commented 8 years ago

... see README for more !

Coethium commented 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
ghost commented 8 years ago

:+1:

Lymkwi commented 8 years ago

Nous nous sommes mis d'accord avec @Darcidride sur les modifications suivantes :

BetterToAutomateTheWorld commented 8 years ago

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.

Coethium commented 8 years ago

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 ?

Lymkwi commented 8 years ago

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 :

Coethium commented 8 years ago

ça marche, on part là dessus !

Coethium commented 8 years ago

Vous auriez le nom d'un mod qui s'active par commande chat afin que je regarde comment ça fonctionne ? Merci :)

BetterToAutomateTheWorld commented 8 years ago

Malheureusement je n'en ai pas en tête, @LeMagnesium ou @crabman77 en ont peut être en tête ?

ghost commented 8 years ago

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:

Lymkwi commented 8 years ago

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.

Lymkwi commented 8 years ago

À 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

BetterToAutomateTheWorld commented 8 years ago

TDL avant merge

Prêt à être merge pour moi :+1:

Lymkwi commented 8 years ago

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.

Lymkwi commented 8 years ago

https://github.com/MinetestForFun/server-minetestforfun/commit/d2b71969e346c25649c7ed888487e9f276633058 https://github.com/MinetestForFun/server-minetestforfun/commit/0baa0ea091695fdcfe4d25e6437613b2f79634ac

BetterToAutomateTheWorld commented 8 years ago

Merci tout le monde pour votre travail sur cette PR :dancers:

Coethium commented 8 years ago

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