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, isso é chamado de multithreading. Em um processo multithread, você pode executar vários threads simultaneamente porque o objetivo é aumentar o desempenho.
Há um limite para o número de threads no Linux para desempenho efetivo. Definir o parâmetro de kernel threads-max garante que o número de threads por processo permaneça nesse limite ou abaixo dele. Se você também quiser saber como definir a contagem máxima de threads, 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; a primeira é obter a contagem de threads e a outra é 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 de kernel thread-max. “arquivo /proc/sys/kernel/threads-max” define este parâmetro.
Usando o comando “cat ”, você pode visualizar este arquivo.
Aqui, a saída 45444 mostra o máximo de 45444 threads que o kernel pode executar.
Você também pode procurar o valor máximo de threads com o comando “sysctl”.
Além disso, “vm.max_map_count ” e “kernel.pid_max ” especificam dois limites adicionais. Esses limites também impedem a criação de novos encadeamentos durante carga alta.
Ele especifica o número máximo no qual os PIDs serão agrupados.
Aqui está o valor máximo do valor kernel.pid_max é 4194304. Isso significa que o kernel pode executar no máximo 4194304 processos simultaneamente.
Um processo pode ter apenas um certo número de áreas de memória virtual (VMAs) sob o parâmetro “max_map_count ”.
As regiões mapeadas em memória de um processo são expressas na saída acima.
Um thread e um processo funcionam de maneira semelhante no kernel do Linux. Portanto, o valor que limita o número de processos também limita indiretamente o número de threads. Por esta razão, kernel.pid_max deve ser maior que o número total de processos e threads juntos.
Muitos threads consomem mais memória para trabalhar no servidor. “vm.max_map_count ” limita o número de threads e memória virtual para aqueles que precisam dessa memória para definir sua pilha privada.
Outro limite em sistemas systemd é o parâmetro “cgroup pids.max ” , cujo padrão é 12.288. Às vezes, esse limite de recurso padrão pode ser muito restritivo ou insuficiente.
Como alternativa, pode ser útil fazer ajustes específicos em algumas das configurações tasksMax do systemd. O parâmetro “UserTasksMax ” substitui o limite padrão na seção [login] de /etc/systemd/logind.conf.
Assim como o systemd impõe limites de encadeamento para programas executados a partir do shell de login, ele faz o mesmo.
Definir contagem máxima de threads
Até agora, examinamos a contagem máxima de threads 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 encadeamento é definido aqui para um processo específico.
Usando o comando a seguir, você pode definir temporariamente o parâmetro de kernel threads-max em tempo de execução.
Além disso, você pode definir o parâmetro de kernel threads-max permanentemente adicionando kernel.threads-max=
Agora definimos o parâmetro pid_max para 200000. Isso significa que o kernel pode executar até 200.000 processos simultaneamente.
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”.
Para todos os usuários, “UserTasksMax ” define o limite de encadeamento e especifica a configuração de TasksMax nos sistemas systemd.
echo "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 threads por processo, possivelmente antes que a memória e o sistema operacional se tornem fatores limitantes. Aumentar o número de threads também é possível reduzindo o tamanho da pilha por thread.
Empacotando
Neste guia, explicamos um processo multithreading ou multithread. Em seguida, contamos o limite máximo de threads de cada processo e aprendemos sobre a importância do número máximo de threads. Depois de pegar todas essas informações, podemos definir o valor máximo de threads.
Você pode definir o valor máximo de 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.