Auteur Sujet: Ordonnanceur de tâches BOINC basé sur REC  (Lu 100 fois)

0 Membres et 1 Invité sur ce sujet

JeromeC

  • CàA
  • Messages: 26672
  • Boinc'eur devant l'éternel
  • *****
  •   
Ordonnanceur de tâches BOINC basé sur REC
« le: 14 avril 2021 à 20:09 »
En discutant avec le développeur de BoincTasks sur son forum il m'a cité ce wiki que j'ai trouvé très intéressant, et n'ayant jamais entendu parler du concept de REC (qui n'est pas la même chose que le RAC) je me suis dit qu'il serait intéressant d'en faire un topic sur notre forum chéri.

Voici donc une traduction deepl based, revue et adaptée :


Citer
Ordonnanceur de tâches BOINC basé sur REC
Un peu d'histoire

Depuis des générations [j'aime bien le concept de génération associé à boinc :) ], le planificateur (ordonnanceur) de travail du client BOINC a donné des maux de tête aux utilisateurs qui se sont plaints aux développeurs, car il ne suivait guère leurs préférences. Ce n'était pas si bizarre, car il y avait beaucoup de variables avec lesquelles le planificateur devait travailler. De plus, au fur et à mesure que les versions de BOINC ont progressé et que des capacités GPU ont été ajoutées, il est devenu évident que le programmateur actuel, avec le code CPU et GPU inclus, était complètement dépassé.

En tant que tel, pour BOINC 7, le planificateur a été réécrit à partir de 0, et séparé en un pour le CPU et un pour le GPU. Cela signifie que votre nouveau [article probablement écrit au moment de la sortie de la v7 et pour informer de la transition avec des boinc antérieurs] BOINC doit réapprendre toutes ces tâches fastidieuses, mais si vous le laissez tranquille et ne faites pas de micro-gestion des choses, il vous faudra 10 tâches par application de projet pour vous remettre sur les rails.


Commentaires sur le terrain

Comme expliqué par LadyL sur les forums de Seti :

REC = crédit estimé récent

Ceci n'est pertinent que si vous gérez plus d'un projet.

Ce que le client fait, c'est qu'il garde un enregistrement de la quantité de temps CPU/GPU que chaque projet a récemment vu. Cela se traduit par le REC. Il compare ce chiffre avec la priorité (resource share) du projet qui a été fixée. Un projet qui a travaillé moins que sa part aura la priorité à la fois dans l'ordonnancement (tâches en cours) et dans la recherche de travail (demande au serveur du projet). Puis, au fur et à mesure qu'il accumule du temps de calcul, son REC augmente et un autre projet prend la tête de la file d'attente. Au fil du temps, vous obtenez une distribution plus ou moins bonne du temps de travail en fonction du partage des ressources.

Points à noter : les GPU sont très productifs et conduisent donc à une REC élevée. Si vous exécutez des projets GPU avec des projets CPU avec des priorités similaires, "le projet GPU ne voit pratiquement pas de CPU" [je suis pas sûr d'avoir bien compris ce passage]. Le CPU et le GPU sont planifiés (ordonnancés) séparément. SETI restera probablement assez haut dans la file d'attente, puisque l'obtention de tâches est aléatoire. La mise en place d'un petit cache de "jours supplémentaires" aidera à obtenir des tâches de SETI, puisque BOINC demandera plus souvent, augmentant ainsi vos chances. 

N'hésitez pas à commenter.
Parce que c'était lui, parce que c'était moi.