Pourquoi la consommation de mémoire se développe lors de l'utilisation de plusieurs threads sous Linux? (C++)

Programme:

J'ai créé un C++ programme de calcul pour le volume élevé de données, qui peut être exécuté sur 1 ou plusieurs threads. (via le fichier de config)

L'environnement du programme est le suivant: C++, OpenMp, Redhat-x64, malloc/free

Résultats sur Linux:

  • Lorsque je l'exécute sur 1 fil, processus de taille 177 MO.
  • Lorsque je l'exécute sur 2 threads, processus de taille est de 317 MO.
  • Lorsque je l'exécute sur 4 threads, processus de taille est de 600 MO.

Résultats sur Windows:

  • Processus de taille reste la même quel que soit le nombre de threads utilisés, 110MB.

Question:

Pourquoi la consommation de mémoire se développe lors de l'utilisation de plusieurs threads sous Linux?

La mémoire, le virtuel, le résident, partagé?
Il est procédé de la taille, désolé.
Chaque thread possède sa propre pile?
Je viens d'utiliser c++ standard malloc allocateur, je ne sais pas comment linux fonctionne après.
Est-ce réel, ou êtes-vous en quelque sorte de voir la même mémoire pour chaque thread, comme ils partagent tous un espace de mémoire, donc en multipliant le réel exigence de mémoire par le nombre de threads? Quels sont vous aide à déterminer la taille?

OriginalL'auteur Axel Borja | 2012-08-10