282 votes

Nombre maximum de threads par processus sous Linux ?

Quel est le nombre maximum de threads qui peuvent être créés par un processus sous Linux ?

Comment (si possible) cette valeur peut-elle être modifiée ?

10voto

Albert Kong Points 41

Limite du nombre de threads : $ cat /proc/sys/kernel/threads-max

Comment il est calculé : max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE) ; et : la taille des pages x86_64 (PAGE_SIZE) est de 4K ; Comme toutes les autres architectures, x86_64 possède une pile noyau pour chaque thread actif. Ces piles de threads sont de taille THREAD_SIZE (2*PAGE_SIZE) ;

pour mempages : cat /proc/zoneinfo | grep spanned | awk '{totalpages=totalpages+$2} END {print totalpages}' ;

donc en fait le nombre n'est pas lié à la limitation de la taille de la pile mémoire des threads (ulimit -s). ps : la limitation de la pile mémoire des threads est de 10M dans ma VM rhel, et pour 1.5G de mémoire, cette VM ne peut se permettre que 150 threads ?

4voto

twk Points 6300

Cela ne devrait pas avoir d'importance. Vous obtiendrez de bien meilleures performances en concevant votre algorithme de manière à utiliser un nombre fixe de threads (par exemple, 4 ou 8 si vous avez 4 ou 8 processeurs). Vous pouvez le faire avec des files d'attente, des entrées-sorties asynchrones, ou quelque chose comme libevent.

3voto

wefeqfw Points 29

Utilisez nbio entrées/sorties non bloquantes ou autre, si vous avez besoin de plus de threads pour effectuer les appels d'E/S qui se bloquent

2voto

purpletech Points 349

Cela dépend de votre système, il suffit d'écrire un programme d'exemple [ en créant des processus dans une boucle ] et de vérifier en utilisant ps axo pid,ppid,rss,vsz,nlwp,cmd. Quand il ne peut plus créer de threads, vérifiez le nombre de nlwp [ nlwp est le nombre de threads ] et voilà, vous avez votre réponse infaillible au lieu de passer par des livres.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X