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

Threads & Processus C++ Discussion :

performance d'un pthread dans un pthread ?


Sujet :

Threads & Processus C++

  1. #1
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    D�veloppeur Temps r�el Embarqu�
    Inscrit en
    Janvier 2011
    Messages
    3 149
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur Temps r�el Embarqu�

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par d�faut performance d'un pthread dans un pthread ?
    Salutatations � toutes et � tous,

    je cherchais depuis un moment un souci de performance qu'on decouvrait sur une application qui utilise plusieurs pthreads.
    On avait des temps de cr�ation de contexte incompr�hensible.

    Je viens d'en trouver la raison mais sans pour autant pouvoir l'expliquer.
    Je m'explique...

    La cr�ation de 10 000 pthreads depuis un process met 570ms sur ma machine (x86, linux ubuntu 12.04).
    Maintenant cr�ons un pthread et lan�ons les 10 000 pthreads � partir de ce thread !
    Et c'est l� que cela devient int�ressant... On saute � 3300ms environ de temps de cr�ation !

    Quelqu'un aurait-il une piste � explorer pour expliquer ce ph�nom�ne ?

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    D�veloppeur Temps r�el Embarqu�
    Inscrit en
    Janvier 2011
    Messages
    3 149
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur Temps r�el Embarqu�

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par d�faut
    M�me bench lanc� sur une architecture ARM et une POWERPC pour obtenir des r�sultats allant dans l'autre sens...
    Les deux cas lanc� avec un linux non patch� temps r�el (pour rester comparable avec ubuntu).

    Du coup mes r�sultats x86 sont fortement remis en question...
    Le tout est d'arriver � les expliquer maintenant.
    Il y aurait une librarie pthread par architecture on pourrait mettre �a en devant mais l�...

    Va falloir que je mette en place des tests sur syst�me RT pour �tre s�r d'avoir des valeurs qui restent fixes.

  3. #3
    Membre Expert

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par d�faut
    Citation Envoy� par transgohan Voir le message
    M�me bench lanc� sur une architecture ARM et une POWERPC pour obtenir des r�sultats allant dans l'autre sens...
    Les deux cas lanc� avec un linux non patch� temps r�el (pour rester comparable avec ubuntu).

    Du coup mes r�sultats x86 sont fortement remis en question...
    Le tout est d'arriver � les expliquer maintenant.
    Il y aurait une librarie pthread par architecture on pourrait mettre �a en devant mais l�...

    Va falloir que je mette en place des tests sur syst�me RT pour �tre s�r d'avoir des valeurs qui restent fixes.
    Ce n'est pas d�pendant de la librairie, mais de l'appel syst�me sous-jacent, et du travail que doit faire l'OS pour s'y retrouver. Selon la configuration du kernel, du scheduler utilis�, et de plein d'autres param�tres, �a peut �tre long ou moins long.

    Si tu veux mieux comprendre ce qui se passe, c'est dans les sources du kernel qu'il faut aller voir, du cot� de kernel/fork.c si ma m�morie est bonne (clone(), qui est l'appel syst�me qui est utilis� pour cr�er un thread, appelle la fonction do_fork() avec les flags qui vont bien pour ne pas cr�er un nouveau processus). Le code est en apparence simple � suivre, mais il y a quelques subtilit�s ici et l�.

    Ensuite, si tu veux vraiment comprendre ce qui ralentit la cr�ation des thread, il ne faut surtout pas h�siter � utiliser l'outil perf livr� avec le kernel - il te permettra entre autre de faire un profiling en live du kernel.
    [FAQ des forums][FAQ D�veloppement 2D, 3D et Jeux][Si vous ne savez pas ou vous en �tes...]
    Essayez d'�crire clairement (c'est � dire avec des mots fran�ais complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Caf�. C'est d�pass� tout �a.
    Et si vous �tes sages, vous aurez peut �tre vous aussi la chance de passer � la t�l�. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  4. #4
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    D�veloppeur Temps r�el Embarqu�
    Inscrit en
    Janvier 2011
    Messages
    3 149
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur Temps r�el Embarqu�

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par d�faut
    Bon r�sultat de l'affaire... J'ai fini par tout faire tourner sur un OS temps r�el.
    Et l� les temps sont �gaux.
    Note : cependant que si on d�sactive le swap on fait exploser les r�sultats.

    Comme je n'ai que des cibles finales temps r�el je vais pas me casser la t�te sur mon pauvre ubuntu... D'autant plus que c'est pas optimal pour les tests j'en conviens vu que j'ai plein de trucs qui tournent en parall�le.

    Mais c'est quand m�me marrant de voir ce genre de r�sultats...
    Car c'est pas un r�sultat de charge temporaire, j'ai tourn� le script dans tous les sens et lanc� le bench une petite vingtaine de fois et j'obtiens toujours les m�mes �carts.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 14
    Dernier message: 17/05/2011, 11h49
  2. [AC-2003] Performances entre requ�tes �crites dans le code ou � partir de l'interface
    Par lio33 dans le forum Requ�tes et SQL.
    R�ponses: 2
    Dernier message: 05/10/2009, 16h24
  3. ajout d'un pthread dans autotool
    Par ikuzar dans le forum D�buter
    R�ponses: 1
    Dernier message: 14/08/2009, 03h32
  4. [Performances] S�parer les tables dans plusieurs bases ?
    Par Seb33300 dans le forum SQL Proc�dural
    R�ponses: 1
    Dernier message: 29/09/2007, 19h55

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