[WD10-50o] Utilisation très importante des ressources
16 réponses
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
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
salut et Merci à tous !
On 19-Jul-2006, "Emmanuel Haefele" <e.haefele@windasso.org> 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
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
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é)
marcel@managingbusiness.be 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é)
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é)
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
salut Niko !
On 19-Jul-2006, "Niko" <niko44@gmail.com> 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
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
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
Salut à tous !
On 18-Jul-2006, marcel@managingbusiness.be 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
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
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
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.
<marcel@managingbusiness.be> a écrit dans le message de
news:4i6hrvF2c6feU1@individual.net...
salut Niko !
On 19-Jul-2006, "Niko" <niko44@gmail.com> 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