Ça prends trop de temps


Je dois changer la fréquence des processeurs, régulièrement, pour une sombre histoire de facture électrique (oui, le HPC, c'est ni économique, ni écologique), mais c'est pas le sujet.

Mon problème, c'est que le script naïf qui traite un noeud après l'autre, il est trop lent ! (jusqu'à 38 minutes pour ~650 noeuds)

ClusterShell

Nos scripts sont en bash, ou en python3, ClusterShell fait parti des outils de base. Alors oui, l'idée est là, mais ClusterShell veut la même commande pour tous les noeuds. Ce qui n'est pas le cas ici. Après quelques essais infructueux, à vouloir faire des NodeSet de commandes, je laisse tomber, mais y'a un principe là-dessous...

Execo

Avec une double liste en intension en combo, c'est faisable. C'est juste illisible. Si je retombe là-dessus dans 3 ans, je vais hurler des neurones. Je ne parle pas des collègues qui ont vomit dans ma poubelle.

subprocess.Popen

Moué, j'ai du mal avec le Handler, je retombe sur le travers d'Execo, mais... Mais dans les exemples, y'a un lien vers threadpoolexecutor...

ThreadPoolExecutor

Et plutôt que d'absolument vouloir gérer des NodeSets, une bête grande liste qui contient tout, noeuds ET paramètres associés ?

Liste passée à la moulinette du subprocess originel, mais géré par un Pool d'execution, cette fois-ci. Donc, plein (fanout) de noeuds à la fois. Boing!, je tombe sous les 5 minutes en temps d'exécution. Joie.

Le script parallèle.