Obtenez et définissez le nombre de threads max dans Linux

Obtenez et définissez le nombre de threads max dans Linux
«Le terme« processus »fait référence à un programme en cours d'exécution, tandis que« thread »fait référence à un processus léger. Lorsque plusieurs threads s'exécutent dans un programme en partageant la même mémoire, il s'appelle Multithreading. Dans un processus multithread, vous pouvez exécuter plusieurs threads simultanément parce que le but est de stimuler les performances.

Il y a une limite au nombre de threads dans Linux pour des performances efficaces. La définition du paramètre du noyau Threads-Max garantit que le nombre de threads par processus reste à cette limite ou en dessous. Si vous souhaitez également savoir comment définir le nombre de threads max, veuillez lire notre guide. Dans ce guide, nous expliquerons comment obtenir et définir le nombre de threads max dans Linux."

Obtenez et définissez le nombre de threads max dans Linux

Divitons cette section en deux parties; La première consiste à obtenir le nombre de threads, et l'autre est de définir le nombre de threads max.

Obtenez le nombre maximal de threads

Vous pouvez contrôler le nombre maximum de threads à l'aide du paramètre de noyau thread-max. «File / Proc / Sys / Kernel / Threads-Max» définit ce paramètre.

À l'aide de la commande «Cat», vous pouvez afficher ce fichier.

chat / proc / sys / noyau / threads-max

Ici, la sortie 45444 montre le maximum 45444 threads que le noyau peut exécuter.

Vous pouvez également rechercher la valeur des threads-max avec la commande «sysctl».

sudo sysctl -a | Filetages Grep-max

En outre, «VM.max_map_count " et "noyau.pid_max»Spécifiez deux limites supplémentaires. Ces limites empêchent également la création de nouveaux fils pendant une charge élevée.

Il spécifie le nombre maximum auquel les Pids s'enrouleront.

CAT / PROC / SYS / KERNEL / PID_MAX

Voici la valeur maximale du noyau.La valeur PID_MAX est 4194304. Cela signifie que le noyau peut exécuter un maximum de 4194304 processus simultanément.

Un processus ne peut avoir qu'un certain nombre de zones de mémoire virtuelle (VMA) "Max_map_count" paramètre.

chat / proc / sys / vm / max_map_count

Les régions à mémoire de mémoire d'un processus sont exprimées dans la sortie ci-dessus.

Un thread et un processus fonctionnent de la même manière dans le noyau Linux. Par conséquent, la valeur limitant le nombre de processus limite également indirectement le nombre de threads. Pour cette raison, le noyau.PID_MAX doit être supérieur au nombre total de processus et de threads ensemble.

De nombreux threads consomment plus de mémoire pour travailler sur le serveur. «VM.max_map_count " Limite le nombre de threads et de mémoire virtuelle pour ceux qui ont besoin de cette mémoire pour définir leur pile privée.

Une autre limite des systèmes SystemD est le «Pids de CGROUP.max " paramètre, qui est par défaut à 12 288. Parfois, cette limite de ressources par défaut peut être trop restrictive ou pas suffisante.

Alternativement, il peut être utile de faire des ajustements spécifiques à certains des paramètres TasksMax de SystemD. Le "Userasksmax" Le paramètre remplace la limite par défaut dans la section [Connexion] de / etc / systemd / logind.confli.

grep -i "^ usertasksmax" / etc / systemd / logind.confli

Tout comme Systemd applique des limites de threads pour les programmes à partir du shell de connexion, il fait de même.

Définir le nombre de threads maximum

Jusqu'à présent, nous avons examiné le nombre maximal de threads de différents paramètres et verrons maintenant comment définir ces threads maximaux. Diverses options sont disponibles pour définir le nombre maximum de threads par processus. Le numéro de thread est défini ici pour un processus spécifique.

En utilisant la commande suivante, vous pouvez temporairement définir le paramètre du noyau Threads-Max à l'exécution.

sudo / bin / su -c "echo 150000> / proc / sys / kernel / threads-max"

Vous pouvez également définir le paramètre du noyau Threads-Max en ajoutant du noyau.threads-max = au / etc / sysctl.fichier de confr.

sudo / bin / su -c "noyau sysctl -w.Threads-max = 170000 >> / etc / sysctl.conf

Maintenant, nous définissons le paramètre PID_MAX à 200000. Cela signifie que le noyau peut exécuter jusqu'à 200 000 processus simultanément.

sudo / bin / su -c "echo 200000> / proc / sys / kernel / pid_max"

Vous spécifiez également le nombre maximum de VMA ou de zones de mémoire virtuelle qu'un processus peut posséder avec le paramètre "max_map_count".

sudo / bin / su -c "echo 600000> / proc / sys / vm / max_map_count"

Pour tous les utilisateurs, «Usertasksmax» définit la limite de thread et spécifie le paramètre Tasksmax sur les systèmes SystemD.

sed -i "s / ^ userSksmax / # userasksmax /" / etc / systemd / système.confli
Echo "userSksmax = 60000" >> / etc / systemd / System.confli
grep -i "userasksmax" / etc / systemd / logind.confli

Les paramètres du système limitent également le nombre de threads par processus, peut-être avant la mémoire et le système d'exploitation devient des facteurs limitants. L'augmentation du nombre de threads est également possible en réduisant la taille de la pile par fil.

Emballer

Dans ce guide, nous avons expliqué un processus multithreading ou multi-thread. Ensuite, nous comptons la limite maximale de threads de chaque processus et découvrons l'importance du nombre maximum de threads. Après avoir pris toutes ces informations, nous pouvons définir la valeur maximale des threads.

Vous pouvez définir la valeur maximale des threads de plusieurs manières, ce que nous avons expliqué dans ce guide. En voyant et en le comprenant, vous pouvez également définir les valeurs maximales de vos threads dans Linux.