Utiliser tout le CPU

Messages postés
244
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
6 avril 2008
- - Dernière réponse : cs_max12
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
- 5 avril 2006 à 15:04
Bonjour à tous,

J'ai fait un programme qui fait de très gros calculs en boucle.
Je dispose d'un ordinateur assez performant avec bcp de RAM et biprocesseur.
Je veux le faire tourner pendant plusieurs jours, or mon programme n'utilise que 50% de l'UC

Comment faire pour monopoliser une plus grande part de l'UC (95%) pour mon programme ?

Merci d'avance...
Afficher la suite 

12 réponses

Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
Tu met le thread principal en TimeCritical. Tu utilise SetThreadPriority comme ceci

SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);

mais attention, ceci va utiliser TOUT ton processeur donc ta souris ne fonctionnera meme plus. Alors a la place de THREAD_PRIORITY_TIME_CRITICAL essais plutot THREAD_PRIORITY_HIGHEST.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Commenter la réponse de SAKingdom
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
Mais si tu a 2 processeurs, je ne sais pas le resultat que ça va donner.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Commenter la réponse de SAKingdom
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
0
Merci
Salut,

Si tu fais ton calcul dans un thread, seulement un des processeur
pourra travailler dessus a un instant donné, d'ou le 50% d'utilisation
(a mon avis).

Je pense qu'il faut que tu repartisse le travail sur 2 thread ou plus, afin que les deux processeurs travaillent en meme temp.
Commenter la réponse de cs_aardman
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
0
Merci
C'est à cause de l'hyperthreading je présume qu'il reste à 50%. Sur une autre machine il serait à 100% (si si, j'ai fait l'essai). Donc tu peux toujours désactiver l'hyperthreading par le bios et ça devrait aller.

A+

http://vbaddons.free.fr
MSN : x_men_40(
Commenter la réponse de cs_max12
Messages postés
244
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
6 avril 2008
1
0
Merci
Merci à vous tous,
Je vais explorer toutes ces possibilités
Commenter la réponse de ncoder
Messages postés
244
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
6 avril 2008
1
0
Merci
Meme en utilisant THREAD_PRIORITY_TIME_CRITICAL, il ne monte pas plus de 50-55%.
En fait, il fait une moyenne : le premier UC tourne à 100%, le second 0%.
Donc THREAD_PRIORITY_TIME_CRITICAL fonctionne, mais que sur l'UC qui a reçu "l'ordre" de calculer...

Je ne pense pas qu'en faisant deux threads les deux UC tourneraient ensembles... si ?

Je viens à l'instant de remarquer quelque chose :
A l'instant où j'écris, mon programme tourne, et le gestionnaire des taches me montre 50% d'UC utilisé.
Mais lorsque je me me mets à taper ce texte, l'UC (total) monte à 60, 70, 80, 90% plus je tape vite, et à 99% en maintenant une touche enfoncée.

Est-il alors à sa capacité maximale puisque rien que de taper un texte le fait monter rapidement vers 90% ?

Mais alors pourquoi afficher 50 %

Merci pour vos réponses
Commenter la réponse de ncoder
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
Je vais essayer de me renseigner la dessus. Si BruNews passait par ici, il te dirait sans doute le problème.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Commenter la réponse de SAKingdom
Messages postés
244
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
6 avril 2008
1
0
Merci
OK merci je continue à cherche aussi, mais juste une dernière petite question :

Quand mon UC tourne vers 90-100%, sa température monte à environ 68-70°C, alors j'arrète mon prog, de peur de predre mon ordi lol.

Vous savez pas par hasard quelle est la limite habituelle de température d'un UC, et celui d'un disque dur ?

Merci à tous
Commenter la réponse de ncoder
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
Ça dépend de sa vitesse et de son système de refroidissement. Le mien à plein charge peu atteindre 45°C mais ce situ en moyenne à 36. Pour le disque ça dépend de la vitesse. Présentement en vitesse standard (7200 tour minute), c'est en moyenne 40°C pour les disque unique mais ça dépend aussi combien il y a de disques dans la boite (les disque de 200Go en on 2 ou 3 en eux)

___________________________________________
Les plus grands esprits trouvent toujours une solution
Commenter la réponse de SAKingdom
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
0
Merci
Explore ma possibilité, tu y vera pas de différence exepté ton programme plus rapide.

http://vbaddons.free.fr
MSN : x_men_40(
Commenter la réponse de cs_max12
Messages postés
244
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
6 avril 2008
1
0
Merci
Je vais voir, mais j'ai pas très envie de toucher au bios pour l'instant ...

Je regarde comment on s'y prend en tout cas !

Merci
Commenter la réponse de ncoder
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
0
Merci
C'est sans danger aucun, c'est aussi simple que de mettre un mot de passe dans le bios. D'ailleur j'ai lu que certain serveur désactivait l'hyperthreading à cause de problème de performance que ça cause sur certain processus (donc un serveur SQL), il semble que l'hyperthreading ne soit pas bon à n'importe quoi et ralentisse certain type de traitement, ton programme doit faire partie de ceux là.

A+

http://vbaddons.free.fr
MSN : x_men_40(
Commenter la réponse de cs_max12