OVH Cloud OVH Cloud

[WD10-50o] Utilisation très importante des ressources

16 réponses
Avatar
marcel
Salut !

Je suis devant un problème que je ne comprends pas.
Un programme en cours de développement, mais déjà en production, utilise
jusqu'à 95% des ressources processeur et ce,tant en mode Debug qu'en mode
Executable.
Et ce, alors qu'il est juste dans la fenêtre principale de l'application
(mère midi), en attendant que l'utilisateur fasse son choix.
A ce moment, il y a un timersys qui rafraichit toutes les secondes la barre
de message (affichage de Num si Numlock est enfoncé) et un second timersys
qui vérifie la valeur d'un record dans un fichier HF en mode CS toutes les
30 secondes.
Si on ouvre une fenêtre (fille midi) de l'application, les performances sont
correctes, on ne constate pas vraiment de ralentissement et, c'est que je ne
comprends pas, l'usage du processeur diminue !
Dès que le programme attend un imput, la consommation en ressources
processeur remonte !
Bref, j'ai un programme qui utilise plus le processeurs quand il ne fait
rien que quand il fait quelque chose !
Ceci dit, à certains moments le programme se fige, et c'est en tentant de
comprendre pourquoi que j'ai détecté la chose...un utilisateur s'est étonné
de ce que le programme se bloquait ...
Le plus surprenant, c'est qu'après un certain temps, le programme se
débloque et continue comme si de rien n'était ...
Le phénomène est reproductible sur différente machine ...
J'ai pensé à un deadlock... mis je n'ai rien trouvé après plusieurs lectures
attentives de mon code et de nombreux déboguages pas à pas ...
Quelqu'un aurait-il une idée géniale pour m'aider à détecter où pourrait se
trouver rmon problème ?

Merci d'avance !


--
Marcel Berman
Membre de WindAsso (coté belge !)


---
Antivirus avast! : message Sortant sain.
Base de donnees virale (VPS) : 0629-0, 18/07/2006
Analyse le : 18/07/2006 23:47:39
avast! - copyright (c) 1988-2006 ALWIL Software.
http://www.avast.com

6 réponses

1 2
Avatar
marcel
salut et Merci à tous !

On 19-Jul-2006, "Emmanuel Haefele" wrote:

Ne serait-ce pas ça la cause de ton problème. Le multitache est interdit
dans les thread, cf la doc ;-)




Cet aspect des choses (pas de timersys() ni multitache() dans les
threads), m'était complètement sorti de la tête !
Je vais vérifer si je n'en ai pas ...
J'ai pris l'habitude de parsemer mon code de multitache(1) pour rendre la
main régulièrement à Windows ... et il est bien possible qu'il y en aie
aussi dans les procédures appellées dans mes threads (processus pour les
francophones/francophiles purs et durs)
Tiens, en passant, pourquoi donc notre éditeur préféré n'a t'il pas traduit
threadexecute() et timersys() ?

--
Marcel Berman
Membre de WindAsso (coté belge !)


---
Antivirus avast! : message Sortant sain.
Base de donnees virale (VPS) : 0629-0, 18/07/2006
Analyse le : 19/07/2006 12:57:34
avast! - copyright (c) 1988-2006 ALWIL Software.
http://www.avast.com
Avatar
Romain PETIT
a couché sur son écran :

J'ai pris l'habitude de parsemer mon code de multitache(1) pour rendre la
main régulièrement à Windows ...



En passant, pour rendre la main à Windows, il faut utiliser
multitache(-1) (ou 0) et non 1 qui justement suspend l'appli sans
rendre la main au système...
A creuser pour ton problème ?

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
marcel
salut Niko !

On 19-Jul-2006, "Niko" wrote:

il est dit dans l'aide : "Les événements et timer lancés avant l'exécution
de la fonction Multitâche sont gérés lors de la temporisation. "
Ne serait-ce pas tout le contraire que tu fais????





Je comprends la phrase en question de la manière suivante :
Je peux lancer un timer (un timersys ?) avant d'utiliser un multitache() et
la temporisation sera active, c'est à dire que si j'avais demandé d'exécuter
de lancer un processus toutes les 10 minutes, les multitaches lancés après
la déclaration du timer ne vont pas avoir d'influence sur le temporisateur,
c'est à dire qu'il ne sera pas suspendu ... autrement dit, que le processus
sera lancé précisément 10minutes plus tard ...
Me trompai-je ?


--
Marcel Berman
Membre de WindAsso (coté belge !)


---
Antivirus avast! : message Sortant sain.
Base de donnees virale (VPS) : 0629-0, 18/07/2006
Analyse le : 19/07/2006 13:03:27
avast! - copyright (c) 1988-2006 ALWIL Software.
http://www.avast.com
Avatar
marcel
Salut à tous !


On 18-Jul-2006, wrote:

Salut !

Je suis devant un problème que je ne comprends pas.
Un programme en cours de développement, mais déjà en production, utilise
jusqu'à 95% des ressources processeur et ce,tant en mode Debug qu'en mode
Executable.
Et ce, alors qu'il est juste dans la fenêtre principale de l'application
(mère midi), en attendant que l'utilisateur fasse son choix.
A ce moment, il y a un timersys qui rafraichit toutes les secondes la
barre
de message (affichage de Num si Numlock est enfoncé) et un second
timersys
qui vérifie la valeur d'un record dans un fichier HF en mode CS toutes les
30 secondes.
Si on ouvre une fenêtre (fille midi) de l'application, les performances
sont
correctes, on ne constate pas vraiment de ralentissement et, c'est que je
ne
comprends pas, l'usage du processeur diminue !
Dès que le programme attend un imput, la consommation en ressources
processeur remonte !
Bref, j'ai un programme qui utilise plus le processeurs quand il ne fait
rien que quand il fait quelque chose !
Ceci dit, à certains moments le programme se fige, et c'est en tentant de
comprendre pourquoi que j'ai détecté la chose...un utilisateur s'est
étonné
de ce que le programme se bloquait ...
Le plus surprenant, c'est qu'après un certain temps, le programme se
débloque et continue comme si de rien n'était ...
Le phénomène est reproductible sur différente machine ...
J'ai pensé à un deadlock... mis je n'ai rien trouvé après plusieurs
lectures
attentives de mon code et de nombreux déboguages pas à pas ...
Quelqu'un aurait-il une idée géniale pour m'aider à détecter où pourrait
se
trouver rmon problème ?

Merci d'avance !






Merci pour vos interventions ... le problème est résolu !
Comme indiqué précédemment pour rendre la main à Windows il faut donner un
entier négatif et il y avait 3 multitaches dans mon code avec des entiers
positifs.
Ceci dit, le problème ne venait pas de là...
Je ne sais plus pour quelle raison, au lieu d'utiliser un timersys() pour
une de mes procédures, j'avais essayé un threadexecute et j'avais mis une
boucle d'attente dans la procédure avec un multitache ...
Le programme a fonctionné ainsi pendant plusieurs semaines et c'est
seulement depuis une semaine que le problème s'est présenté. Question
subsidiaire :
Pourquoi le phénomène s'est-il déclenché seulement après tant de temps?
J'ai remplacé le thread par un timersys() et supprimé le multitache ... tout
va bien ...
Alors, pur ceux qui, comme moi, ont la mémoire qui flanche ... Il vaut mieux
utiliser les threads avec précaution !

Bien à vous et encore merci pour vos conseils !


--
Marcel Berman
Membre de WindAsso (coté belge !)


---
Antivirus avast! : message Sortant sain.
Base de donnees virale (VPS) : 0629-0, 18/07/2006
Analyse le : 19/07/2006 14:01:01
avast! - copyright (c) 1988-2006 ALWIL Software.
http://www.avast.com
Avatar
Niko
oui, je crois que c'est ça. A ceci près que cela dépend de l'état d'attente
de Windows en plus des10min.


a écrit dans le message de
news:
salut Niko !

On 19-Jul-2006, "Niko" wrote:

> il est dit dans l'aide : "Les événements et timer lancés avant


l'exécution
> de la fonction Multitâche sont gérés lors de la temporisation. "
> Ne serait-ce pas tout le contraire que tu fais????



Je comprends la phrase en question de la manière suivante :
Je peux lancer un timer (un timersys ?) avant d'utiliser un multitache()


et
la temporisation sera active, c'est à dire que si j'avais demandé


d'exécuter
de lancer un processus toutes les 10 minutes, les multitaches lancés après
la déclaration du timer ne vont pas avoir d'influence sur le


temporisateur,
c'est à dire qu'il ne sera pas suspendu ... autrement dit, que le


processus
sera lancé précisément 10minutes plus tard ...
Me trompai-je ?


--
Marcel Berman
Membre de WindAsso (coté belge !)


---
Antivirus avast! : message Sortant sain.
Base de donnees virale (VPS) : 0629-0, 18/07/2006
Analyse le : 19/07/2006 13:03:27
avast! - copyright (c) 1988-2006 ALWIL Software.
http://www.avast.com





Avatar
Roumegou Eric
jacques trepp vient de nous annoncer :


A part ça, qu'est-ce qui n'est pas français ?



Celui qui ne saute pas ???

;-) hem désolé

--
Eric Roumégou
Webmaster des Wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci dessus pour me contacter en privé)
1 2