Bonjour à tous,

Là où je travail, nous avons environ 30 ordinateurs qui dorment. Je m'explique, ces ordinateurs servent environ 5% du temps. Leurs capacités sont faiblement utilisées. Toutes ces machines sont branchées sur le réseau et exécutent des tâches de façon sporadiques selon les opérateurs dans l'usine.

D'un autre côté, dans les bureaux, j'ai 3 machines qui roulent beaucoup plus. Quelques fois, elles ont des tâches d'optimisation à accomplir. Pour l'instant, je limite en temps/nbr d'itérations/% d'optimisation ces tâches afin que l'optimiseur ne tourne pas éternellement.

La limite que j'impose à mon optimiseur me fais passer à côté de certaines solutions qui seraient plus optimales.

Mon idée serait la suivante. J'aimerais utiliser chacun des dormeurs pour exécuter quelques calculs lorsqu'ils ne sont pas occupés.




La façon de faire :

J'aurais un ordinateur "répartiteur" qui receverait les requêtes d'optimisation et ensuite les répartiraient dans sa liste de dormeur. Lorsque le dormeur aurait fini ces calculs, il retourne le résultat au répartiteur. Lorsque la requête d'optimisation est complétée, le résultat est retourné au demandeur.

Côté dormeur, il exécute ces fonctions "normales" et lorsqu'il à fini, il indique au répartiteur qu'il est en dormance. Lorsqu'un opérateur à besoin du dormeur, son statut change et le serveur ne peut plus lui envoyer de nouvelles requêtes tant qu'il ne dort pas.

Côté bureau, la machine envoie au répartiteur ses données à optimiser et ensuite devient un dormeur, mais uniquement pour sa propre requête et ce jusqu'à ce que l'optimisation soit complète.




Mes données :

Il s'agit de positionner et d'orienter des morceaux 2 dimensions (de type feuille de métal) de forme diverses dans une surface plus grande pour la découpe. La quantité de morceau varie (entre 1 et ±100), la forme et dimension totalement aléatoire (enfin, sur demande des clients -> imprévisibles et aucun morceau identique).




Mes questions :

Je me demande si les efforts que je vais mettre à monter ce système vont être récompensées.

1 : La vitesse de transfert sur le réseau, le traitement par le répartiteur, l'optimisation par les dormeurs (qui sont moins performant que mes ordinateur de bureaux, intel 2.0 GHz, 2 G RAM VS Intel Dual Core 3.06GHz, 4 G RAM, Windows XP dans tous les cas)

-> Mon optimiseur n'étant pas multithreadé, je n'utilise pas le dual core.

Peut-être avant de me casser la tête sur un système d'une telle ampleur, je suis mieux de rendre multi-thread mon optimiseur?


De plus, je ne suis pas vraiment un programmeur hors-pair, je suis plutôt du type débutant. Alors, peut-être vais-je plus nuire à la production/ralentir mes optimisations que d'autre chose.

J'aurais besoin de connaître vos avis sur les dangers d'un système à plusieurs ordinateurs, les dangers côté programmation, etc.

Merci à tous,

Antoine