GNU/Linux >> Znalost Linux >  >> Linux

Počítá GNU/Linux procesy a vlákna dohromady, když omezím jejich počet?

The nproc limit, o kterém mluvíte, platí pro spustitelné entity , omezuje tedy vlákna (a tedy procesy, které je obsahují) . Každý proces má alespoň jedno vlákno (primární vlákno), takže lze spouštět pouze vlákna . Přísně vzato, procesy nejsou „běžitelné“.

Tato odpověď vysvětluje skutečný rozdíl mezi vlákny a procesy v Linuxu.

Testoval jsem kód v daya odpověď uživatele (přidáno také sleep(1); v kódu vlákna) a na rozdíl od něj (?!) jsem narazil na limit, když bylo vytvořeno příliš mnoho vláken:pthread_create() vracel EAGAIN . pthread_create(3) dokumentace o této chybě říká následující:

ZNOVU

Nedostatek zdrojů k vytvoření dalšího vlákna nebo systémový limit počtu vláken. Druhý případ se může vyskytnout dvěma způsoby:bylo dosaženo limitu měkkých zdrojů RLIMIT_NPROC (nastavení viasetrlimit(2)), který omezuje počet procesů pro skutečné ID uživatele; nebo bylo dosaženo celosystémového limitu jádra na počet vláken /proc/sys/kernel/threads-max.

Nevidím žádnou zmínku o konkrétním limit na vlákno ve zdrojovém kódu jádra, vidím pouze RLIMIT_NPROC tam, což je limit, který můžete změnit v limits.conf (s nproc ), ulimit -u nebo setrlimit(2) .


Linux
  1. Maximální počet vláken na proces v Linuxu?

  2. Limit linky Shebang v bash a linuxovém jádře

  3. Kdy použít pthread_exit() a kdy pthread_join() v Linuxu?

  1. Jak zvýšit limit počtu otevřených souborů v Linuxu

  2. Najděte nejběžnější procesy podle nejvyššího využití paměti a CPU v Linuxu

  3. Od kdy se v Linuxu začíná počítat doba provozuschopnosti?

  1. Linux – Jak linuxové jádro naplánuje CPU, mezi procesy/vlákny v uživatelském prostoru a úkoly/úlohy jádra?

  2. Co jsou linuxové procesy, vlákna, lehké procesy a stav procesu

  3. Linux:Najděte a zabijte zombie procesy