GNU/Linux >> Linux Esercitazione >  >> Linux

GNU/Linux conta insieme processi e thread quando ne limito il numero?

Il nproc il limite di cui parli si applica alle entità eseguibili , sta quindi limitando i thread (e quindi i processi che li contengono) . Ogni processo ha almeno un thread (il thread primario), in modo che solo i thread possano essere eseguiti . A rigor di termini, i processi non sono "eseguibili".

Questa risposta spiega la vera differenza tra thread e processi in Linux.

Ho testato il codice in daya risposta di (aggiunto anche sleep(1); nel codice del thread) e diversamente da lui (?!), ho raggiunto il limite quando sono stati creati troppi thread:pthread_create() stava restituendo EAGAIN . Il pthread_create(3) la documentazione dice quanto segue su questo errore:

ANCORA

Risorse insufficienti per creare un altro thread o è stato rilevato un limite imposto dal sistema sul numero di thread. Quest'ultimo caso può verificarsi in due modi:è stato raggiunto il limite di risorse software RLIMIT_NPROC (impostato viasetrlimit(2)), che limita il numero di processi per un ID utente reale; o è stato raggiunto il limite di sistema del kernel sul numero di thread, /proc/sys/kernel/threads-max.

Non vedo alcuna menzione di uno specifico limite per thread nel sorgente del kernel, vedo solo RLIMIT_NPROC lì, che è il limite che puoi modificare in limits.conf (con nproc ), ulimit -u o setrlimit(2) .


Linux
  1. Come aumentare il limite del numero di file aperti in Linux

  2. Numero massimo di thread per processo in Linux?

  3. Su Linux, da quando inizia a contare il tempo di attività?

  4. In che modo Linux distingue i thread dai processi figlio?

  5. Limita la larghezza di banda e la latenza in entrata e in uscita in Linux

Comando file Linux:cosa fa e come usarlo

Comando Wc in Linux (conta il numero di righe, parole e caratteri)

Cosa significa null in Linux e nell'informatica

Fkill:cerca e uccidi in modo interattivo i processi su Linux

Linux:trova il numero di file in una directory e sottodirectory

Come installare e utilizzare GNU Emacs su distribuzioni Linux