Utiliser tout le CPU

ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 - 1 avril 2006 à 17:51
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...

12 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
1 avril 2006 à 18:44
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
1 avril 2006 à 18:45
Mais si tu a 2 processeurs, je ne sais pas le resultat que ça va donner.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
1 avril 2006 à 18:57
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.
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
1 avril 2006 à 19:24
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(
0

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

Posez votre question
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
1 avril 2006 à 19:42
Merci à vous tous,
Je vais explorer toutes ces possibilités
0
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
1 avril 2006 à 20:30
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
2 avril 2006 à 21:02
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
0
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
3 avril 2006 à 09:01
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
3 avril 2006 à 18:13
Ç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
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
4 avril 2006 à 23:53
Explore ma possibilité, tu y vera pas de différence exepté ton programme plus rapide.

http://vbaddons.free.fr
MSN : x_men_40(
0
ncoder Messages postés 244 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 6 avril 2008 1
5 avril 2006 à 09:09
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
0
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
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(
0
Rejoignez-nous