GNU/Linux >> Belajar Linux >  >> Linux

Apakah GNU/Linux menghitung proses dan utas secara bersamaan saat saya membatasi jumlahnya?

nproc batas yang Anda bicarakan berlaku untuk entitas yang dapat dijalankan , dengan demikian membatasi utas (dan karenanya, proses yang memuatnya) . Setiap proses memiliki setidaknya satu utas (utas utama), sehingga hanya utas yang dapat dijalankan . Sebenarnya, proses tidak "dapat dijalankan".

Jawaban ini menjelaskan perbedaan nyata antara utas dan proses di Linux.

Saya menguji kode di daya jawaban (juga menambahkan sleep(1); dalam kode utas) dan tidak seperti dia (?!), saya mencapai batas ketika terlalu banyak utas dibuat:pthread_create() mengembalikan EAGAIN . pthread_create(3) dokumentasi mengatakan hal berikut tentang kesalahan ini:

LAGI

Sumber daya tidak mencukupi untuk membuat utas lain, atau batas yang diberlakukan sistem pada jumlah utas ditemukan. Kasus terakhir dapat terjadi dalam dua cara:batas sumber daya lunak RLIMIT_NPROC (set viasetrlimit(2)), yang membatasi jumlah proses untuk ID pengguna nyata, tercapai; atau batas seluruh sistem kernel pada jumlah utas, /proc/sys/kernel/threads-max, telah tercapai.

Saya tidak melihat penyebutan spesifik batas per-utas di sumber kernel, saya hanya melihat RLIMIT_NPROC di sana, yang merupakan batas yang dapat Anda ubah di limits.conf (dengan nproc ), ulimit -u atau setrlimit(2) .


Linux
  1. Cara Meningkatkan Jumlah Batas File Terbuka di Linux

  2. Linux – Bagaimana Kernel Linux Menjadwalkan Cpu, Antara Proses/Utas Ruang Pengguna dan Tugas/Pekerjaan Kernel?

  3. Jumlah maksimum utas per proses di Linux?

  1. Batas garis Shebang di bash dan kernel linux

  2. Kapan menggunakan pthread_exit() dan kapan menggunakan pthread_join() di Linux?

  3. Apakah utas diimplementasikan sebagai proses di Linux?

  1. Temukan Proses Berjalan Teratas berdasarkan Memori dan Penggunaan CPU Tertinggi di Linux

  2. Bagaimana cara Linux membedakan utas dari proses anak?

  3. Batasi bandwidth dan latensi masuk dan keluar di linux