none
Optimisation d'application muti threading RRS feed

  • Question

  •  

    Bonjour 

    Je travaille actuellement sur l'optimisation d'une application Vb.net,  pour cela j'ai mis en place 1 pool de thread.

    Dans ce pool de thread je définis la valeur maximale de thead actifs avec la méthode ThreadPool.SetMaxThreads().

     

    Cette valeur est saisie directement par l'utilisateur.

     

    Pour encore optimiser cette application et que cette valeur ne soit pas saisie au feeling ; je souhaite que l'aplication propose à l'utilisateur une valeur optimale en fonction de ressources de la machine sur la laquelle il se trouve et également du traitement que le thread a à realiser.

     

    En ce qui concerne les paramétres du traitement à réaliser il n'y a aucun probléme

     

    Par contre pour calculer ca en fonction de la configuration de la machine s'est  le flou complet.

     

    Si quelqu'un pourrait me donner un conseil ou m'aider ce serait sympa.

     

    Merci

     

     

     

     

     

    lundi 14 avril 2008 09:48

Réponses

  • Bonjour,

     

    Normalement il faudrait prendre en compte :

    - Au minimum, le nombre de processeur sur la machine (Environnement.ProcessorCount)

    - La dépendance des threads au niveaux des ressources d'attentes mutex/sémaphore/ E/S /...etc.

     

    Si vous mettez une valeur trop grande, cela aura un impact négatif sur votre application (trop de changement de contexte de thread)...

     

    Cordialement

    mercredi 16 avril 2008 07:08
    Modérateur

  • A moins de dedier une machine spéciale pour cette application, toute optimisation dépendant de la config de la machine est peine perdue, rien n'empeche un utilisateur de lancer par la suite une autre application que mangera toute les ressources.

    Une approche auto-adaptative pourrait être interressante, ajout de threads suplémentaire en fonction de la surcharge puis libération quand la tempete se calme. Une chose a garder en tête : moins il y a de threads mieux c'est.

    Sur le net il y a surement de la bonne documentation a ce sujet.

    Cordialement
    lundi 19 mai 2008 12:54

Toutes les réponses

  • Bonjour,

     

    Normalement il faudrait prendre en compte :

    - Au minimum, le nombre de processeur sur la machine (Environnement.ProcessorCount)

    - La dépendance des threads au niveaux des ressources d'attentes mutex/sémaphore/ E/S /...etc.

     

    Si vous mettez une valeur trop grande, cela aura un impact négatif sur votre application (trop de changement de contexte de thread)...

     

    Cordialement

    mercredi 16 avril 2008 07:08
    Modérateur

  • A moins de dedier une machine spéciale pour cette application, toute optimisation dépendant de la config de la machine est peine perdue, rien n'empeche un utilisateur de lancer par la suite une autre application que mangera toute les ressources.

    Une approche auto-adaptative pourrait être interressante, ajout de threads suplémentaire en fonction de la surcharge puis libération quand la tempete se calme. Une chose a garder en tête : moins il y a de threads mieux c'est.

    Sur le net il y a surement de la bonne documentation a ce sujet.

    Cordialement
    lundi 19 mai 2008 12:54