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
Modérateur
Dernière intervention
15 juillet 2011
35
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