Forum Linux.général Processus lent avec processeur en idle

Posté par  .
Étiquettes : aucune
0
13
mai
2008
Bonjour,

j'ai une application qui est lente. Mais lorsque j'essaye de savoir où est le goulot d'étranglement et je ne comprends pas.
Si je fait un top , le processeur ne fait pas grand chose (97% en idle) pas d'activité disque ni réseau. Mais qu'est-ce qui fait ?
C'est ma première interrogation.
j'ai essayer lantencytop sur un 2.6.25 mais le résultat est pas évident a comprendre et ne donne pas beaucoup d'information. lantencytop sera sûrement un bon outil mais pour l'instant c'est pas trop utilisable.
Comment savoir ce que fait mon ordi ? avez vous une idée ?

Deuxième problème qui est lié:
J'ai un programme (dont malheureusement j'ai pas le code source).
la première fois que je le lance, il est très lent : 30secondes pour un calcul (mais la charge du processeur est très faible) ensuite quand je relance la même requête, c'est du style 0,3 seconde et la la charge du processeur est forte mais courte (cas normal donc).

C'est donc un appel a des expériences similaire et a des pistes pour savoir comment accélérer tout cela!
merci
  • # pour le 2ème cas

    Posté par  . Évalué à 2.

    C'est facile; en général c'est le cache système.
    Lors de la 2ème exécution tu n'as pas besoin de relire les données, les bibliothèque l'exécutable.
    Pour améliorer, y a pas grand chose à faire, le temps d'accès à une donnée sur un disque dur est lent.
    Tu peux opter pour une mémoire flash, mais ça coût cher.


    Le premier cas peut dépendre de pleins de choses ( lecture de données, synchro mal foutue, temporisation abusive, allocation mémoires, attente... )
    Sans accès au code source c'est difficile de se prononcer; je sais qu'il existe des outils de profiling d'application permettant de pointer où il y a une perte de temps.

    Autre question est ce que le top affiche aussi 97% en idle lorsque ton application est active ? ( pas quand c'est le top sélectionné )

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

  • # Probleme réseau?

    Posté par  . Évalué à 3.

    Ton programme essaie peut-être de faire une résolution de nom (nslookup) ou similaire et attend pendant un certain temps la réponse avant de continuer?

    Peut-être qu'en regardant les appels systeme par strace ou en étudiant comment tourne ton programme avec gdb, il y a gprof aussi qui peut-être utile..
  • # strace...

    Posté par  . Évalué à 1.

    Tu peux essayer strace, il peut t'aider à comprendre le soucis (si il est dans un appel système)...
    • [^] # Re: strace...

      Posté par  (site web personnel) . Évalué à 2.

      Je confirme, strace montrera le type d'appel où il reste bloqué, et à quel moment... Ça doit être forcément un appel système vu que le CPU n'est pas utilisé. Ensuite pour trouver qui fait cet appel, peut être que sysprof pourrait être utile.
      http://live.gnome.org/Sysprof
  • # prelink

    Posté par  (site web personnel) . Évalué à 0.

    tu peux toujours essayer de le prelinker.

    ça accèlère le démarrage mais bon comme c'est non maintenu ca marche que sur 32bits.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.