Utilisation optimale du processeur multicore

Résolu
bizmoute Messages postés 29 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 21 novembre 2008 - 20 nov. 2008 à 17:37
bizmoute Messages postés 29 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 21 novembre 2008 - 21 nov. 2008 à 16:00
Bonjour,
J'aimerais savoir comment faire pour utiliser le processeur de façon optimale. (Près du 100%)

Mon programme doit exécuter 4 lourdes tâches simultanément (donc 4 threads). Le processeur en question est un Quad Core. Donc j'imaginais qu'en utilisant 4 threads, le processeur serait utilisé de façon maximale mais ce n'est pas le cas... J'ai aussi tenté de changer la priorité du processus et des threads pour "Highest" (monThread.Priority = Threading.ThreadPriority.Highest) mais sans succès... L'utilisation des cores de mon processeur demeure bas (1% à 5% pour chaque core).

Une idée?

7 réponses

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
20 nov. 2008 à 23:22
A priori, des algos sont trop complexes pour les sortir de leurs contextes, afin qu'on puisse jeter un coup d'oeil ?

Amicalement,
Us.
3
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
20 nov. 2008 à 18:32
Salut,
Tes tâches sont-elles lourdes au niveau calcul par le CPU? Car si par exemple tu copie des fichiers, c'est ton disque-dur qui sera à "100%" et qui limitera la vitesse d'exécution, pas les core du CPU...
Car 5% c'est vraiment faible, tu devrais facilement pouvoir arriver à 100% en faisant une boucle infinie avec un simple calcul.
0
bizmoute Messages postés 29 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 21 novembre 2008
20 nov. 2008 à 19:11
Oui, c'est au niveau calcul, aucun fichier n'est créé/lue/modifié/etc.
Ex : concaténation de chaînes avec un StringBuilder, utilisation de Random.Next, itération.
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
20 nov. 2008 à 22:29
Bonsoir,

Remarque peut-être incongru, mais as-tu regardé ce qu'il se passe au niveau des performances du pc (dans gestionnaire)... (Y a-t-il un programme bloquant installé, ou un virus...)

Amicalement,
Us.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bizmoute Messages postés 29 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 21 novembre 2008
20 nov. 2008 à 23:11
Merci d'avoir pris le temps de répondre les gars.
Et non ce n'est pas incongru Us ;)
Mais non, aucun programme bloquant.
Pour les virus, j'ai ma vigilance et Avast qui me semble satisfaisant..
Au niveau des performances du PC, rien de particulier à signaler, utilisation de l'UC entre 0 et 3 lorsque je ne fait rien...

Je vais utiliser des StopWatch pour évaluer quelles parties de mon code prennent le plus de temps à exécuter.. mais je ne crois pas que ça change quoi que ce soit sur l'utilisation du processeur par mon programme...
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 nov. 2008 à 09:10
Salut,

Jettes un coup d'oeil sur le framework parallele FX

http://blog.sfartz.com/post/2007/12/05/Pare-pour-la-programmation-Parallele-Demarrez-avec-Parallel-FX
http://msdn.microsoft.com/en-us/concurrency/default.aspx
....

C'est une extension de linq pour paralléliser.

Sinon tu as perfmon (gratuit) sous windows pour voir comment réagissent la mémoire et les processeurs (core)

Bon coding
0
bizmoute Messages postés 29 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 21 novembre 2008
21 nov. 2008 à 16:00
merci pour ces infos nhervagault. Très instructif!
Malheureusement, je ne suis pas encore rendu au .Net 3.5 avec Linq...
Existe-t-il quelque chose de semblable (un framework de tâches parallèles) pour le .Net 2.0?
Et pour perfmon, c'est une bonne idée.. ça va me donner des informations plus claires que le gestionnaire des tâches de Windows.
0
Rejoignez-nous