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

Linux Discussion :

Etranges performances


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Par défaut Etranges performances
    Bonjours, je developpe actuellement un moteur 3D, et j'ai un etrange probleme de performances :

    il m'arrive de constater le comportement suivant :
    environ une fois par seconde, mon frame rate descend a 10 FPS puis remonte a 2000 FPS, provoquant une sacade.

    j'ai profilé mon code, et lorsque ce comportement a lieu, ce n'est pas toujours la meme fonction qui prends plus de temps que d'habitude.

    ce comportement a lieu en general lorsque mon CPU est a plus de 10% d'utilisation (hors moteur 3D) mais il m'est arrivé de l'observer alors qu'aucune autres applications gourmande n'etait lancé (lire : X+Xfce+Xterm)

    je n'arrive pas a comprendre d'ou cela peut venir, il semblerait que ca ne soit pas due a mon code d'apres le profilage et les sessions de debug, pourtant mon ancien moteur 3D n'as jamais ce genre de comportement.

    quelqu'un aurait il une idée ?

  2. #2
    Membre chevronné
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Par défaut
    c'est une faute de frappe le 2000FPS ou tu tente réellement de les atteindre ?
    si tu tante de les atteindre c'est absoluement normal que de temps à autre le materiel ne suive pas et se fasse un stop pour vider les buffers et autres actions nécessaires à s'en remettre...

    deplus jamais je n'ai vu un tel FPS etre necessaire même pour les films hautes vitesses ne rafraichissent pas chaque image plus de 3 à 4 fois donc un maximum de 132FPS pour un film projeté en 33images/secondes..

    A forciori si tu utilises un frame par image alors c'est totallement inutile car le cerveau humain ne peut probablement pas distinguer tous ces rafraichissements dejà que je suis pas sur qu'il suive le rithme des images...

    peut etre que tu devrais faire un control de temps de pause ou diffuser moins.

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    C'est difficile de donner un diagnostic avec juste ces informations.

    Il y a beaucoup de facteur qui peuvent rentrer en jeu:

    - Le swap est-il utilisé?

    - Quelle est l'utilisation des disques-durs?

    - Quels autres programmes tournent en même temps...

    -> Le plus simple dans un premier temps est de minimiser les fonctionnalités de ton moteur 3D, voir si la version "squelette" a le même comportement et ajouter un à un les fonctionnalités...

    Jc

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Par défaut
    les 2000 fps ne sont pas une faute de frappe, c'est ce que m'affiche mon compteur de fps (1/interval) je sais bien que ya un probleme la dedans

    le moteur ne touche pas au disque dur lors du fonctionnement normal.

    les autres programmes qui tournent en meme temps peuvent etre tres variable, en general pour me mettre en situation je lance mplayer et un film, mais des fois je n'observe aucun ralentissement.

    ce comportement a survecu a plusieurs reinstallation totale du systeme.

    j'ai minimiser les fonctionnalitées et je comportement a toujours lieu tant que j'affiche des objets 3D, j'ai étudié mes fonctions d'affichages, et aucune d'elles ne changera de comportement avec le temps.

    ce que je ne comprends pas c'est que, alors que le code executé est exactement le meme (pas d'interaction utilisateur), les fps varient autant.

  5. #5
    Membre chevronné
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Par défaut
    donc l'hypotese la plus probable c'est que le materiel ne suis pas un tel rythme...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Par défaut
    les 2000 fps ne sont affichées que sur un laps de temps tres court suivant immediatement celui ou les fps sont passée a 10, puis les fps reviennent a 160 (ce qui est normal) pendant environ une seconde puis on recommence un cycle.

    edit: j'ai beau commenter la fonction qui prends trop de temps d'apres mon profilage, il ya toujours une autre fonction qui prends le relai (un coup c'est une fonction d'affichage en 2D, un coup une en 3D, un coup la fonctions d'échange des tampons d'images...)

  7. #7
    Membre chevronné
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Par défaut
    ça me rassure...c'est peut etre une erreur de meusure tout simplement qui affiche 2000...

    mais le fait que ce soit totalement aléatoire sur n'importe quelle fonction dénote un problème materiel de toute évidence sinon tu verai ce phéno tjrs au même moment ou dmoins lors de l'execution de la même fonction à chaque fois

  8. #8
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par mawww
    les 2000 fps ne sont affichées que sur un laps de temps tres court suivant immediatement celui ou les fps sont passée a 10, puis les fps reviennent a 160 (ce qui est normal) pendant environ une seconde puis on recommence un cycle.

    edit: j'ai beau commenter la fonction qui prends trop de temps d'apres mon profilage, il ya toujours une autre fonction qui prends le relai (un coup c'est une fonction d'affichage en 2D, un coup une en 3D, un coup la fonctions d'échange des tampons d'images...)
    Est-il possible que ton calcul de fps soit foireux?
    Où est-ce que tu mets ce calcul, comment est-ce que tu le fais?

    Es-tu sûr qu'il est fiable?

    Jc

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Par défaut
    j'ai pensé au calcul de fps foireux, mais il me semble correcte et ce pour deux raisons :

    1. le code du timer est reputé correct, testé avec 2 timers differents (clock_gettime et gettimeofday).

    2. j'ai hooké glXSwapBuffers grace a LD_PRELOAD pour afficher dans la console a chaque frame les fps (1/interval entre deux appels) et je recupere bien la meme chose que en affichage normal.

    par ailleurs, j'ai testé en utilisant un Renderable (mon interface pour une fenetre / un PBUFFER) X11/GLX et SDL, et le resultat est le meme, la boucle de messages semble hors de cause.

    je suis en train d'essayer de voir si j'ai le meme comportement sur une autre machine sous windows, pour le moment rien, peut etre faut il que je trouve une bonne occupation CPU pour en etre sur.

    edit: cela pourrait il venir de memory leaks ?

Discussions similaires

  1. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 16h39
  2. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 17h18
  3. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 11h37
  4. performance entre 3DS, ase, asc ...
    Par amaury pouly dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/03/2003, 12h41
  5. Probleme pour les insertion au format etranger
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 19/03/2003, 11h55

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