Obtenha e defina a contagem máxima de threads no Linux

Obtenha e defina a contagem máxima de threads no Linux
“O termo“ processo ”refere -se a um programa atualmente em execução, enquanto“ thread ”refere -se a um processo leve. Quando vários threads são executados em um programa compartilhando a mesma memória, é chamado de multithreading. Em um processo multithread, você pode executar vários tópicos simultaneamente porque o objetivo é aumentar o desempenho.

Há um limite para o número de threads no Linux para um desempenho efetivo. Definir o parâmetro Threads-Max Kernel garante que o número de roscas por processo permaneça nesse limite ou abaixo dele. Se você também deseja saber como definir a contagem de threads máximos, leia nosso guia. Neste guia, explicaremos como obter e definir a contagem máxima de threads no Linux.”

Obtenha e defina a contagem máxima de threads no Linux

Vamos dividir esta seção em duas partes; O primeiro é obter a contagem de threads, e o outro é definir a contagem máxima de threads.

Obtenha a contagem máxima de threads

Você pode controlar o número máximo de threads usando o Parâmetro do kernel de thread-max. “Arquivo/proc/sys/kernel/threads-max” define este parâmetro.

Usando o comando "CAT", você pode visualizar este arquivo.

gato/proc/sys/kernel/threads-max

Aqui, a saída 45444 mostra o máximo de 45444 threads que o kernel pode executar.

Você também pode procurar o valor dos threads-max com o comando "sysctl".

sudo sysctl -a | Grep Threads-Max

Além disso, “VM.max_map_count ” e "núcleo.pid_max”Especifique dois limites adicionais. Esses limites também impedem a criação de novos fios durante a alta carga.

Especifica o número máximo em que os PIDs envolverão.

gato/proc/sys/kernel/pid_max

Aqui está o valor máximo do kernel.O valor pid_max é 4194304. Isso significa que o kernel pode executar um máximo de 4194304 processos simultaneamente.

Um processo só pode ter um certo número de áreas de memória virtual (VMAs) sob o “Max_map_count” parâmetro.

gato/proc/sys/vm/max_map_count

As regiões mapeadas de memória de um processo são expressas na saída acima.

Um tópico e um processo funcionam da mesma forma no kernel Linux. Portanto, o valor que limita o número de processos também limita indiretamente o número de threads. Por esse motivo, kernel.pid_max deve ser maior que o número total de processos e threads juntos.

Muitos tópicos consomem mais memória para trabalhar no servidor. “VM.max_map_count ” Limita o número de threads e a memória virtual para aqueles que precisam dessa memória para definir sua pilha privada.

Outro limite para sistemas Systemd é o “CGROUP PIDS.max ” parâmetro, que padrão é 12.288. Às vezes, esse limite de recursos padrão pode ser muito restritivo ou não o suficiente.

Como alternativa, pode ser útil fazer ajustes específicos em algumas das configurações do SystemD TaskSmax. O “UserTasksmax” O parâmetro substitui o limite padrão na seção [Login] de/etc/Systemd/Logind.conf.

grep -i "^userTasksmax"/etc/systemd/logind.conf

Assim como o Systemd aplica os limites de encadeamento para programas que são executados no shell de login, ele faz o mesmo.

Defina a contagem máxima de roscas

Até agora, analisamos a contagem máxima de roscas de diferentes parâmetros e agora veremos como definir esses threads máximos. Várias opções estão disponíveis para definir o número máximo de threads por processo. O número do thread é definido aqui para um processo específico.

Usando o seguinte comando, você pode definir temporariamente o parâmetro Threads-Max Kernel no tempo de execução.

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

Além disso, você pode definir o parâmetro Threads-Max Kernel permanentemente, adicionando kernel.threads-max = para /etc /sysctl.arquivo conf.

sudo /bin /su -c "sysctl -w kernel.threads-max = 170000 >> /etc /sysctl.confis "

Agora definimos o parâmetro pid_max como 200000. Isso significa que o kernel pode executar até 200.000 processos simultaneamente.

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

Você também especifica o número máximo de VMAs ou áreas de memória virtual que um processo pode possuir com o parâmetro "max_map_count".

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

Para todos os usuários, o "UserTasksmax" define o limite do thread e especifica a configuração do TaskSmax nos sistemas Systemd.

sed -i "s/^userTasksmax/#userTasksmax/"/etc/systemd/system.conf
eco "UserTasksmax = 60000" >>/etc/Systemd/System.conf
grep -i "userTasksmax"/etc/systemd/logind.conf

Os parâmetros do sistema também limitam o número de roscas por processo, possivelmente antes da memória e do sistema operacional se tornam fatores limitantes. Aumentar o número de roscas também é possível reduzindo o tamanho da pilha por fio.

Empacotando

Neste guia, explicamos um processo multithreading ou multi-thread. Em seguida, contamos o limite máximo de encadeamento de cada processo e aprendemos sobre a importância do número máximo de threads. Depois de obter todas essas informações, podemos definir o valor máximo dos threads.

Você pode definir o valor máximo dos threads de várias maneiras, que explicamos neste guia. Ao ver e entender isso, você também pode definir os valores máximos de seus threads no Linux.