IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

problème consommation processeur


Sujet :

Embarqué

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 32
    Points : 20
    Points
    20
    Par défaut problème consommation processeur
    Bonjour tous le monde

    je souhaiterai poser une question concernant la consommation processeur d'une application embarqué

    voila je possède un pc industriel type PC104, avec un linux 2.6.23, il est arrivé que le pc redémarre sans raison apparente,donc j'ai booster l'alimentation, j'ai ventiler le système j'ai
    soigner les contactes (éviter les faux contacte) mais rien a faire, le pire c'est que c'est aléatoire.

    et je me suis rendu compte en exécutant la commande TOP que mon application principale dans le répertoire /HOME consomme 92% du processeur ....!! ??

    est-ce que ca peut être la raison du redémarrage?? et comment éviter ca ??

    Merci a vous.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Salut,

    Ma petite expérience des PC qui redémarrent se limite à des PC qui surchauffent et je suppose qu'une sécurité déclenche un reset. Je pense que l'époque où un processus pouvait faire suffisamment n'importe qui jusqu'à faire redémarrer le PC. En plus tu travailles avec un Linux récent. En espace utilisateur d'ailleurs ?

    Pourrait-on avoir un aperçu du retour de top ?

    Que fait ton application ? As-tu les droits pour la modifier ?

  3. #3
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Quand tu dis "sans raison apparente", tu n'as pas de logs exploitables ? De trace de crash kernel ?
    As-tu essayé de démarrer ton système sans ton appli principale ?
    As-tu essayé de faire un retour de toutes les sorties std/err sur un fichier de log ? En supposant que ton appli en cas de crash puisse te retourner des erreurs.

    Les processeurs ont généralement une protection sur la température. Si la température dépasse une certaine valeur ton système se met en protection. Cela "peut" venir de là.

    Il y a moyen (je ne me souviens plus de l'option exacte) de récupérer le dernier message d'erreur du kernel et de le stocker quelque part. J'utilisais ça sur de l'OMAP, je ne saurais plus dire quelle était l'option ni si c'est spécifique à ces processeurs. Mais c'est une piste envisageable. Cela te permettrait de récupérer l'erreur dans le cas où le kernel n'a pas le temps de logger quoi que ce soit.

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Cette histoire m'a rappelé un (magnifique) article de Christophe Blaess :
    http://www.blaess.fr/christophe/2012...ion-thermique/
    Dommage qu'il ne parle pas d'éventuels logs du kernel pour confirmer l'hypothèse...

    Cela pourrait-il être un fichier tel que /var/log/kern.log (http://www.cyberciti.biz/faq/linux-l...ew-logs-files/) ?

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 32
    Points : 20
    Points
    20
    Par défaut problème consommation processeur
    Bonjour et merci pour vos réponses,

    Oui y a un fichier de log dans /var/syslog... mais inexploitable vu qu'il n'y a pas d'erreur dedans j'imagine qu'il a pas le temps d’écrire l'erreur avant de redémarrer!!

    Pour la surchauffe, c'est le premier truc auquel j'ai pensé mais j'ai fais des test pour reproduire le problème rien a faire même en chauffant avec un sèche cheveux, donc j'ai éliminé cette hypothèse !!

    Pour Aquanum :
    As-tu essayé de démarrer ton système sans ton appli principale ?
    Comment je pourrai faire ca ?


    As-tu essayé de faire un retour de toutes les sorties std/err sur un fichier de log ? En supposant que ton appli en cas de crash puisse te retourner des erreurs.
    As-tu un exemple, car le seul fichier ou sont répertoriés les évènements de mon appli sont les messages stockés dans /var/syslog/log/messages

    Et pour le top ça me donne ça :
    Images attachées Images attachées  

  6. #6
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Pour le dernier message système j'ai retrouvé c'est /proc/last_kmsg
    http://stackoverflow.com/questions/9...r-kernel-panic

    Citation Envoyé par picall Voir le message
    Comment je pourrai faire ca ?
    Ton application doit être lancée par un script d'init. Tu peux essayer de le désactiver pour que l'application ne se lance pas.

    Citation Envoyé par picall Voir le message
    As-tu un exemple, car le seul fichier ou sont répertoriés les évènements de mon appli sont les messages stockés dans /var/syslog/log/messages
    http://abs.traduc.org/abs-5.0-fr/ch19.html

    /var/log/messages c'est encore autre chose, c'est stocké via syslog. Tu peux avoir des retours stdout/stderr en plus, ce qui pourrait t'être utile. Mais ça dépend de ton appli. Si ça se trouve tout est redirigé dans /var/log/messages

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 32
    Points : 20
    Points
    20
    Par défaut re
    bonjour et merci Aquanum pour ton retour,

    mais j'avoue que je comprend pas grand chose a ca !!

    je suis pas très calé en linux donc pour mon cas ,comment savoir si j'ai une sortie d'erreur de configurer?? et comment savoir ou elle est dirigé??

    je sais que mon application est plein de printf pour les erreurs mais je sais pas ou cava?? comment le savoir?? et si c'est pas configurer comment le configurer??

    merci d'avance.

  8. #8
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./ton_programme 2>&1 ./un_fichier_de_log
    tu rediriges la sortie standard (printf) et la sortie d'erreurs vers ton fichier. Cela te permet de récupérer certaines erreurs qui n’apparaîtraient pas dans /var/log/messages

    Donc pour ça tu dois changer ton script d'init et rajouter la redirection à la fin de la commande de démarrage de ton appli.

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    ca c'est très intéressant ca , merci

    donc si la redirection existe déjà je dois la trouver dans le fichier rcS si non je la rajoute après le lancement de mon application. c'est ca??
    je test ca .

    merci encore.

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    une autre question avant de faire les tes

    est-il possible de faire ca ./mon_programme 2>&1 /dev/ttyS0 pour diriger les erreur vers ttys0??

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 32
    Points : 20
    Points
    20
    Par défaut re
    jai essayé de rediriger vers ttyS0 mais ca na pas marché

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./mon_programme 2>&1 /dev/ttyS0
    pour la redirection sur fichier j'ai pas encore essayé, mais le fichier log (un_fichier_de_log) sera créer automatiquement ou il faut le créer d'abord??

    merci.

  12. #12
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Citation Envoyé par picall Voir le message
    donc si la redirection existe déjà je dois la trouver dans le fichier rcS si non je la rajoute après le lancement de mon application. c'est ca??
    Oui tout à fait.

    Citation Envoyé par picall Voir le message
    une autre question avant de faire les tes

    est-il possible de faire ca ./mon_programme 2>&1 /dev/ttyS0 pour diriger les erreur vers ttys0??
    Hum je te conseille pas trop de faire ça. Préfère un fichier de log sur une partition qui n'est pas volatile.

    Citation Envoyé par picall Voir le message
    pour la redirection sur fichier j'ai pas encore essayé, mais le fichier log (un_fichier_de_log) sera créer automatiquement ou il faut le créer d'abord?
    Le fichier sera créé automatiquement, si tu as les droits d'écriture.

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 32
    Points : 20
    Points
    20
    Par défaut re
    Bonjour Aquanum et merci encore pour ton suivi.

    donc grosse déception, j'ai essayé la redirection sur fichier comme ci dessous : dans le rcS a la fin mon programme est lancer en arrière plan ==> ./mon programme& et j'ai rajouté les redirections suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     ./mon_programme& 2>&1 ./mon_log.txt  // na rien donner même pas créer le fichier!!
    ./mon_programme&  2>&1 |tee mon_log.txt // ca créer le fichier mais il est vide!!!
    et pour être sure que ca renvois quelque chose, j'ai simulé des erreurs mais sans succès!!

    c'est quoi qui va pas je comprend pas??

    dans le grub la console est configurer sur /dev/null // est-ce que ça joue ca??

  14. #14
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Pfff, au temps pour moi ... J'ai été trop vite en te répondant, je t'ai dit n'importe quoi. Pour rediriger stdout et stderr tu dois utiliser &>
    2>&1 c'est pour regiriger stderr vers stdout.

    Tu dois donc utiliser cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./mon_programme &> ./mon_log.txt &
    le & à la fin va transformer ton application en daemon. Il faut bien le placer à la fin, sinon ton fichier texte recevra les sorties stdout/stderr de l'action de daemonisation. Vois-tu la subtilité ?

  15. #15
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 32
    Points : 20
    Points
    20
    Par défaut re
    euhhh non je vois pas la subtilité

    donc peux tu me confirmer stp, les modification a faire

    dans le rcS aujourd'hui c'est renseigner de la sorte je dois le transformer en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./mon_programme& > ./mon_log.txt &
    en plus après les dernier test j'ai perdu la connections SSH. alors il faut que je retablisse la connections pour faire les test, t'aurais pas une idée d'ou ca peut venir??

  16. #16
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Citation Envoyé par picall Voir le message
    je dois le transformer en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./mon_programme& > ./mon_log.txt &
    Non, en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./mon_programme &> ./mon_log.txt &
    Bon c'est très subtil. Mais le & collé à la fin de ton appli c'est pour transformer ton appli en daemon. le &> est là pour rediriger les sorties standard. Donc tu dois déplacer le & à la fin de ta commande. Pour que "le tout" soit daemonisé. Si tu mets le & trop tôt, tu vas daemoniser ton appli et pas tes logs.

    Pour mieux expliquer, quand tu mets un & après une commande, celle-ci part en daemon et tu reçois un code de statut. Ce code est renvoyé sur la sortie standard. Donc si tu places ta daemonisation trop tôt, tu ne vas loger que ce code de statut. D'où la subtilité de placement du &

    Citation Envoyé par picall Voir le message
    en plus après les dernier test j'ai perdu la connections SSH. alors il faut que je retablisse la connections pour faire les test, t'aurais pas une idée d'ou ca peut venir??
    Je ne saurais pas te dire là :/

  17. #17
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 32
    Points : 20
    Points
    20
    Par défaut re
    salut Aquanum

    donc la j'ai rétabli la connections c'est bon et j'ai procédé au modif que tu m'as recommandé
    et cool ca marche bien donc j'ai des message dans le fichier log, par contre

    j'ai trouver aucun message qui vient de ./MON_programme (dans mon programme en c, j'ai plusieurs situation de programme, où si ce marche pas je fais un printf ) et comme la je travail en Standalone donc il devrais y avoir plein de message comme quoi il arrive pas a initialiser une communication, un module ... ou autre!!!mais la je les trouves pas cela !!!

    par-contre j'ai un message d'erreur qui reviens sans arrêt, il n'affiche que ce message en non stop "ERROR bad file descriptor" je sais pas d'ou ca vient (si c'est une init module mal faite je comprend ..)

    si cette erreur te parle, ou deja rencontrée!! je prend tte suggestion.

    en attendant merci et bonne soirée.

  18. #18
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Il va falloir regarder le code source pour aller plus loin si tu as des erreurs bizarres qui ne sont pas liées à ton application elle même.

    Après, tu as peut-être des appels system() dans ton code qui font appel à d'autres programmes. Le seul moyen de débuger est de mettre des traces avec printf. Et si tu ne trouves toujours pas, utiliser un débugueur comme gdb/gdbserver

    Citation Envoyé par picall Voir le message
    par-contre j'ai un message d'erreur qui reviens sans arrêt, il n'affiche que ce message en non stop "ERROR bad file descriptor" je sais pas d'ou ca vient (si c'est une init module mal faite je comprend ..)
    C'est typiquement une erreur sur la lecture/écriture d'un fichier. C'est l'erreur qui est retournée généralement lorsque tu manipules un mauvais file descriptor.

  19. #19
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 32
    Points : 20
    Points
    20
    Par défaut resolu
    Bonjour Aquanum

    donc oui je confirme ton dernier message ... la redirection marche tres bien et c'est mon code source que ne genere pas de message, pour confirmer j'ai mis un printf au tout debut de mon programme pour etre sure, et ca l'a bien rediriger,je suis super content, cava me permetre de debuger avec ce fichier log. merci pour ta precieuse aide.

    cela di dons un de tes mail tu m'a parlé de gdb pour debugger...! aurais tu plus d'explicatications, ou un tutoriel pour le debugage en en temps reel (sur la machine en fonctionnement), si oui je souhaiterai bien les avoir.

    enore merci et bon weekend.

  20. #20
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Je n'ai pas trop de tuto sous la main pour gdb et gdbserver.
    L'idée est de faire tourner gdbserver sur la cible (donc ton système embarqué) et d'exécuter le debug depuis ton ordinateur host (ton PC de dev).

    Après si tu n'as jamais réellement fait de dev linux, je crains que la tâche soit assez complexe, gdb est un outil en ligne de commande. Ça ne va pas être simple. Mais en cherchant bien das Google, il doit y avoir des tutos.

    gdb est utile cependant dans certains cas, si le printf n'est pas suffisant. Tu n'as peut-être pas forcément besoin de gdb, qui te permet de debuger vraiment instruction par instruction.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Saturation Processeur
    Par kiisan dans le forum Général Python
    Réponses: 2
    Dernier message: 23/02/2014, 16h59
  2. [SP-2010] problème consommation de service WCF
    Par roubi dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 15/02/2012, 12h07
  3. Problème charge processeur
    Par scary dans le forum Général Java
    Réponses: 4
    Dernier message: 22/11/2009, 21h45
  4. Limitation / consommation processeur
    Par Persons dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 12/10/2009, 20h25
  5. Problème de détection de nouveau processeur
    Par zakfa dans le forum Composants
    Réponses: 12
    Dernier message: 24/01/2005, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo