Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/12/2012, à 19:29

BrunoL

un & peut être redoutable !

Bonjour,

Las d'attendre que mon script se termine après traitement en séquence des fichiers d'un répertoire.
J'ai pensé mettre chaque appel en tâche de fond en me disant que le scheduller (je crois que c'est lui qui s'occupe de cela) prendrait en charge les traitements parallèles et lâcherait les job au fur et mesure des disponibilités mémoires et processeurs.

J'ai assisté à un véritable "feu d'artifice" ...
Impossible de reprendre la main, la barre des applis ayant disparu, le cadre des fenêtres également de même que mes "conky". Ayant pu sauver un terminal j'ai essayé de lancer un moniteur système, en retour j'ai obtenu des messages d'insuffisance de mémoire pour les processus fils (ou un truc comme cela) ... avant d'être viré de ma session hmm

A la reconnexion, les jobs tournent toujours et cela semble fonctionner correctement, je peux même envoyer ce message smile mais les 2 CPU affichent 100% au compteur ... mieux qu'une compile du noyau wink

Qu'est ce qui m'a échapper ? Comment gérer proprement la mise en tâche de fonds de multiples processus ? a priori le & ne fait pas tout roll

Merci pour vos éclairages.

Hors ligne

#2 Le 10/12/2012, à 01:21

aduxas

Re : un & peut être redoutable !

Tu as dû lancer des centaines de tâches en même temps, toutes avec la même priorité.  Le scheduler doit donc les traiter pareil.  Tu as noyé l'OS.  Une partie se plantera avec une erreur mémoire insuffisante dès que le système est saturé - plus de mémoire virtuelle.  Ces processus tourneront donc en même temps avec un nième des ressources chacun.

Si tu as deux procs, tu peux faire deux scripts qui font chacun la moitié.  Si le boulot n'utilise pas beaucoup de CPU (calcul) , tu peux essayer de surcharger.  Impossible de dire de combien, pour un rendement optimal.

Hors ligne

#3 Le 15/12/2012, à 17:54

BrunoL

Re : un & peut être redoutable !

OK merci aduxas.
Je croyais le schedduler beaucoup plus sophistiqué car dés le lancement de l'os il gère un paquet de process (174 actuellement). Donc en ajouter quelques dizaines (en fait lors du test 200) me semblait presque naturel wink

Hors ligne

#4 Le 15/12/2012, à 22:17

nesthib

Re : un & peut être redoutable !

Pour gérer la priorité utilise la commande (re)nice.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#5 Le 15/12/2012, à 22:39

ftarkin

Re : un & peut être redoutable !

Sinon teste plutot des trucs comme slurm ou SGE comme ordonnanceur et gestionnaire de ressources


Ordi perso monté en Core i3, 4 Go RAM Voyager 12.04 64
Dell Latitude E6210 (Core i3, 6 Go DDR3) Voyager 12.04 64
HP Z800 (biproc Xeon QuadCore 18 Go DDR3) Voyager 12.04 64

Hors ligne

#6 Le 16/12/2012, à 12:59

BrunoL

Re : un & peut être redoutable !

Je vais aller voir ces ordonnanceurs. J'étais persuadé que ce type de fonction relevé du seul noyau.

Intéressant, je ne me rappelle pas avoir lu quoique ce soit sur ce type de soft, ils doivent être assez spécifiques. Je vais également approfondir le nice que je voyais plutôt comme le moyen de dégrader ou upgrader la priorité d'un processus selon notre besoin ponctuel.

Merci.

Hors ligne

#7 Le 16/12/2012, à 13:09

ftarkin

Re : un & peut être redoutable !

En general ces softs sont limités aux serveurs ou clusters de calculs, pour gérer plsuieurs centaines de jobs et optimiser l'utilisation des ressources. En gros mieux vaux faire passer 2 jobs l'un apres l'autre sur le meme proc qu'en meme temps, ca prend moins de temps.


Ordi perso monté en Core i3, 4 Go RAM Voyager 12.04 64
Dell Latitude E6210 (Core i3, 6 Go DDR3) Voyager 12.04 64
HP Z800 (biproc Xeon QuadCore 18 Go DDR3) Voyager 12.04 64

Hors ligne

#8 Le 17/12/2012, à 10:07

BrunoL

Re : un & peut être redoutable !

Je comprends que partager du processeur entre divers processus est plus consommateur que dédier un processus à un proc.

Mais comment obtenir cela. Effectivement, mon besoin est plutôt "d'alimenter" les processeurs par des jobs en attente de libération de ressources que "d'optimiser" l'affectation de ressources. J'entrevois qu'il ne s'agit pas du même problème même si ce qui peut le plus peut le moins.

Mon besoin c'est plutôt le moins et je suis donc surpris de la réaction de l'OS à ma manip !?

EDIT : à la réflexion je me demandes si je ne confonds pas le & avec une mise en tâche de fonds d'un processus ... J'ai lu quelque chose à ce sujet mais je sais plus où sad Est-ce deux choses distinctes ?

Dernière modification par BrunoL (Le 17/12/2012, à 10:12)

Hors ligne

#9 Le 17/12/2012, à 18:29

ftarkin

Re : un & peut être redoutable !

Ce que tu veux c'est un ordonnanceur, ie un systeme qui ordonne le lancement des processus en fonction des ressources. Donc Slurm ou SGE.

Le & fait tourner en tache de fond, ie sans avoir besoin de garder la main sur le terminal.


Ordi perso monté en Core i3, 4 Go RAM Voyager 12.04 64
Dell Latitude E6210 (Core i3, 6 Go DDR3) Voyager 12.04 64
HP Z800 (biproc Xeon QuadCore 18 Go DDR3) Voyager 12.04 64

Hors ligne

#10 Le 17/12/2012, à 19:22

jplemoine

Re : un & peut être redoutable !

Je crois qu'il y a méprise. En simplifiant, le & sert juste à ce que une fois la tâche lancée, on récupère la main dans le terminal.
Le fait de fermer ce terminal ne stoppe pas la tâche.
En aucun cas, il ne gère une quelconque priorité.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#11 Le 17/12/2012, à 19:56

ftarkin

Re : un & peut être redoutable !

jplemoine a écrit :

Le fait de fermer ce terminal ne stoppe pas la tâche.

Ca depend... Un terminal SSH fermé tuera la tache meme avec un '&'. Le meileur moyen d'éviter ca est de passer en nohup.


Ordi perso monté en Core i3, 4 Go RAM Voyager 12.04 64
Dell Latitude E6210 (Core i3, 6 Go DDR3) Voyager 12.04 64
HP Z800 (biproc Xeon QuadCore 18 Go DDR3) Voyager 12.04 64

Hors ligne

#12 Le 18/12/2012, à 10:03

BrunoL

Re : un & peut être redoutable !

Ma manipulation semble avoir montré que :
   - Suite à un lancement avec & le job continue même si la console est fermée (je n'étais pas en ssh).
   - Dans mon cas j'ai même était viré de la session et lors de la reconnexion le/les jobs continués.
   - Ce qui a été vraiment gênant c'est que les job en tâche de fond ont accaparé toutes les ressources (en particulier mémoire)

Pour préciser la manip, je n'ai pas mis le script de lancement en fond mais dans le script la ligne de lancement du traitement de chaque fichier ... d’où l'explosion. J'ai modifié cette façon de faire et cela va beaucoup mieux. Reste que j'ai découvert cet intéressant sujet d'optimisation des ressources.

Merci.

Hors ligne

#13 Le 18/12/2012, à 10:05

ftarkin

Re : un & peut être redoutable !

Attention si tu utilises un ordonnanceur, il ne gerera les ressources que pour ce qui aura été lancé par lui. Exemple, si tu as un quadricore, avec 4 process lancés en slurm, puis que tu lances a coté thunderbird, et bien ton TB ira s'ajouter un un des core a l'un de tes process.
Si tu veux optimiser réellement l'utilisation, il faut utiliser un vrai serveur.


Ordi perso monté en Core i3, 4 Go RAM Voyager 12.04 64
Dell Latitude E6210 (Core i3, 6 Go DDR3) Voyager 12.04 64
HP Z800 (biproc Xeon QuadCore 18 Go DDR3) Voyager 12.04 64

Hors ligne