GNU/Linux >> Znalost Linux >  >> Linux

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

Linux nemá samostatná vlákna na limit procesu, pouze limit celkového počtu procesů v systému (vlákna jsou v podstatě jen procesy se sdíleným adresním prostorem v Linuxu), který můžete zobrazit takto:

cat /proc/sys/kernel/threads-max

Výchozí je počet stránek paměti/4. Toto můžete zvýšit takto:

echo 100000 > /proc/sys/kernel/threads-max

Existuje také omezení počtu procesů (a tedy vláken), které může vytvořit jeden uživatel, viz ulimit/getrlimit podrobnosti o těchto limitech.


To je NESPRÁVNÉ tvrdit, že LINUX nemá samostatná vlákna na limit procesu.

Linux nepřímo implementuje maximální počet vláken na proces!!

number of threads = total virtual memory / (stack size*1024*1024)

Počet vláken na proces lze tedy zvýšit zvýšením celkové virtuální paměti nebo zmenšením velikosti zásobníku. Přílišné snížení velikosti zásobníku však může vést k selhání kódu v důsledku přetečení zásobníku, zatímco maximální virtuální paměť se rovná odkládací paměti.

Zkontrolujte svůj počítač:

Celková virtuální paměť:ulimit -v (výchozí nastavení je neomezené, takže pro zvětšení musíte zvětšit odkládací paměť)

Celková velikost zásobníku:ulimit -s (výchozí je 8 Mb)

Příkaz ke zvýšení těchto hodnot:

ulimit -s newvalue

ulimit -v newvalue

*Nahraďte novou hodnotu hodnotou, kterou chcete zadat jako limit.

Odkazy:

http://dustycodes.wordpress.com/2012/02/09/increating-number-of-threads-per-process/


V praxi je limit obvykle určen prostorem zásobníku. Pokud každé vlákno získá zásobník o velikosti 1 MB (nepamatuji si, zda je to výchozí nastavení v Linuxu), pak vám 32bitovému systému dojde po 3000 vláknech adresní prostor (za předpokladu, že poslední gb je rezervován pro jádro) .

Pokud však použijete více než několik desítek vláken, s největší pravděpodobností zažijete hrozný výkon. Dříve nebo později dostanete příliš mnoho režie přepínání kontextu, příliš mnoho režie v plánovači a tak dále. (Vytvoření velkého počtu vláken znamená o něco víc, než že spotřebuje spoustu paměti. Ale spousta vláken se skutečnou prací to vás zpomalí, protože bojují o dostupný čas CPU)

Co děláte, když je tento limit dokonce relevantní?


Linux
  1. Linux – Omezit využití paměti pro jeden linuxový proces?

  2. Načíst využití CPU a paměti jedním procesem v Linuxu?

  3. Omezení využití procesní paměti/CPU v linuxu

  1. Maximální počet souborů/adresářů na Linuxu?

  2. Jak zvýšit maximální počet vláken JVM (Linux 64bit)

  3. Jsou vlákna jádra Linuxu skutečně procesy jádra?

  1. Omezte využití paměti pro jeden proces Linuxu

  2. Linuxová neaktivní paměť

  3. jaké zabijáky procesů má linux?