Combien de threads un seul processus peut-il gérer sous Linux (RHEL-5)? Une fois que les threads sont créés, combien de threads chaque thread peut-il obtenir?En ce qui concerne les threads sous Linux
Répondre
La taille de la pile de threads est configurable à l'aide de la méthode pthread_attr_setstack. La quantité de thread est limitée par les ressources que vous avez, plus de 2K threads fonctionnent dans une application que je connais.
Nombre maximum de fils: Maximum number of threads per process in Linux?
taille de la pile:
Même si pthread_attr_setstacksize() et pthread_attr_setstackaddr() sont maintenant fournis, nous recommandons toujours que vous ne les utilisez pas, sauf si vous avez vraiment fort raisons de le faire. La stratégie d'allocation de pile par défaut pour LinuxThreads est presque optimale: les piles commencent petit (4k) et augmentent automatiquement à la demande jusqu'à une limite assez importante (2M). De plus, il n'y a pas de moyen portable d'estimer les besoins en pile d'un thread, donc le réglage de la taille de la pile rend votre programme moins fiable et non portable.
Il n'y a pas un nombre maximal de threads par processus.
Il existe cependant une limite du nombre total de threads actifs. Cette valeur peut être récupérée en tapant:
cat /proc/sys/kernel/threads-max
vous pouvez également modifier cette valeur:
echo 99999 > /proc/sys/kernel/threads-max
Hope this helps.
Si vous êtes sur une machine 32 bits, les piles de threads consommeront l'espace d'adressage éventuellement, selon la taille, probablement à < 10.000 threads.
Les threads 10k sont certainement réalisables et certaines personnes exécutent des serveurs de production avec autant de ressources, mais vous voulez vraiment être sûr que c'est la meilleure façon de faire ce que vous faites.
Si vous envisagez d'avoir 10k threads, vous avez probablement des machines 64 bits de toute façon, et beaucoup, beaucoup de RAM.
La taille de la pile de threads par défaut sur x86 est de 4 Ko/octets. Avec une configuration de noyau fractionnée 4G/4G, vous pouvez théoriquement démarrer 2 ** 20 threads (plus de 1 million). Lorsque NPTL a été annoncé pour la première fois, les auteurs ont exécuté ce test et ils ont atteint un maximum de 900000. Vous pouvez facilement démarrer 100 000 threads (environ 2 secondes) et le système sera toujours utilisable (contrairement à LinuxThreads, où 100 000 threads plus de 15 minutes et arrête le système). –
Je travaillais sur l'hypothèse que la plupart des applications auraient besoin de beaucoup plus de 4k pile. – MarkR
C'est incorrect, Jörg. Sur i686, la glibc réservera 10M par pile d'espace d'adressage pour chaque thread. Évidemment, aucune de ces mémoires n'est allouée, mais elle consomme un gros morceau de l'espace de mappage disponible et vous l'épuiserez après seulement quelques centaines de threads. Le démarrage de 100 000 threads nécessite l'ajustement du paramètre de taille de pile. Je suppose que vous pensiez uniquement au noyau, pas à l'implémentation glibc de pthreads. –
- 1. doute en ce qui concerne les fichiers exécutables sous Linux
- 2. En ce qui concerne Terracotta et Servlets/Shared Threads
- 3. En ce qui concerne les macros
- 4. En ce qui concerne les macros
- 5. En ce qui concerne les extstrings
- 6. En ce qui concerne BigDecimal
- 7. En ce qui concerne BigDecimal
- 8. En ce qui concerne ADO.Net
- 9. En ce qui concerne java.math.BigInteger
- 10. En ce qui concerne ADO.Net
- 11. En ce qui concerne stdio.h
- 12. En ce qui concerne gridview
- 13. Plus exact équivalent pour la commande "time" sous Linux, en ce qui concerne sys- et usertime?
- 14. En ce qui concerne ORA 21000
- 15. En ce qui concerne interrompre la communication
- 16. en ce qui concerne l'édition d'image
- 17. En ce qui concerne script shell Unix
- 18. En ce qui concerne jdbc Realm
- 19. En ce qui concerne le double dataype
- 20. En ce qui concerne android Développement
- 21. En ce qui concerne le téléchargement ePub?
- 22. En ce qui concerne la substitution sql
- 23. En ce qui concerne Froyo Android 2.2
- 24. aide nécessaire en ce qui concerne Zend_Form
- 25. En ce qui concerne PHP CURL
- 26. En ce qui concerne la liste déroulante
- 27. En ce qui concerne Scroll Voir
- 28. En ce qui concerne UNIX Shell Script
- 29. En ce qui concerne grep dans solaris
- 30. en ce qui concerne iTunes & iPhone simulateur
LinuxThreads n'est livré avec aucune distribution Linux depuis presque 7 ans maintenant. En particulier, RHEL n'a pas livré LinuxThreads depuis RHEL3. –
@ Jörg. D'accord. Je n'ai pas pu trouver de meilleurs docs. avez vous un lien? –