L'Alliance Francophone > L'AFabric

[Linux] Script pour suspendre / reprendre les UT

(1/24) > >>

Maeda:
Bonjour à toutes et tous :)

J'ai fait deux petits scripts pratiques permettant de suspendre / reprendre les UT d'un projet au choix pour Linux à lancer dans un terminal.


* Script suspend_calc :Avantages :

* Choix du projet
* On ne bloque pas l'envoi des UT tout projet confondu
* On peut cruncher sur d'autres projets, en sachant que celui ciblé verra ses UT suspendues avant la fin.
* Automatique, pas la peine d'être présent pour suspendre.
* Peut se lancer en parallèle pour toucher plusieurs projets.
* Peut re-suspendre rapidement les UT concernées, notamment le temps de télécharger des UT supplémentaires pour le cache (pour dé-suspendre, utiliser resume_calc justement ;))
* [MAJ 06/08/17 11h55] Un fichier de configuration permet d'indiquer facilement les projets et leur limite de temps / % restant et le script peut être lancé avec ou sans interaction utilisateur (grâce aux arguments).Inconvénients :

* Il reste du temps de calculs à chaque UT
* Il faut avoir une valeur raisonnable de temps estimé restant au plus proche de sa fin
* Les UT suspendues n'étant pas terminées, elles sont stockées en mémoire. Un redémarrage système complet de la machine va faire perdre quelques minutes à chaque UT (dernier point de contrôle). Non négligeable s'il y a beaucoup d'UT, ces minutes seront à recalculer.
* Pas sur Windows pour l'instant :p

* Script resume_calcAvantages :

* On peut donner une date et heure de désuspension des UT (suspendues par le script suspend_calc ou via Boinc Manager)
* Peut se lancer en parallèle pour programmer plusieurs projets.
* Automatique
* [MAJ 05/06/16 11h25] Vérifie et tue le processus suspend_calc au choix avant reprise des UT à l'heure définie
* Peut dé-suspendre rapidement les UT concernées, notamment le temps de télécharger des UT supplémentaires pour le cache (pour re-suspendre, utiliser suspend_calc justement ;))
* [MAJ 20/11/16 16h35] On peut bypasser le délai (en appuyant sur ENTREE) afin de faire une désuspension immédiateInconvénients :

* Pas sur Windows pour l'instant :p
Scripts suspend_calc et resume_calc disponibles sur mon github.

N.B. [MAJ 14/09/16 12h50] : Sur ma machine, j'ai certains projet (pogs par exemple), ou l'actualisation du temps restant est faite presque toutes les 15 min.
Il faut vérifier les projets/UT pour avoir la bonne valeur limite acceptable, puis l'indiquer dans le fichier de configuration (version 1.0 minimum) ou insérer une ligne supplémentaire dans le script suspend_calc et mettre la bonne "form" (version 0.1, voir README sur github).

=> Branche 1.1 : le script suspend_calc se base sur la portion (%) restant plutôt que le temps restant. Version testée et fonctionnelle, pas de bug pour l'instant.
=> Branche 1.0 : le script suspend_calc se base sur un fichier de configuration plus explicite. Il est conseillé d'utiliser la version 1.1 actuellement maintenue.
Branche 0.1 (fonctionnelle mais plus maintenue)

N'hésitez pas à me faire des retours uniquement pour discuter du script ou pour une aide au lancement. Pour toute envie de discussion de bug ou d'évolution : merci d'utiliser l'onglet Issue sur mon Github.

JeromeC:
Merci pour le tuto et pour le script !

Si je comprends bien (je suis pas linuxien) il faut connaitre le temps de calcul estimé des UT du projet et il faut le mettre en paramètre dans le script ?

Maeda:
Pour WCG, j'ai mis 1 min, et pogs, 28min. Il faut voir pour les autres, si tu as par exemple un temps restant indiqué de 15 min (et 85% complété) et qu'il passe à 100% d'un coup. Dans ce cas, mettre proche des 30 min est sécuritaire.

Si des personnes connaissent, oui il faut mettre d'autres 'case' avec le bon format pour le timing (partie #Seuil de suspension limite en fonction du temps restant en fonction des projets ), exemple :

--- Code: ---#Seuil de suspension limite en fonction du temps restant en fonction des projets
...
url_précise_de_mon_projet)
limite="5899s"
form="$chcom[1-5][0-8][0-9][0-9]\.|$chcom[0-9][0-9][0-9]\.|$chcom[0-9][0-9]\.|$chcom[0-9]\." ;;
--- Fin du code ---

...stoppera lorsqu'il restera 5899s ou moins.
url_précise_de_mon_projet s'obtient avec :

--- Code: ---boinccmd --get_project_status | grep "master URL"
--- Fin du code ---

-> S'assurer de bien tout prendre à partir de http inclus (le "/" à la fin également par exemple).
Sinon comme je l'ai indiqué, pour d'autres projets non listés dans la boucle case / esac, il prendra par défaut 5 min avant la fin.

Maeda:
MAJ du 1er post pour resume_calc.
J'hésite à passer par défaut à moins d'une minute par détaut. Car si tout va bien, autant suspendre à moins d'une minute plutôt que 5 min.
Et justement, si cas particulier il y a, autant rajouter ces cas dans les "case".

Vous en pensez quoi ?
P.S. : je me servirai du script resume_calc ce soir à partir de 2h du matin pour le Pentathlon :hyperbon:.

P.P.S : L'idéal serait d'avoir un fichier de "conf" à côté indiquant les temps restants minimum exploitable pour chaque projet (chaque sous-projet peut-être même...). Mais comme c'est différent en fonction des machines (HT activé ou non, etc.), demander à chaque fois le temps voulu serait peut-être plus simple... A voir, pour l'instant, il n'y a que moi qui l'utilise :cavachier:

Scrat65:
Merci beaucoup pour cette initiative. Je tourne sous LinuxMint 17.3 et c'est ma première participation à un Pentathlon. Comme je ne suis guère à l'aise avec les différentes techniques de lâcher, ton script pourrait m'apporter de la simplicité d'utilisation en gardant l'activité réseau toujours disponible.
Je viens d'utiliser suspend_calc pour The Skynet POGS et PrimeGrid et vais aussi tester resume_calc pour The Skynet POGS dans le cadre du Pentathlon ; mais pas à 2h du matin... :)
A suivre

Pour le temps par défaut  à moins d'une minute, cela semble logique de suspendre à moins d'une minute plutôt que 5 mn.
L'idée du fichier .conf serait idéale ; puisque chaque machine est spécifique ne pourrait-on pas imaginer une sorte d'apprentissage du temps de calcul basé sur les calculs précédents pour chaque projet sur la machine concernée ? Sinon, demander à chaque fois le temps restant voulu pour suspendre semble la solution la plus simple. J'espère ne pas avoir dit de bêtises...

Bonjour chez vous

PS : suspend_calc fonctionne très bien !
une UT PrimeGrid PPS (Sieve) 1.39 cudaPPSsieve vient d'être suspendue à 89,114 % (temps restant estimé 00:04:54)  :hello:

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique