Duniter PoW: mode "ECO"

Pour la MR « reduce CPU », voilà en résumé le principe sachant que le but est de diminué la difficulté commune pour réduire la conso d’énergie de Duniter et faciliter le calcul de bloc pour les petits ordi.

  • Créer un mode ECO qui lorsqu’il est activé remplace les paramètres %CPU et nombre coeur
  • Activer le mode « ECO » par défaut à l’installation
  • Fixer un nombre de test par seconde vers lequel le mode ECO va faire tendre %CPU et nombre coeur du noeud (ce nombre test est commun à tous noeuds dans la MR il était fixé à 300 test/s)
  • Repasser le noeud à 100% de sa capacité de calcul si il ne lui reste qu’un bloc dans la fenêtre

Je crois que c’est tout…

Merci @Vincent_Rousseau pour ces rappels :slight_smile:

Alors personnellement je suggère une autre approche, plus simple a codée et moins intrusive pour l’utilisateur : utiliser 1 seul cœur en mode éco et tout les cœurs si le membre a un seul bloc dans la fenêtre courante.

En effet, l’utilisateur de Duniter a l’habitude de fixer le % de cpu souhaité, passer le cpu à 100% pour ne pas sortir de la fenetre courante est totalement nécessaire avec ton approche, mais peu nuire a l’utilisateur qui laisse tourner Duniter en tache de fond sur son ordinateur personnel.

Alors qu’en jouant sur le nombre de cœurs on respecte le % max de cpu fixé par l’utilisateur tout en restant sécurisé pour la monnaie.

Jouer sur le nombre de cœurs a également l’avantage d’être infiniment plus simple a coder, or perso je tiens beaucoup au principe KISS (Keep It Simple, Stupid) pour choisir quoi coder, et j’y tiens plus encore dans le cadre de Duniter.

La plupart des noeuds Duniter ont déjà au moins 4 cœurs voir plus (même le rpi4 à 4 cœurs), donc ça réduirait déjà beaucoup la conso :slight_smile:

3 J'aimes

Effectivement, c’est beaucoup plus simple et ça divisera la conso énergétique par 4 ou 8 dans beaucoup de cas. Le rasp utilisera surement souvent les 4 coeurs mais c’est normal :slight_smile:

2 J'aimes

Fonctionnalité implémentée en même temps que l’oxydation de la pow. Et j’ai testé ça fonctionne bien :slight_smile:

Le comportement que j’ai finalement implémenté est légèrement différent, il se base sur l’handicap de la difficulté personnalisée :

  • Si handicap == 0, Duniter utilise tous les cœurs pour la PoW qu’on soit en mode « ECO » ou non.
  • Si handicap > 0, et que le mode « ECO » est activé, Duniter utilise un seul cœur pour la PoW.

L’idée c’est de ne pas attendre de tomber à 1 seul bloc trouvé dans la fenêtre courante, il se peut que ce soit alors déjà trop tard et que le membre sorte de la fenêtre courante.

Le mode « ECO » sera activé par défaut dans Duniter 1.8 :slight_smile:

Cela devrait également avoir pour effet d’améliorer la rotation du calcul des blocs, les écarts entre gros et petits calculant devraient se réduire un peu.

2 J'aimes