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 :

Comparaison processus et thread


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 198
    Par défaut Comparaison processus et thread
    Bonjour à tous,

    La question que je vous soumets est valable pour les systèmes *Unix, Linux, MacOS et Windows. Elle est très générale

    Y-a-t-il une différence de performance entre un processus et un thread ? Quelles sont les contraintes pour les meilleures performances ?

    Je dois faire une application parallélisée où la performance est critique. De plus les threads/processus doivent communiquer en permanence de grandes quantités de données.

    Question subsidiaire, peut-on connaître la consommation CPU d'un thread ?

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    A mon avis, un thread est plus performant qu'un processus.

    D'abord, c'est une structure plus light pour le noyau, le temps de création et d'instanciation doit être rapide. Ceci n'a peut être pas trop d'importance si les thread ou les process sont créés au début.

    Ensuite, le temps de swap d'un thread à l'autre doit être plus rapide que entre 2 process car justement comme l'espace mémoire est partagé, il n'y a pas besoin de le changer.

    Tu peux echanger des donnés entre thread avec des mécanismes plus simple inter thread comme les section critiques qui n'existent pas en inter process.

    Le problème d'un thread, c'est que si l'un d'eux par en cacahuètes et corromp la mémoire, il risque d'impacter les autres.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Citation Envoyé par DSGSLA Voir le message
    Y-a-t-il une différence de performance entre un processus et un thread ?
    La question n'a pas vraiment lieu d'être car le processus est simplement l'unité qui représente l'ensemble des threads du programme (plus d'autres informations).

    Donc la comparaison des performances entre processus/threads est contradictoire, puisque les threads du programme sont une composante du processus. Les performances du processus sont le reflet des performances des threads sous-jacents.

  4. #4
    Membre émérite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Par défaut
    Je pense que la question (par rapport aux performances) était du genre :
    « Si on a X tâches à effectuer en parallèle, quelle différence de performances y aura-t-il entre utiliser X threads et utiliser X processus ? »

  5. #5
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Certainement.

    Et ram-0000 a très bien répondu à cette question.

    J'ai pris la question de DSGSLA sur les performances processus/threads Brut de Brut.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 198
    Par défaut
    Citation Envoyé par Steph_ng8 Voir le message
    Je pense que la question (par rapport aux performances) était du genre :
    « Si on a X tâches à effectuer en parallèle, quelle différence de performances y aura-t-il entre utiliser X threads et utiliser X processus ? »
    Effectivement c'est à ça que je pensais.
    Merci pour vos réponse.

    Cependant peut-on évaluer la consommation CPU d'un thread, ou son ratio par rapport au processus père ? J'ai besoin d'évaluer les goulets d'étranglement dans le flux.

  7. #7
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Sous windows seven tu as le moniteur de ressouces, mais au mieux tu peux voir la gestion sur chaque processeur.

    Je pense, mais sans en être certain, qu'il y a une API dans le dernier windows SDK pour gérer cela. Sinon il existe des outils : http://msdn.microsoft.com/en-us/libr...=VS.60%29.aspx

    Pour les autres OS, je ne sais pas.

    Sinon le cas classique, c'est de mesurer les performances à l'intérieur des threads dans le code.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 198
    Par défaut
    Sinon le cas classique, c'est de mesurer les performances à l'intérieur des threads dans le code.
    Je ne vois pas comment on fait cela.

    Une autre question m'est venue à l'esprit sur le sujet : sur un machine multiprocesseur/multicœur les différents threads d'un même processus s'exécutent-ils sur le même cœur que le processus père ou l'OS les répartit sur les cœurs selon les ressources disponibles ? Cela altère-t-il les communications inter-thread ?

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

Discussions similaires

  1. Lister les processus léger (Thread)
    Par joffrey575 dans le forum Windows
    Réponses: 4
    Dernier message: 12/06/2015, 16h32
  2. Probleme avec des SHM entre processus et thread.
    Par Baradhur dans le forum Threads & Processus
    Réponses: 8
    Dernier message: 18/12/2010, 16h09
  3. Processus ou thread
    Par slig_80 dans le forum C
    Réponses: 6
    Dernier message: 16/12/2010, 16h37
  4. Echange processus A <-> threads B
    Par oodini dans le forum Windows
    Réponses: 15
    Dernier message: 25/04/2008, 11h44
  5. [SIGNAL] threads et processus
    Par beLz dans le forum POSIX
    Réponses: 14
    Dernier message: 21/12/2004, 01h28

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