Ottieni e imposta il conteggio dei thread max in Linux

Ottieni e imposta il conteggio dei thread max in Linux
"Il termine" processo "si riferisce a un programma attualmente in esecuzione, mentre" thread "si riferisce a un processo leggero. Quando si eseguono più thread all'interno di un programma condividendo la stessa memoria, si chiama multithreading. In un processo multithread, è possibile eseguire più thread contemporaneamente perché lo scopo è aumentare le prestazioni.

C'è un limite al numero di thread in Linux per prestazioni efficaci. L'impostazione del parametro del kernel threads-max garantisce che il numero di thread per processo rimanga a quel limite o al di sotto di esso. Se vuoi anche sapere come impostare il conteggio dei thread massimo, leggi la nostra guida. In questa guida, spiegheremo come ottenere e impostare il conteggio dei thread max in Linux."

Ottieni e imposta il conteggio dei thread max in Linux

Dividiamo questa sezione in due parti; Il primo è quello di ottenere il conteggio dei thread e l'altro è impostare il conteggio massimo dei thread.

Ottieni il conteggio dei thread massimo

È possibile controllare il numero massimo di thread usando il parametro del kernel thread-max. "File/proc/sys/kernel/thread-max" definisce questo parametro.

Usando il comando "Cat", è possibile visualizzare questo file.

Cat/Proc/sys/kernel/thread-max

Qui, l'output 45444 mostra i thread massimi 45444 che il kernel può eseguire.

Puoi anche cercare il valore thread-max con il comando "sysctl".

sudo sysctl -a | Grep Threads-Max

Inoltre, “VM.max_map_count " E “Kernel.pid_max"Specificare due limiti aggiuntivi. Questi limiti impediscono anche la creazione di nuovi thread durante il carico elevato.

Specifica il numero massimo in cui i PID si avvolgeranno.

Cat/Proc/sys/kernel/pid_max

Ecco il valore massimo del kernel.Il valore PID_MAX è 4194304. Significa che il kernel può eseguire un massimo di 4194304 processi contemporaneamente.

Un processo può avere solo un certo numero di aree di memoria virtuale (VMA) sotto "Max_map_count" parametro.

Cat/Proc/sys/vm/max_map_count

Le regioni mappate da memoria di un processo sono espresse nell'output sopra.

Un thread e un processo funzionano in modo simile nel kernel Linux. Pertanto, il valore che limita il numero di processi limita anche indirettamente il numero di thread. Per questo motivo, kernel.pid_max deve essere maggiore del numero totale di processi e thread insieme.

Molti thread consumano più memoria per lavorare sul server. “VM.max_map_count " Limita il numero di thread e la memoria virtuale per coloro che necessitano di questa memoria per impostare il loro stack privato.

Un altro limite ai sistemi di sistema è il “Pids cgroup.max " Parametro, che predefinito è 12.288. A volte questo limite di risorse predefinito può essere troppo restrittivo o non abbastanza.

In alternativa, può essere utile apportare modifiche specifiche ad alcune delle impostazioni dei compiti di SystemD. IL "UserTasksmax" Il parametro sovrascrive il limite predefinito nella sezione [Login] di/etc/systemd/logind.conf.

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

Proprio come SystemD applica i limiti dei thread per i programmi eseguiti dalla shell di accesso, fa lo stesso.

Imposta il numero massimo di thread

Finora abbiamo esaminato il numero massimo di thread di parametri diversi e ora vedremo come impostare questi thread massimi. Sono disponibili varie opzioni per l'impostazione del numero massimo di thread per processo. Il numero di thread è impostato qui per un processo specifico.

Utilizzando il seguente comando, è possibile impostare temporaneamente il parametro del kernel thread-max in fase di esecuzione.

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

Inoltre, è possibile impostare in modo permanente il parametro del kernel thread-max aggiungendo il kernel.threads-max = a /etc /sysctl.Conf File.

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

Ora impostiamo il parametro PID_MAX su 200000. Ciò significa che il kernel può eseguire fino a 200.000 processi contemporaneamente.

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

Si specifica anche il numero massimo di VMA o aree di memoria virtuale che un processo può possedere con il parametro "Max_map_Count".

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

Per tutti gli utenti, "UserTasksMax" imposta il limite del thread e specifica l'impostazione di DASKSMAX sui sistemi SystemD.

sed -i "s/^userTsksmax/#userTsksmax/"/etc/systemd/system.conf
Echo "userTasksmax = 60000" >>/etc/systemd/system.conf
grep -i "usertasksmax"/etc/systemd/logind.conf

I parametri di sistema limitano anche il numero di thread per processo, possibilmente prima della memoria e il sistema operativo diventano fattori limitanti. Aumentare il numero di thread è anche possibile riducendo la dimensione dello stack per thread.

Avvolgendo

In questa guida, abbiamo spiegato un processo multithreading o multi-thread. Successivamente, contiamo il limite massimo del thread di ogni processo e apprendiamo l'importanza del numero massimo di thread. Dopo aver preso tutte queste informazioni, possiamo impostare il valore massimo dei thread.

Puoi impostare il valore massimo dei thread in diversi modi, che abbiamo spiegato in questa guida. Vedendo e comprendendolo, puoi anche impostare i valori massimi dei tuoi thread in Linux.