* Objectif principal : maintenir le temps d'exécution du pas (step) au plus près du tick rate (dedicated_server_step)
* analyser en temps réel les temps d'execution de certaines fonctions de module
(actuellement uniquement globalstep et minetest.after)
* Décaler, de façon adaptative, l'exécution des modules qui l'autorisent explicitement en cas de surcharge
* (WIP) Indiquer à chaque module le temps dont il dispose pour s'exécuter (utile pour les modules qui adaptent leurs calculs)
Concepts :
==========
* Les travaux en attentes sont placés dans des files d'executions priorisées
* La première file est toujours exécutée, même en cas de surcharge
* Les autres files sont traitées tant qu'il reste du temps (< tick rate)
* En cas d'arrêt prématuré (surcharge), chaque classe de priorité est transférée dans la précédente (ainsi en cas de surcharge on est certain que le travail sera executé)
* Il peut y avoir autant de files que souhaités (rester raisonnable cependant)
* Concrêtement :
- Dans l'idéal, toutes les files sont exécutées à chaque pas (step) !
- En cas de surcharge, on a la garantie que les travaux de la file n seront exécutés au pas (step) n ou n+1
- Mais on a aucune garantie de temps (à cause de la surcharge, les pas (step) dépassent le tick rate, parfois de plusieurs secondes...)
- Ne pas oublier que de toute façon en cas de surcharge, ni globalstep.after ni minetest.after ne peuvent garantir le temps écoulé
* En cas de surcharge une trace des travaux exécutés est transcrite dans le log du serveur (pour analyse des goulots d'étranglement)